노드는 자바스크립트 런타임입니다.
런타임이란 특정언어로 만든 프로그램들을 실행할 수 있는 환경을 뜻합니다.
따라서 노드는 자바스크립트 프로그램을 컴퓨터에서 실행할 수 있습니다.
노드의 특성
1. 이벤트 기반
이벤트 기반이란 이벤트가 발생할 때미리 지정해둔 작업을 수행하는 방식을 의미합니다.
노드도 이벤트 기반으로 동작하므로, 이벤트가 발생하면 이벤트 리스너에 등록해둔 콜백 함수를 호출합니다.
2. 논 블로킹 I/O
논 블로킹: 이전 작업이 완료될 때까지 대기하지 않고 다음 작업을 수행합니다.
블로킹: 이전 작업이 끝나야만 다음 작업을 수행합니다.
오래 거리는 작업을 처리해야 하는 경우, 논 블로킹을 통해 실행 순서를 바꿔줌으로써 그 작업 때문에 간단한 작업들이 대기하는 상황을 막을 수 있습니다.
3. 싱글 스레드
- 프로세스: 운영체제에서 할당하는 작업단위.
- 스레드: 프로세스 내에 실행되는 흐름의 단위
노드를 실행하면 먼저 프로세스가 하나 생성됩니다. 그리고 그 프로세스에서 스레드들을 생성하는데, 이때 내부적으로 스레드를 여러 개 생성합니다. 그중에서 여러분이 직접 제어할 수 있는 스레드는 하나뿐입니다. 그래서 흔히 노드가 싱글 스레드라고 여겨지는 것입니다.
스레드를 작업을 처리하는 일손으로 표현하기도 하는데, 하나의 스레드만 직접 조작할 수 있으므로 일손이 하나인 셈입니다. 요청이 많이 들어오면 한 번에 하나씩 요청을 처리합니다. 블로킹이 심하게 일어나는 작업을 처리하지만 않는다면 스레드 하나로도 충분합니다. 블로킹이 발생할 것 같은 경우에는 논 블로킹 방법으로 대기 시간을 최대한 줄입니다.