September 5, 2021

노드란?

Node.js는 Chrome V8 javascript 엔진으로 빌드된 javascript 런타임이다.

1.1.1 서버

서버는 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램이다. 클라이언트란 요청을 보내는 주체로 브라우저, 데스크톱 프로그램, 모바일 앱, 다른 서버 등일 수 있다.

1.1.2 자바스크립트 런타임

구글의 V8 엔진은 다른 자바스크립트 엔진과 달리 매우 빨랐고, 오픈 소스로 코드를 공개했다. 속도 문제가 해결되자 라이언 달은 2009년에 V8 엔진 기반의 노드 프로젝트를 시작했다.

노드 내부 구조

노드 내부 구조

V8 엔진과 libuv는 C와 C++로 구성되어 있다. libuv 라이브러리는 노드의 특성인 이벤트 기반, 논 블로킹 I/O 모델을 구현하고 있다.

1.1.3 이벤트 기반

Untitled

이벤트 기반(event-driven)이란 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식을 의미한다. 이벤트 기반 시스템에서 특정 이벤트가 발생할 때 무엇을 할지 미리 등록해두는 것을 이벤트 리스너에 콜백을 등록한다고 표현한다.

<aside> 💡 호출 스택에 함수들이 너무 많으면 3초가 지난 후에도 run 함수가 실행되지 않을 수 있다.

</aside>