• Javascript 기반의 서버 플랫폼

  • 구글 크롬의 자바스크립트 엔진 (V8 Engine) 에 기반

  • 싱글 쓰레드의 non-blocking I/O 비동기 방식

  • Node는 웹서버가 아님 -> HTTP 서버를 직접 작성해야함 (일부 라이브러리의 도움을 받으면서).

    Node.js 는 그저 코드를 실행할 수 있는 하나의 방법에 불과한 그저 JavasScript 런타임일 뿐.


 

특징

1. non-broking & 비동기 I/O 처리 / 이벤트 위주
한개의 쓰레드로 여러개의 일을 빠르게 요청 후 처리함. , Node.js 기반 서버는 API가 실행되었을때, 데이터를 반환할때까지 기다리지 않고 다음 API 를 실행. 그리고 이전에 실행했던 API가 결과값을 반환할 시, NodeJS의 이벤트 알림 메커니즘을 통해 결과값을 받아옴  —> 작업량에 상관없이 시스템 리소스의 변화가 없다 : 시스템 리소스 부하가 적다

 

2. 빠른 속도

구글 크롬의 V8 자바스크립트 엔진을 사용하여 빠른 코드 실행을 제공

 

3. 단일 쓰레드 / 뛰어난 확장성

Node.js는 이벤트 루프와 함께 단일 쓰레드 모델을 사용. 이벤트 메커니즘은 서버가 멈추지않고 반응하도록 해주어 서버의 확장성을 키워줌. (일반적인 웹서버(Apache)는 요청을 처리하기 위하여 제한된 쓰레드를 생성) Node.js 는 쓰레드를 한개만 사용하고 Apache 같은 웹서버보다 훨씬 많은 요청을 처리할 수 있다.

 

 

동작방식

  1. 이벤트루프가 돌면서 이벤트 요청을 받음
  2. Thread Pool 에서 요청 처리
  3. 요청 처리 완료 되면 callBack함수 실행

단점

  1. 단일 쓰레드이므로 큰 작업이 들어오면 부하가 크게 걸린다.
  2. 적절한 코드 작성 못할시에는 가독성이 크게 떨어진다.
  3. 에러가 발생하면 프로세스 자체가 죽어버린다.

+ Recent posts