-
노드의 장단점?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 교과서를 보고 원활한 공부를 위하여 요약해보았다.