1. Node.js 란?
공식 사이트의 정의는 아래와 같습니다.
NodeJS 는 구글 크롬의 자바스크립트 엔진 (V8 Engine) 에 기반해 만들어진 JavaScript 런타임입니다.
Node.js는 이벤트 기반, 논 블로킹 I/O 모델을 사용해 가볍고 효율적입니다.
Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리이기도 합니다.
위의 설명으로 보면 자바스크립트 런타임이라는 표현이 보입니다.
알고 넘어가야 할게 Node는 웹서버가 아닙니다.
노드는 자바스크립트 애플리케이션이 서버로서 기능하기 위한 도구를 제공하므로 서버역할을 수행할 수 있는 것 뿐입니다.
아파치 웹서버처럼 HTML 파일 경로를 지정해주고 서버를 열고 그런 설정이 없습니다.
HTTP 서버를 직접 작성해 서버 역할을 수행할 수 있게 하는 것 뿐입니다.
2. Node.js 장점
- 비동기 I/O 처리 / 이벤트 위주:
Node.js 라이브러리의 모든 API는 비동기식입니다, 멈추지 않는다는거죠 (Non-blocking).
Node.js 기반 서버는 API가 실행되었을때, 데이터를 반환할때까지 기다리지 않고 다음 API 를 실행합니다.
그리고 이전에 실행했던 API가 결과값을 반환할 시, NodeJS의 이벤트 알림 메커니즘을 통해 결과값을 받아옵니다. - 빠른 속도: 구글 크롬의 V8 자바스크립트 엔진을 사용하여 빠른 코드 실행을 제공합니다.
- 단일 쓰레드 / 뛰어난 확장성:
Node.js는 이벤트 루프와 함께 단일 쓰레드 모델을 사용합니다. 이벤트 메커니즘은 서버가 멈추지않고 반응하도록 해주어 서버의 확장성을 키워줍니다. 반면, 일반적인 웹서버는 (Apache) 요청을 처리하기 위하여 제한된 쓰레드를 생성합니다.
Node.js 는 쓰레드를 한개만 사용하고 Apache 같은 웹서버보다 훨씬 많은 요청을 처리할 수 있습니다. - 노 버퍼링: Node.js 어플리케이션엔 데이터 버퍼링이 없고, 데이터를 chunk로 출력합니다.
- 라이센스: Node.js 는 MIT License가 적용되어있습니다.
이 밖에도 다양한 모듈을 제공하는 NPM과 활발한 개발자 커뮤니티도 장점입니다.
3. Node.js 사용
다음과 같은 분야에 Node.js 가 사용된다면 뛰어난 효율성을 달성 할 수 있습니다.
- 입출력이 잦은 어플리케이션
- 데이터 스트리밍 어플리케이션 (예: 유튜브)
- 데이터를 실시간으로 다루는 어플리케이션 (예: 채팅)
- JSON API 기반 어플리케이션
- 싱글페이지 어플리케이션
'Web > Node.js' 카테고리의 다른 글
[Node.js] Express+MongoDB, API 서버 구현하기(1) (0) | 2020.04.01 |
---|---|
[Node.js] Express 구조 이해하기 (0) | 2020.03.15 |
[Node.js] Express 시작하기 (0) | 2020.03.15 |
[Node.js] http모듈 활용 - REST API와 라우팅 (0) | 2020.03.14 |