Develop

Node.js 배경

Y.J Kim 2016. 3. 7. 23:34

[개요]

Node.js는 2009년 라이언 달(Ryan Dahl)이 개발한 서버 개발 환경. 

구글 크롬 브라우저에서 사용하는 V8 자바스크립트 엔진 기반.


[특징]

- 이벤트 기반 비동기 방식.

: 기존 웹 서버는 대부분 스레드 기반 동기 방식으로 네트워크 입출력을 처리한다. 이는 서버로 요청이 올때마다 동기적으로 처리하는 대신 요청마다 스레드를 생성하여 처리하여야 한다. 요청이 많아질수록 스레드는 많이 생성되고, 이것은 메모리 사용량을 폭발적으로 증가시키는 단점이 될 수 있다. 

하지만 Node.js의 경우 이벤트 기반 비동기 방식을 사용하며, 이는 한 개의 스레드를 사용하여 입출력을 처리한다는 것을 의미한다. 요청을 비동기적으로 처리하기 위해 이벤트가 발생하며 메시지 형태로 내부에 던져지게 된다. 내부적인 처리가 완료되면 다시 이벤트가 발생하여 클라이언트로 응답을 한다. 요청이 많아져도 입출력 스레드는 한개만 존재하므로 메모리 사용량과 같은 시스템 리소스 사용량은 크게 증가하지 않는다. 하지만 이 한 개의 스레드에 문제가 생긴다면 전체 프로그램에 문제가 발생할 가능성도 있다.


- 자바스크립트 사용.

- 구글이 만드는 자바스크립트 엔진을 사용(V8).

- C++를 사용하여 기능 확장 가능.

: V8 자바스크립트 엔진이 C++로 개발.