본문 바로가기

취업/준비

node.js의 특징

node.js의 등장 배경 = 기존 서버의 한계

  • 기존 서버
    • 스레드 기반의 동기 방식
    • 일이 많아지면 스레드를 계속 만들어야 하기 때문에 메모리 사용량이 폭발적으로 증가하고, 서버가 다운될 위험성이 커진다.
  • node.js로 만든 서버
    • 비동기 방식으로 처리하기 때문에 단일 스레드로도 굉장히 빠르게 처리할 수 있다
    • 이벤트 메커니즘으로, 서버가 멈추지 않고 반응할 수 있게 해준다. -> 높은 확장성

 

node.js의 특징

  1. 비동기 I/O 처리 → non blocking
    • API가 실행되었을 때 그 반환 결과를 기다리지 않고 다음 API 실행.
    • 이전 API가 완료되면 node.js의 이벤트 알림 메커니즘을 통해 결과값을 받아옴.
  2. 빠른 속도
    • 구글 크롬의 V8 Javascript Engine을 사용하여 빠른 코드 실행 제공
  3. 단일 스레드와 뛰어난 확장성
    • 단일 스레드인데 이벤트 메커니즘으로 서버가 멈추지 않고 반응하여 확장성을 키워줌
  4. 노 버퍼링
    • node.js 어플리케이션엔 데이터 버퍼링이 없고, 데이터를 chunk로 출력
  5. MIT License

 

node.js가 적합한 분야

  • 알림이나 실시간 대화같이 데이터의 실시간 처리가 필요한 애플리케이션
  • 데이터 스트리밍 애플리케이션
  • 사용자의 입출력이 잦은 애플리케이션
  • JSON API기반의 애플리케이션
  • 단일 페이지 기반의 애플리케이션

 

node.js가 부적합한 분야

  • Data Science같이 복잡한 데이터를 처리하기 위해 메모리, 램, CPU 등 하드웨어를 사용해야 하는 곳
  • 하드코어한 처리에는 적합하지 않다 (이런 경우엔 Python Django)

 

node.js의 장점

  • Javascript 문법으로 서버 프로그래밍까지 가능!
  • 효율적인 서버 처리 방식 (위에서 계속 설명)
  • 개발 생산성이 좋다
    • 풀스택 개발, JSON 사용, 비동기 프로그래밍이 모두 가능하니까!
    • 프론트엔드 개발자가 백엔드 개발도 할 수 있어서 의사소통 비용도 필요 없음.
    • Javascript가 지원하는 JSON을 지원해서 데이터 다루기 편하다.
      • mongoDB, ElasticSearch까지 사용하면 더욱 시너지 효과 발생

 

고찰

  • node.js가 문제를 일으키는 상황은 개발자의 잘못인 경우로 밝혀졌다고 함. (2016년 8월기준)
  • Javascript의 인터프리터 언어의 성질때문에 문제가 된다고 하는 의견은.. 사실 간단한 소프트웨어에 사용되는 node.js의 특성에서 문제가 될 일은 적어 보인다.
  • 순환 의존성 등과 같은 문제가 발생할 수 있다지만, 사실 개발자가 잘하면 될 일이다.

 


References