본문 바로가기

Programming/Node.js

Node.js 란? - 특징 및 장단점

 

 

 

1. Node.js란?

: Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임으로 웹 브라우저 환경이 아닌 곳, 외부에서 자바스크립트를 사용하여 연산할 수 있게 해주는 플랫폼이다.

※런타임

: 프로그래밍 언어가 구동되는 환경

 

2. Node.js의 특징

- V8 엔진
: 프로퍼티에 빠르게 접근한다. V8은 객체에 새로운 프로퍼티를 추가할 때 hidden class를 생성하고 hidden class에 프로퍼티의 정적인 위치(offset)를 지정함으로써 실제 데이터가 저장되어 있는 위치에 대한 Pointer를 제공한다.
- Non blocking I/O

: Node.js 라이브러리의 모든 API는 비동기식(Async)이다. Node.js 기반의 서버는 API가 실행되었을 때, 데이터를 반환할 때까지 기다리지 않고 다음 API를 실행한다. 즉, 이전 작업을 완료할 때까지 멈추지 않고 다음 작업을 수행한다. 그렇기 때문에 동시 request가 오더라도 처리가 완료될때까지 기다리지 않아도 되기 때문에 서버 부하가 적다. 

- Event 기반

: 이벤트가 발생하면 해당되는 함수를 수행한다. 발생한 이벤트는 순차적으로 처리되며, 발생한 이벤트가 없다면 대기상태가 된다. 이벤트 처리 순서는 Event Loop가 관리한다.
※ Event Loop
: 싱글 스레드 기반에서 비동기 메시지를 처리한다. 이벤트가 발생하면 해당되는 함수를 Event Loop가 실행시키기 때문에 싱글 스레드로 동시성을 가진 작업 처리가 가능하다.

- 싱글 스레드(Single Thread)
: Node.js의 요청들은 모두 같은 스레드에서 실행된다. 여러 클라이언트로부터 오는 Request를 하나의 스레드에서 받아드리지만 내부적으로는 멀티 스레드로 작업이 된다.

3. Node.js의 장점과 단점
장점
- Node.js의 개발 언어가 JavaScript이기 때문에 프런트엔드 개발자가 비교적 쉽게 백엔드 개발까지 할 수 있으며, 한가지의 언어로 서버와 클라이언트를 개발할 수 있기때문에 높은 개발 생산성을 보여준다.
- V8 엔진에서 실행되기 때문에 JavaScript를 직접 기계어로 컴파일하여 대부분의 것보다 빠르게 만든다. 또한 요청처리 속도와 빠른 응답 시간으로 고성능임을 보여준다.
- socket.io를 이용한 웹 push 구현이 매우 쉽기때문에 실시간 웹 애플리케이션 및 게임에 적합하다.
- 오픈 소스 기술이기 때문에 좋은 도구와 모듈을 공유하는 저장소를 가지고 있다,

단점
- CPU 부하가 큰 작업이나 대용량 파일을 관리하는 작업에는 적합하지 않다.
- JAVA 서버에 비해 안정성이 떨어진다.

'Programming > Node.js' 카테고리의 다른 글

개발환경 셋팅 - Node.js 설치  (0) 2020.12.16