NodeJS : 정말 대단한 자바스크립트 엔진
NodeJS는 어떤 언어일까?
위키백과에는 "확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어로 자바스크립트를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다."라고 적혀있다.
말그대로 서버사이드단 언어이며 기본은 Javascript 문법을 그대로 사용한다.
특히 ES6의 지원으로 향후 꾸준한 지원을 계속 할 것으로 보인다.
JSP, PHP(APM)등의 언어가 멀티 스레드 구조임과 비교하면 싱글 스레드로 어떻게 웹을 구성하느냐 라는 의문을 가질 수 있다.
하지만 빠르게 처리하고 빠르게 끝낸다라는 기본과 시간이 많이 걸리는 부분은 따로 ThreadPool에 할당하여 관리하니 큰 걱정은 안해도 된다. 멀티 스레드 풀은 libeio의 라이브러리를 사용하며 이벤트 루프는 libev를 사용한다.
어떻게 보면 웹서버란 제너럴한 언어에서 소켓, 그것도 웹소켓의 기능을 지원하는 확장팩이라고 봐도 된다.
C, C++에 80포트, 443 포트를 열고 웹서버 기능을 하는 소켓을 구현하면 그것 또한 웹소켓이 되는것이다.
그런 기능을 Node Standard Library가 하며 기본 바탕은 Javascript를 이용하는 것 뿐이다.
개발하면 할수록 자바스크립트란 참 대단한 언어라는 생각이 든다.
내가 생각하는 장점은 다음과 같다.
1. 지속적으로 언어가 업데이트/보완된다.
2. 형식 지향에서 벗어나 let, var 등의 선언 키워드를 사용한다.
3. 수많은 라이브러리를 쉽게 사용할 수 있다.
이런 장점을 가진 웹서버라니, 그리고 마침 클라이언트에서도 자바스크립트를 애용한다니, 이거야 말로 정말 완벽한(미친) 조합이다.
Asynchronous 하다는 것은 장점이지만 동시에 개발자들에게 불편을 안겨준다.
특히 웹서버를 javascript로 사용한다는 것은 기본적으로 대부분이 Async라서 Callback-hell에 빠지는 경우가 많았다.
하지만 지금은 시대가 달라졌다.
새로이 나온 Promise와, async/await를 통해 비동기를 상황에 맞게 동기처럼, 그 장점은 살리되 개발에 수고를 덜어보자.
'Development > ETC' 카테고리의 다른 글
[정보처리기사]업무 프로세스 총정리 (0) | 2017.06.23 |
---|---|
투자와 투기, 그리고 Betfair(벳페어) (0) | 2017.05.15 |
[C#]대신증권 싸이보스 플러스 API 이용하기 (0) | 2016.12.15 |
네이버 웹툰 다운로드 프로그램[소스포함] (1) | 2016.10.19 |