NodeJS의 장점/단점

장점~
싱글쓰레든데 논블락킹IO라 다수의 클라이언트의 요청 수락 및 응답 처리에 굉장히 유리하다.

보통 웹서버는 블락킹이라 쓰레드 생성 후 요청을 처리하는데 이럴경우 동시에 가용한 쓰레드수가 가득차면 웹서버가 상당히 힘들어 한다.. 

보통 많이 사용하는 아파치 톰캣같은 경우는 권장하는 동시 가용 쓰레드가 500개 라고 한다. 
블락킹 기반은 IO(network,file,db) 요청이 오면 IO 작업 호출 후 thread는 cpu를 사용하지않는 wait상태로 빠져버리게 된다. (한마디로 바빠 죽겠는데 놀고 있는 것..) 

이런 문제를 해결하기 위해 탄생한 이 바로 싱글 쓰레드, Non-블락킹IO 기반의 NodeJS다!

하나의 thread만 사용해서 여러 클라이언트로부터 오는 request를 처리한다. 
단 IO작업이 있을경우 Non-블락킹으로 처리한다. 
즉, IO요청을 던져놓고 다시 돌아와서 다른 작업을 하다가 IO작업이 끝나면 이벤트를 받아서 처리하는 구조이다. (thread가 혼자라 쉴틈 없이 열일 함!)

이 요청을받아 처리하는 쓰레드를 ELT(event loop thread)이라한다.

단점~
NodeJS의 특성으로 부터 오는 약점은 하나의 요이 만약 오래걸리는 작업이라면 전체 시스템에 장애가 온다. (하나의 요청당 1분이상씩 물고 있는 작업 들 ..)

그래서 CPU작업이 많은 애플리케이션에는 적당하지 않다. 
하지만 가벼운 작업에서는 기존 아파치계열 웹서버들을 보다 훠어어어얼씬 뛰어난 성능을 발휘 할 수 있다.


'웹_서비스' 카테고리의 다른 글

CGI란?  (0) 2015.04.26
Curl이란?  (0) 2012.05.24
Cookie란?  (0) 2012.05.15
Web Socket? Socket.io?  (0) 2012.04.18
COMET이란?  (0) 2012.04.18
블로그 이미지

JOKERGT

타고난 능력이란, 자연계의 초목과 같아 항상 탐구로써 가지를 쳐줘야 한다. https://www.linkedin.com/in/datajoker1

,