크롬에서 사용되는 V8 엔진을 사용합니다.
단일 쓰레드 이벤트 루프 기반이며 I/O를 비동기식 처리합니다.
방대한 모듈 시스템을 갖추고 있습니다. (기본 / 써드파티 / 사용자 정의)
이벤트는 Event Queue에 담겨 순서대로 처리됩니다.
Node.js에서 이벤트를 처리 할때 Event Loop를 활용하는데 Event Loop는 싱글 쓰레드 이기 때문에 한번에 하나의 처리밖에 하지 못합니다. 그리하여 한 작업을 실행하면 무작정 그 작업이 끝나기만을 기다려야 하는데 무작정 기다릴수는 없습니다.
여기서 비동기 개념(Non-blocking)이 적용됩니다.
Event Loop는 요청이 들어오면 멀티쓰레드인 Worker thread 에게 넘겨주고 다른 작업을 바로 수행합니다. Worker는 작업이 끝나면 Callback 함수를 호출하여 이벤트 루프에게 작업이 끝낫음을 알립니다.