개념 익히기

Crypto module

npm

템플릿 엔진

Node.js란 ?

노드는 Javascript의 runtime입니다. 즉, Javascript program을 실행할 수 있게 해줍니다.

  1. 기존에는 Javascript program을 인터넷 브라우저에서만 실행할 수 있었던 점
  2. 웹 서버에 파일을 업로드할 때, 업로드 진행상황을 알기 위해 서버에 쿼리를 전송해야 한다는 점

인터넷 브라우저 외의 환경에서 더 빨리 실행될 수 있도록, 이런 점을 개선하기 위해 Node.js가 개발되었습니다.

다음은 Node.js의 내부 구조입니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/13d28916-e495-4cc6-ac0c-660542800996/node_structure.png

노란색은 Javascript, 초록색은 C/C++로 구현되어 있습니다. Javscript 코드는 Node가 알아서 V8과 libuv에 연결해줍니다.

위 구조에 나온 이벤트 기반이 뭘까요 ?

이벤트 기반(event-driven)

이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식입니다. 그렇기에 이벤트가 발생했을 때 무엇을 할지 미리 등록되어 있어야 합니다.

이는 이벤트 리스너(event listener)에 콜백(callback)함수를 등록함으로써 가능합니다.

Node.js application은 단일 스레드/이벤트 기반 모델로 실행됩니다. Node.js는 Background에서 thread pool을 구성해 작업을 수행하지만 application 자체에서는 단일 스레드로 실행됩니다. 요청이 처리되는 과정은 아래와 같습니다.