Node.js란?
Node.js는 자바스크립트를 서버에서도 사용할 수 있도록 하는 서버사이드 스크립트 언어이다.
확장성 있는 네트워크 애플리케이션을 개발하기 위해 사용되는 소프트웨어 플래폼으로, V8엔진 위에서 동작한다.
또한 한정적인 자원을 최대한 효율적으로 사용할 수 있다.
https://nodejs.org/ko/
이와 관련된 Node.js의 특징은 다음과 같다.
Node.js의 특징
V8 엔진
Node.js는 V8 Engine 위에서 동작하는 이벤트 처리 I/O 프레임워크이다.
많은 사람들은 V8엔진을 구글이 망하지 않는한 계속 업그레이드 된다고 믿고 있다. (본인도 그렇다.)
지금도 훌륭한 퍼포먼스를 보이고 있으며, 앞으로도 더욱 발전될 것이다.
Event-Driven
이벤트가 발생하기를 기다리지 않고 발생되었을때만 해당 이벤트에 대한 원하는 작업(or 콜백 함수)을 수행한다.
즉, 이벤트에 따라 프로그램의 실행을 제어하는 구현 방식이다.
Non-Blocking I/O
비동기식 I/O라고 생각하면된다.
일반적인 Blocking I/O (동기식) 에서는 이벤트가 발생하면 해당 이벤트가 끝날때까지, 메모리를 계속 점유하고 있으며, 완료될 때까지 다른 작업을 못하게 된다.
반대로, 이벤트와 관련된 작업이 진행되는 동안 다른 이벤트를 중단시키지 않는 것이 Non-Blocking (비동기) 방식이다.
이의 경우, 이벤트가 시작하자마자 모듈을 변환시켜 다른 작업을 하도록 준비상태가 된다.
그 결과, 여러 이벤트가 발생하더라도, 처음 이벤트가 끝날때까지 기다릴 필요 없이 각각의 이벤트를 처리할 수 있다.
Single-Thread
한정적인 자원으로 최대한의 퍼포먼스를 제공할 수 있다.
nodejs 요청들은 모두 같은 쓰레드에서 실행되며, 모든 요청들을 하나의 쓰레드에서 받아들인다.
내부적으로는 멀티쓰레드로 작업이 된다. (작업을 병렬로 처리할 수 있는 방법을 사용한다.)
'Develop > Node.js' 카테고리의 다른 글
Node.js 개발환경 (0) | 2021.08.12 |
---|---|
Simple Node.js HTTP Server (0) | 2021.08.06 |