본문 바로가기
Coding Study/FrontEnd Study Note

Node.js

by bell_one 2026. 3. 24.

Node.js는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임입니다. 단순히 "서버"라고 부르기보다는, 자바스크립트를 브라우저 밖(서버, 데스크톱 앱 등)에서도 실행할 수 있게 해주는 환경이라고 이해하는 것이 정확합니다.

 

1. 싱글 스레드 이벤트 루프 (Single-threaded Event Loop)

Node.js는 자바스크립트 코드를 실행하는 스레드가 단 하나입니다. 하지만 여러 요청을 동시에 처리할 수 있는 비결은 바로 '이벤트 루프'에 있습니다.

  • 작동 방식: 무거운 작업(파일 읽기, 네트워크 요청 등)이 들어오면 이를 직접 처리하지 않고 시스템(OS)이나 워커 스레드에 맡긴 뒤, 자신은 다음 코드를 계속 실행합니다. 작업이 완료되면 이벤트 루프가 이를 감지하여 콜백 함수를 실행합니다.

2. 비동기 및 비차단 I/O (Non-blocking I/O)

Node.js의 가장 강력한 특징입니다. 특정 작업이 완료될 때까지 프로그램이 멈춰서 기다리지 않습니다.

  • 비유 (레스토랑 모델):
    • 차단(Blocking): 점원이 손님의 주문을 받고 음식이 나올 때까지 주방 앞에서 가만히 서서 기다리는 방식입니다. 뒤의 손님들은 줄을 서서 대기해야 합니다.
    • 비차단(Non-blocking): 점원이 주문을 주방에 전달한 즉시 다음 손님의 주문을 받으러 갑니다. 음식이 나오면 벨이 울리고(이벤트 발생), 그때 음식을 서빙합니다.

3. V8 엔진 기반의 빠른 속도

구글 크롬에서 사용하는 V8 엔진을 사용하여 자바스크립트 코드를 매우 빠르게 기계어로 컴파일합니다. 덕분에 자바스크립트임에도 불구하고 서버 사이드에서 충분히 빠른 성능을 보여줍니다.


4. 이벤트 기반 (Event-driven)

Node.js는 특정 동작(클릭, 요청, 파일 열기 등)이 발생했을 때 미리 지정해둔 작업을 수행하는 방식으로 돌아갑니다.

  • EventEmitter: 특정 이벤트를 감시하고 있다가 이벤트가 발생하면 등록된 함수를 실행하는 구조가 기본입니다.

5. NPM (Node Package Manager)

전 세계 자바스크립트 개발자들이 만든 방대한 라이브러리 생태계를 그대로 활용할 수 있습니다.

특징 설명
재사용성 수만 개의 패키지를 설치하여 기능을 바로 구현 가능
생산성 인증, DB 연결, 유효성 검사 등 공통 기능을 직접 짤 필요가 없음

💡 요약: 어떤 곳에 유리한가요?

Node.js는 가벼운 요청이 많이 발생하는 실시간 서비스에 최적화되어 있습니다.

  • 실시간 채팅 (Socket.io)
  • 스트리밍 서비스
  • 단일 페이지 애플리케이션 (SPA)
  • 마이크로서비스 아키텍처 (MSA)

반면, 복잡한 수치 계산이나 이미지 처리처럼 CPU 점유율이 높은 작업에는 싱글 스레드의 한계 때문에 적합하지 않을 수 있습니다.

'Coding Study > FrontEnd Study Note' 카테고리의 다른 글

이터러블 프로토콜  (0) 2026.03.31
XSS 공격과 프론트엔드  (0) 2026.03.31
멀티 프로세스와 멀티 스레드  (0) 2026.03.24
HTTP/2  (0) 2026.03.24
커링(Currying)  (0) 2026.03.24