Posts [Web] Node.js 특징 및 장 단점
Post
Cancel

[Web] Node.js 특징 및 장 단점

Node.js란?

Node.js는 구글 크롬의 Javascript 엔진(V8 Engine)으로 빌드된 JavaScript 런타임 이다.

Node.js 특징

  • Non blocking IO / Async (비동기)
    • I/O가 끝날 때 까지 기다리지 않고 바로 밑의 코드를 실행
    • Node.js 표준 라이브러리의 모든 I/O 메서드는 논 블로킹 비동기 방식을 제공하고 콜백 함수를 받는다.

      동기/비동기, block/non-block 차이 block/non-block는 호출되는 함수가 바로 return되는지에 달려있다. 호출된 함수가 바로 return 해서 호출한 함수에게 제어권을 넘겨주면 non-block이고, 자신의 작업을 마칠 때 까지 제어권을 가지고 있으면 block이다. 동기/비동기는 호출되는 함수의 작업 완료 여부를 누가 신경 쓰는지에 달려있다. 호출된 함수에게 callback 를 전달해서 완료시 callback를 실행하고, 호출한 함수는 작업 완료 여부를 신경쓰지 않는다면 비동기이고, 작업 완료여부를 호출한 함수가 확인하며 신경쓴다면 동기이다.

  • Single Thread Model
    • 1개의 쓰레드로 모든 일을 수행하기 때문에 메모리 사용량과 시스템 리소스 사용량에는 변화가 없다.
    • 따라서 대규모 네트워크 프로그램을 개발하기에 적합하다.
    • 그러나 쓰레드 하나가 종료되면 프로그램 전체에 문제가 발생한다.
  • Node.js 쓰레드 풀
    • Node.js는 앱 자체에서는 단일 쓰레드로 실행되지만 background에서 thread pool을 구성해 작업을 수행한다.
    • 쓰레드 풀을 관리하는 것은 개발자가 아니라 플랫폼이다.

Node.js 장점

  • 자바스크립트를 동일하게 사용해서 서버단 로직을 처리할 수 있다.
  • 이벤트 기반 비동기 방식이라 서버 무리가 적다.
  • 싱글 스레드로 동기화 문제가 발생하지 않는다.
  • npm을 통해 다양한 모듈을 제공받을 수 있다.

Node.js 단점

  • 단일 쓰레드를 사용하기 때문에 하나의 작업 자체가 많이 걸리는 웹 서비스에 어울리지 않는다.
  • 이벤트 기반 비동기방식을 사용하기 때문에, 서버단 로직이 복잡한 경우 콜백 지옥에 빠질 수 있다.
  • 코드가 수행 되어야 에러가 있는지 알 수 있고, 에러가 발생할 경우 프로세스가 내려가기 때문에 테스트가 중요하다.
This post is licensed under CC BY 4.0 by the author.

[Blog] Jekyll의 chirpy테마로 개발자 블로그 만들기

[CS] 운영체제

Comments powered by Disqus.