TIL

(21.11.04) Node.js 요약

도깨비젤리 2021. 11. 4. 23:55
작은 지식이라도, 하루에 하나씩.


 

한 줄 요약


🦄본문 자체가 요약입니다!🦄

 

 

 

본문


Node.js란?

 

1. 웹 서버란 요청을 처리하고 적절한 결과를 보내주는 프로그램

 

 

2. Node.js는 서버나 프레임워크가 아니라, 자바스크립트의 런타임이다. 쉽게 말해서 웹 브라우저 밖에서 자바스크립트 코드를 실행 할 수 있도록 (특히 서버에서) 도와주는 환경이다.

 

 

3. Node.js를 사용하면 좋은 서비스

  • 제작할 앱이 리얼타임일 경우
  • 커스터마이징이 많이 필요한 경우
  • 자바스크립트 API를 사용해야할 경우
  • 빠른 실행과 성능이 중요한 경우

 

 

4. Node.js의 특징은, 비동기 방식을 이용한다는 것이다. 한 번에 하나씩 순차적으로 일을 해나가는 동기적 방식과는 다르게, 비동기적 방식은 한번에 여러 일을 시작하고 진행한다. 또한, 다른 작업의 유무와 관계 없이 일을 수행 할 수 있게 하는 논블로킹 방식을 채택하여, 결국 논블로킹/비동기 (NonBlocking-Async) 방식이 되는데, 이 덕분에 실행 속도가 엄청나게 빠르다.

 

 

5. 싱글 스레드인 Node.js가 속도감 있는 논블로킹/비동기 방식을 이용할 수 있는 것은 "이벤트 루프"에 있는데, Node.js는 작업을 수행하고 응답을 기다리는 대신, 작업이 종료되면 이벤트를 발생시키고 콜백 큐에 등록합니다. 이벤트 큐는 콜 스택이라는 함수의 호출을 기록하는 저장소를 계속 감시하는데, 콜 스택이 비게 되면 콜백 큐의 작업을 콜 스택으로 밀어넣습니다.

 

JS의 동작 방식. Node.js도 JS런타임이기에 동일한 구조를 동유한다.

 

 

따라서, Node.js는 아래와 같이 동작하며, 이 방식이 효율적이기 때문에 빠른 속도를 가질 수 있습니다.\

 

Node.js 동작 방식

 

  1. 감시자인 "이벤트 루프"가 어떤 이벤트가 있는지 계속 감시하고 있다가, 이벤트가 감지되는 순간 그 작업을 위해 작업 스레드를 생성합니다.
  2. 작업 스레드는 일종의 작업 공간으로, 여기서 작업이 수행됩니다. 이 시점에서 이벤트 루프는 처리 작업을 작업 스레드에 맡기고 다시 다른 이벤트가 없나 감시하기 시작합니다.
  3. 작업 스레드는 작업을 위임 받을 때, 콜백 함수라는 것을 받습니다. 콜백 함수는 작업이 끝나면 실행하는 함수입니다.
  4. 작업 스레드가 작업을 마치게 되면, 콜백 함수를 실행하고 싶다고 이벤트 루프에게 응답을 보냅니다.
  5. 응답을 받는 이벤트 루프는 콜백함수의 결과를 클라이언트에 전송하여 우리가 볼 수 있는 결과로 바꿔줍니다.

만약에 Node.js가 블로킹/동기(Blocking-Sync) 방식으로 사용된다면, 어떤 작업에 대한 완료 응답이 올 때까지 기다리면서 자원을 낭비할 것입니다.