하지만 2008년 구글이 V8 엔진을 사용해 크롬을 출시하자 이야기가 달라졌습니다. 당시 V8 엔진은 다른 자바스크립트 엔진과 달리 매우 빨랐고, 오픈 소스로 코드를 공개했습니다. 속도 문제가 해결되자 라이언 달(Ryan Dahl)은 2009년 V8 엔진 기반의 노드 프로젝트를 시작했습니다.
▲ 그림 1-3 노드의 내부 구조
노드는 V8과 더불어 libuv라는 라이브러리를 사용합니다. V8과 libuv는 C와 C++로 구현되어 있습니다. 여러분이 코딩한 자바스크립트 코드는 노드가 알아서 V8과 libuv에 연결해주므로, 노드를 사용할 때 C와 C++는 몰라도 됩니다.
libuv 라이브러리는 노드의 특성인 이벤트 기반, 논블로킹 I/O 모델을 구현하고 있습니다. 이 모델이 무엇인지, 장단점으로는 어떤 것들이 있는지 알아봅시다.
Note ≣ ⎮ 노드 외의 런타임
자바스크립트 런타임은 노드 외에도 많습니다. 아직 노드의 유명세를 따라잡지는 못했지만 눈여겨봐야 할 것으로 번(https://bun.sh)과 디노(https://deno.land)가 있습니다.