본문 바로가기
Develop/Node.js

Node.js란?

by J0DEV 2021. 8. 12.
반응형

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