본문 바로가기
Server

[Node.js] Node.js의 특징

by hunbal 2024. 1. 16.
SMALL

 

Node.js

이벤트 기반(event-driven) 및 비차단식 I/O(non-blocking I/O) 모델을 기반으로 하는 JavaScript 런타임 환경.

효율적이고 확장 가능한 서버 측 애플리케이션을 구축하는 데 도움을 주는 특징 때문에 웹 서버를 구성할 때 요긴하게 쓰일 수 있다.

 

그럼 이벤트 기반과 비차단식 I/O가 무슨 의미일까?

 

 


1.이벤트 기반 (Event-Driven):
Node.js는 이벤트 기반의 비동기 프로그래밍 모델을 채택하고 있다. 즉 어떤 이벤트가 발생하면 콜백 함수를 호출하는 방식을 의미하는 것인데 사용자의 요청, 파일의 읽기/쓰기 완료, 네트워크 요청 등과 같은 작업과 관련이 있다.
이러한 이벤트들이 Node.js 이벤트 루프(event loop)에 의해 감지되고 관리되는 것이다.


2.비차단식 I/O (Non-Blocking I/O):
Node.js는 I/O 작업이 비차단식(non-blocking)으로 수행되도록 설계되었다. 즉 어떤 작업이 완료될 때까지 대기하지 않고 다음 작업을 계속 수행할 수 있음을 의미한다.
I/O 작업, 예를 들면 파일 읽기, 네트워크 요청 등은 비동기적으로 처리되므로 한 작업이 완료될 때까지 다른 작업이 블록되지 않는다.
이를 통해 여러 요청이 동시에 처리되고, 시스템 자원을 효율적으로 활용할 수 있다.

 

 

예를 들어, 티켓을 예매하는 서버를 만든다고 가정하면 여러 이용자가 동시에 티켓을 예매할 경우 많은 티켓을 예매하려는 이용자가 존재한다면 그 작업을 처리하는데 걸리는 시간이 길어지므로 다른 이용자들은 대기 시간이 필요할 것이다. 

 

하지만 Node.js를 활용하면 요청을 동시에 처리하므로 기다릴 필요가 없이 빠른 서비스 지원이 가능해지는 것이다.

(이전에 티켓 예매 프로젝트를 진행해본 경험이 있어서 장점이 훨씬 와닿았다.) 

 


이렇게 두가지 특징으로 Node.js는 높은 동시성을 제공하고, 비교적 적은 하드웨어 자원을 사용하여 많은 연결을 처리할 수 있도록 만든다.

 

웹 서버와 같은 I/O 중심의 애플리케이션에서 특히 유용하며, 확장성과 빠른 응답 시간을 갖추도록 도와주기 때문에 

SNS나 채팅 서비스가 많이 활용되는 추세에 힘입어 Node.js가 자주 사용되고, 많은 주목을 받고 있다고 볼 수 있겠다.

댓글