더북(TheBook)

노드가 싱글 스레드라는 말을 들어봤을 것입니다. 하지만 엄밀히 말하면 싱글 스레드로 동작하지는 않습니다. 노드를 실행하면 먼저 프로세스가 하나 생성됩니다. 그리고 그 프로세스에서 스레드들을 생성하는데, 이때 내부적으로 스레드를 여러 개 생성합니다. 그중에서 여러분이 직접 제어할 수 있는 스레드는 하나뿐입니다. 그래서 흔히 노드가 싱글 스레드라고 여겨지는 것입니다.

스레드를 작업을 처리하는 일손으로 표현하기도 하는데, 하나의 스레드만 직접 조작할 수 있으므로 일손이 하나인 셈입니다. 요청이 많이 들어오면 한 번에 하나씩 요청을 처리합니다. 블로킹이 심하게 일어나는 작업을 처리하지만 않는다면 스레드 하나로도 충분합니다. 블로킹이 발생할 것 같은 경우에는 논블로킹 방법으로 대기 시간을 최대한 줄입니다.

Note ≣ 스레드 풀과 워커 스레드

노드가 싱글 스레드로 동작하지 않는 두 가지 경우가 있습니다. 하나는 스레드 풀(Thread Pool)이고, 다른 하나는 워커 스레드(Worker Threads)입니다.

스레드 풀은 노드가 특정 동작을 수행할 때 스스로 멀티 스레드를 사용합니다. 대표적인 예로 암호화(3.5.5절), 파일 입출력(3.6절), 압축(3.6.2절) 등이 있습니다.

워커 스레드는 노드 12 버전에서 안정화된 기능으로, 이제 노드에서도 멀티 스레드를 사용할 수 있습니다. 여러분이 직접 다수의 스레드를 다룰 수 있으며, CPU 작업(연산이 많은 작업)이 많은 경우 워커 스레드를 사용하면 됩니다.

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