Coding Log


Node.js 포스팅에 앞서

본 카테고리는 요즘 각광받는 Node.js라는 프레임워크에 대해서 다룬다.

Express, Sails, Koa, Hapi와 같은 Node.js를 위한 프레임워크를 제외하고 순수한 Node.js 자체에 대해서 알아본다.

참고 Node.js 공식 사이트

Node.js의 장점

Node.js의 장점은 아래와 같다.

Single Thread 기반의 비동기 I/O 처리

Node.js는 기본적으로 Single Thread기반이기 때문에 대용량의 Request를 수용할 수 있다.

특히 Server-Side의 대표적인 문제인 C10K 문제를 처리하는 데 매우 효과적이다.

참고 C10K Problem : Server와 연결된 Client가 10,000개 이상이 될 때 동시에 처리할 수 있는가에 대한 문제

Event Callback

Node.js는 특정 File, DB, Network 등의 처리 또한 I/O 요청을 보내놓고 I/O 요청이 끝나면 이벤트를 처리한다.

CPU IDLE 최소화

위에서 언급한 Event Callback 덕분에 CPU가 I/O의 응답을 기다리는 시간이 필요없어지게 된다.

Node.js의 단점

Node.js의 단점은 장점과 정반대로 대칭되는 경우가 많다.

무거운 작업에 의한 성능 저하

Node.js는 Single Thread기반에서 오는 장점과 함께 단점이 발생한다.

하나의 작업이 굉장히 시간이 오래 걸리는 작업일 경우 전체 시스템의 성능이 급격하게 떨어지게 된다.

또한 멀티 코어 컴퓨팅 장치에서 실행할 경우 하나의 Thread가 하나의 코어만 사용하기때문에 코어가 많은 컴퓨팅 장치라고 해서 퍼포먼스 향상의 효과는 없다.

Callback Hell

Event Callback을 기준으로 코드가 작성되기 때문에 Callback Hell에 빠지기 쉽다.

예를 들면 아래와 같은 형태의 코드가 작성된다.

var temp = function(error, callback) {
  function(error, callback) {
    function(error, callback) {
      function(error, callback) {
        function(error, callback) {
          function(error, callback) {
            // ..
          }  
        }  
      }  
    }  
  }
}

참고 Callback Hell을 방지하기 위한 방법으로 유명한 Promise 가 있다.

Interpreter

Node.js는 javascript로 작성되기 때문에 스크립트 언어 특성상 코드의 수행을 통해서만 에러 여부를 확인할 수 있다.

단 Node.js는 에러가 발생하면 프로세스가 죽어버리는 문제점이 있다.


DISQUS 로드 중…
댓글 로드 중…

트랙백을 확인할 수 있습니다

URL을 배껴둬서 트랙백을 보낼 수 있습니다