ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 노드의 장단점?
    Web/Node.js 2019. 7. 15. 23:24



    노드는 이벤트 기반, 논블로킹 I/O 모델을 사용해 가볍고 효율적이다.


    이벤트 기반이란? 

    : 이벤트가 발생할 때 무엇을 할지 미리 등록한다.


    논블로킹 I/O 기반이란?

    :  이전 작업이 완료될 때까지 멈추지 않고 다음 작업을 수행한다. 


    동기 , 블로킹  // 비동기, 논블로킹




    노드는 싱글 스레드 기반. 주어진 작업을 혼자서 처리해야 한다.

    노드는 스레드를 늘리는 대신 프로세스 자체를 복사해 여러 작업을 동시에 처리하는 멀티 프로세싱 방식을 택함. 자바스크립트 언어 자체 가 싱글 스레드 특성을 띄고 있기 때문이다.

    ( 사실 노드 프로세스도 내부적으로 스레드를 여러개 가지고 있으나 제어할 수 있는 스레드는 하나뿐이므로 흔히 싱글 스레드라 한다. )



    노드 서버는 I/O가 많은 작업에 유리하다. 그 이유는 노드는 ibuv 라이브러리를 사용하여 I/O 작업을 앞서 말한 논블로킹 방식으로 처리하기 때문. 따라서 스레드 하나가 많은 수의 I//O를 혼자서 감당 가능 하다는 것이다.


    서버 규모가 작다면 노드는 내장된 웹 서버 사용 가능! 편리하다.


    ( 웹서버 - Apache, nginx, IIS .... , AWS(웹 어플리케이션 서버) - tomcat... 의 사용법을 익힐 필요가 없다. )


    +


    언어로 자바스크립트를 사용. 


    하나의 언어로 웹사이트 개발 가능하는 큰 장점.



     노드의 장단점


    장점 


    -멀-티 스레드 방식에 비해 컴퓨터 자원을 적게 사용한다


    -I/O 작업이 많은 서버로 적합하다


    -멀티 스레드 방식보다 쉽다


    -웹 서버가 내장되어 있다


    -자바스크립트를 사용한다


    -JSON 형식과 호환하기 쉽다.


     단점


    -싱글  스레드라서 CPU 코어를 하나만 사용한다


    - CPU 작업이 많은 서버로는 부적합하다


    - 하나뿐인 스레드가 멈추지 않도록 관리해야 한다


    - 서버 규모가 커졌을 때 서버를 관리하기 어렵다


    - 어중간한 성능





    * 조현영님의 Node.js 교과서를 보고 원활한 공부를 위하여 요약해보았다.


    'Web > Node.js' 카테고리의 다른 글

    이벤트 루프란?  (31) 2019.09.28
Designed by Tistory.