node.js란 무엇인가?



Node.js는 확장성 있는 네트워크 어플리케이션 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어로 JavaScript를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 활용하여 높은 처리 성능을 가지고 있는 것이 특징이다. 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 apache 등 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.

스레드 기반 동기 방식 (Blocking I/O)
하나의 스레드가 request를 받으면 모든 처리가 완료될 때까지 기다리다가 완료되면 응답을 보내는 방식. 기존 업무 처리가 완료되기 전에 또 다른 request가 있으면 새로운 스레드가 업무를 처리 함. 동시에 발생하는 request가 많은 경우 많은 스레드가 필요하여 서버에 과부하가 걸릴 수 있음.

단일 스레드 이벤트 루프 기반 비동기 방식 (Non-Blocking I/O)
하나의 쓰레드가 request를 받으면 선행된 작업을 먼저 처리하다가 작업이 끝나면 이벤트를 받아서 응답을 보내는 방식. 동시에 request가 오더라도 처리가 완료될 때까지 기다리지 않아도 되기 때문에 서버에 걸리는 부하가 적다.

node.js의 장점

  • 자바스크립트를 사용하여 서버단 로직을 처리할 수 있다
  • Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능
  • 서버에 걸리는 부하가 적다
  • npm (node package manager)을 이용한 라이브러리와 패키지 설치

node.js의 단점

  • 이벤트 기반 비동기방식이므로 서버단 로직이 복잡한 경우 콜백함수의 늪 (callback hell)에 빠질 수 있다
  • 단일 쓰레드이므로 하나의 작업을 처리하는데 시간이 오래걸리는 웹 서비스에는 어울리지 않음
  • 코드가 수행되어야 에러를 검출할 수 있는데, 에러가 날 경우 프로세스가 중단됨. 반드시 모든 케이스에 대해 소스코드를 검증하는 것이 필요

태그:

카테고리:

업데이트:

댓글남기기