앞선 포스팅에서 Node.js가 어떤 것인지 전반적인 개요에 대해 알아보았습니다.
이번 포스팅에서는 Node.js가 어떤 특징을 가졌는지, 어떻게 동작하는지 살펴보겠습니다.
Node.js의 특징
1. V8 엔진
앞선 포스팅에서도 나왔듯이 Node.js는 V8 엔진을 사용한다. 때문에 빠른 코드 실행이 가능합니다.
2. 비동기 I/O
Node.js는 기본적으로 비동기적으로 요청을 처리하기 때문에 어떤 한 요청을 처리하면서 다른 요청을 동시에 받을 수 있습니다.
3. 이벤트 기반 / 싱글쓰레드
Node.js는 이벤트 기반으로 동작합니다. 이벤트가 발생할 때마다 미리 정해둔 작업(콜백)을 수행하는 방식을 의미합니다. 만약 발생한 이벤트가 없거나 발생했던 이벤트를 다 처리했다면 다음 이벤트가 발생할 때까지 기다립니다. 이 때, 중요한 요소가 이벤트 루프인데 이벤트 루프를 통해 호출할 콜백들을 관리합니다.
이벤트 루프는 노드 종료시까지 이벤트 처리 작업을 반복하기 때문에 이벤트 루프라고 불립니다.
출처 : http://www.nextree.co.kr/p7292/
위 사진은 비동기 처리를 이벤트 방식으로 풀어내는 Node.js 해결책입니다. 이벤트가 발생하면 이벤트루프가 해당 이벤트를 처리하고 그동안 다음 요청을 처리합니다. 그리고 이벤트 루프가 해당 이벤트를 처리하면 콜백을 실행하는 구조입니다.
출처 : https://stackoverflow.com/questions/10680601/nodejs-event-loop