더북(TheBook)

1.2 서버로서의 노드

 

이 절에서는 노드를 서버로 사용할 때의 특징과 장단점에 대해 알아보겠습니다.

노드가 싱글 스레드, 논블로킹 모델을 사용하므로 노드 서버 또한 동일한 모델일 수밖에 없습니다. 따라서 노드 서버의 장단점은 싱글 스레드, 논블로킹 모델의 장단점과 크게 다르지 않습니다. 싱글 스레드여서 멀티 스레드 방식보다는 컴퓨터 자원을 적게 사용하는 장점이 있지만, CPU 코어를 하나밖에 사용하지 못하는 단점도 있습니다.

노드 서버는 I/O가 많은 작업에 적합합니다. 노드는 libuv 라이브러리를 사용하여 I/O 작업을 논블로킹 방식으로 처리해줍니다. 따라서 스레드 하나가 많은 수의 I/O를 혼자서도 감당할 수 있습니다. 하지만 CPU 부하가 큰 작업에는 적합하지 않습니다. 여러분이 작성하는 코드는 모두 스레드 하나에서 처리됩니다. 여러분의 코드가 CPU 연산을 많이 요구하면 블로킹이 발생해 스레드 하나가 감당하기 어렵습니다.

싱글 스레드 방식의 프로그래밍은 멀티 스레드 방식보다 상대적으로 쉽습니다. 서버 프로그래밍에 익숙하지 않은 사람도 쉽게 입문할 수 있습니다. 하지만 싱글 스레드이다 보니 하나뿐인 스레드가 에러로 인해 멈추지 않도록 잘 관리해야 합니다. 에러를 제대로 처리하지 못하면 서버 전체가 멈추기 때문입니다.

또한, 웹 서버가 내장되어 있어 입문자가 쉽게 접근할 수 있습니다. 노드 외의 서버를 개발하다 보면 Apache, nginx, IIS처럼 별도의 웹 서버를 설치해야 하는 경우가 많습니다. 심지어 Tomcat 같은 웹 애플리케이션 서버(WAS)를 추가로 설치하는 경우도 있습니다. 이 경우 프로그래밍 외에도 웹 서버와 WAS 사용법을 익혀야 합니다. 하지만 노드는 내장된 웹 서버를 사용하면 되므로 편리합니다. 하지만 나중에 서버 규모가 커지면 결국 nginx 등의 웹 서버를 노드 서버와 연결해야 합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.