API 개발에 있어 아주 핵심이 되는 개념입니다. 크롬브라우저의 V8 자바스크립트 엔진을 탑재한 이벤트기반의 서버사이드 오픈소스 자바스크립트 런타임으로 정의할 수 있습니다.
이를 이해하기 위해서는 V8 자바스크립트 엔진 / 자바스크립트 / 런타임 의 개념을 잘 이해해야 합니다.
여기서는 자바스크립트를 가볍게 정리하고 지나가겠습니다(추후에 자세한 개념정리 진행할 예정입니다.)
html 요소 생성부터 모든 페이지 및 기능을 동적으로 처리할 수 있도록 만들어주는 프로그래밍 언어입니다. 이를 활용해, 웹서비스를 개발하려는 시도가 증가하고 있습니다.
웹브라우저가 자바스크립트를 실행시켜서 동적으로 웹사이트를 동작시키기 위해 필요한 엔진크롬 브라우저에는 이 엔진이 탑재되었습니다. 자바스크립트 언어로 작성된 코드를 컴퓨터가 해석하기 쉬운 바이트코드로 변환,해석,실행시킵니다. 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있도록 V8엔진을 브라우저에서 독립시킨 자바스크립트의 실행 환경(runtime)을 Node.js라고 합니다.
<NOde.js의 내부구조>
<참고>
Lib uv : 자바스크립트 이벤트기반의 동작을 가능하도록 만들어주는 라이브러리
위와 같은 특징을 가진 Node.js는 특히 API 서버(HTTP 서버)를 구축하는데 활용됩니다.HTTP API 서버를 만드는 방법이 다양한데, 왜 Node.js 기반으로 API 서버를 구현해야 하는지 살펴보겠습니다.
<참고>
<Monolithic Architecture & Micro Service Architecture>