내가 쓰고 있는 백엔드 기술에 대해 언어, 런타임, 프레임워크 자체에 대해서 조사하고 정리해보고자 한다.
언어 - JavaScript
역사
JavaScript(이하 JS)는 애초에 웹 브라우저를 위해 만들어진 언어다. 1990년대에 주된 브라우저였던 '넷스케이프'(지금은 파이어폭스로 승계되었다고 한다)를 만든 회사인 '넷스케이프 커뮤니케이션즈'에서 정적인 HTML을 동적으로 표현하기 위해 만든 언어이다.
이름이 'Java'Script인 이유는 애초에 만들때부터 만들게될 스크립트 언어가 자바를 구현할 것이고 비슷한 문법을 채용하고자 했다. 더불어 초기에는 LiveScript였으나 Java에서 파생되었다는 점과, 마케팅의 이유로 JavaScript가 되었다고 한다.
ECMAScript
ECMA(정보와 통신 시스템을 위한 국제적 표준화 기구)는 JavaScript에 대한 표준안을 만들었다. 구분 번호는 ECMA-262로 흔히 ES5, ES6 이라고 불리는 것들을 볼 수 있는데, 여기서 정하는 version 정도라고 볼 수 있겠다.
1997년 ES1 부터 2016년의 ES6을 거쳐 현재는 ES9까지 나와있는 상황이다. ES6이 유명한 이유는(기업들 채용공고에서도 많이 볼 수 있다) 전 판에 비해 바뀐점이 많았기 때문이고 현재 대부분의 브라우저에서 지원하고 있다.
특정 브라우저에서 ES6을 지원하지 않을 수 있고, ES5와 혼용이 필요할 땐 Babel.js와 같은 transpiler로 ES6 to ES5 화 시켜서 사용할 수 있다.
참고문건
https://medium.com/@hyunalee419/javascript-%ED%91%9C%EC%A4%80-58799e7a922f
https://poiemaweb.com/js-introduction
https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8
런타임 - NodeJS
NodeJS의 배경
위의 JS에서 말했듯 JavaScript는 본래 client-side(브라우저 상)에서 사용하기 위해 만들어진 스크립트 언어다. 스크립트 언어는 응용프로그램 안에서 돌아가는 언어다. 즉, 원래는 브라우저가 있어야만 실행할 수 있다는 점이다. NodeJS는 'Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임' 이다. 브라우저가 아닌 환경에서도 JS를 실행할 수 있게 만든 런타임으로 server-side에서 주로 활용된다.
NodeJS로 서버를 짜는게 아니라(애초에 언어나 라이브러리의 개념이 아님) JS를 돌리는 툴일 뿐이다.
특징
Non-blocking와 단일 이벤트 루프를 통한 높은 처리 성능을 갖는다. (나중에 좀 더 자세히 알아보고 첨삭하겠다)
내장 http 서버 라이브러리를 갖고 있어, 별도의 apache나 nginx 등 프로그램 없이 동작할 수 있다.
JS 하나의 언어로 전체 웹(front+back)을 구성할 수 있다.
같은 선상(런타임)에 있는 소프트웨어로는 Deno가 있다. (다음에 차이에 대해서 공부해보고 따로 글을 써보겠다)
참고문건
https://hanamon.kr/nodejs-%EA%B0%9C%EB%85%90-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/
https://ko.wikipedia.org/wiki/Node.js
웹 프레임워크 - Express.js
express란?
express의 공식 문서에서는 이렇게 소개하고 있다 'Fast, unopinionated, minimalist web framework for Node.js', 번역하면 '빠르고, 개방적이인 Nodejs를 위한 간결한 웹 프레임워크'이다. 말 그대로 Node.js 환경에서 서버를 구성하는데 필요한 class와 라이브러리들을 모아둔 프레임워크이다. Node.js에서 쓸 수 있는 다양한 프레임워크 중 한 종류라고 보면되고, 가장 표준적이다.
Express 외에는 Nestjs 등의 프레임워크가 있다.(Nestjs도 기본적으로 express를 채택하고, 그 위에 기능을 더 얹은거긴하다)
참고문서
https://wikibook.co.kr/article/what-is-expressjs/
https://ko.wikipedia.org/wiki/Express.js
꽤나 각각의 것들을 혼용해서(대충 의미는 알아듣지만 본래의 의미와 다르게) 쓰는 경우가 많았는데, 글로써보니 확실히 머릿속에서도 정리가 된다. 정리하자면 JS는 웹 브라우저 위에서 돌아가는 스크립트 언어, Nodejs는 그 JS를 웹 브라우저가 아닌곳에서 실행 시킬 수 있게하는 런타임, express는 Nodejs에서 가장 표준적인 웹 프레임워크가 되겠다.
'개발 > NodeJS' 카테고리의 다른 글
[NodeJS] elasticsearch와 Node.js 연결해서 Kibana로 보기 (macOS) (2) | 2022.09.21 |
---|