본문 바로가기

Skills/Script

[Node.js] Node.js 란? 01

SMALL

Node.js 란?

2009년에 Ryan Dahl에 의해 개발되었으며 구글의 자바스크립트 엔진(V8 Enging)을 기반으로 만들어진 이벤트 처리 I/O 프레임워크입니다. 웹 서버와 같이 확장성 있는 네트워크 프로그램 제작을 위해 고안되었습니다.



Node.js 공식 사이트에서 제공되는 정보는 아래와 같습니다.


Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다. Node.js는 이벤트 기반, 논 블로킹 I/O 모델을 사용해 가볍고 효율적입니다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리이기도 합니다.
(출처: https://nodejs.org/ko/)


흔히들 Node.js 를 웹 서버로 오해 하기도 합니다. Node.js 자체로는 아파치 웹 서버의 기능을 하지않습니다. 이 기능을 구현하기 위해서는 HTTP 서버를 직접 작성해야 합니다. Node.js는 그저 코드를 실행하는 Javascript 런타임일 뿐입니다.



Node.js 특징

- 비동기 I/O 처리와 이벤트 위주 : Node.js 라이브러리의 모든 API는 비동기식입니다. Node.js 기반 서버는 API가 실행 되었을 때, 데이터를 반환을 기다리지 않고 동시에 API를 실행합니다. 그리고 이전에 실행한 API가 결과값을 반환하면 Node.js의 이벤트 알림 메커니즘을 통해서 결과값을 받아옵니다.

- 빠른속도 : 구글 크롬의 V8 자바스크립트 엔진을 사용하여 빠르게 코드를 실행하고 제공합니다.

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

- 노 버퍼링 : 데이터 버퍼링이 없고, 많은 양의 데이터를 출력합니다.



Node.js 활용 분야

- 입출력이 잦은 어플리케이션

- 데이터 스트리밍 어플리케이션

- 실시간으로 데이터를 다루는 어플리케이션

- Json 기반 어플리케이션

- 싱글 페이지 어플리케이션


Node.js 를 사용하기 부적합한 분야는 CPU 사용률이 높은 어플리케이션에서는 사용을 권장하지 않습니다. Node.js 에 특성상 하나의 작업 자체에 시간이 많이 걸리면, 전체 시스템의 성능에 영향을 주기 때문이다.



단점

자바스크립트와 같은 언어의 특성상 코드가 수행되고 나서 에러가 나는지 확인할 수 있으며, 에러가 날 경우 프로세스 자체가 수행되지 않기에 잘 죽는다.




LIST

'Skills > Script' 카테고리의 다른 글

[Node.js] Node.js 작업환경 설정  (0) 2016.09.07