본문 바로가기

Backend/Node.js

Node.js와 Event Roof

Node.js 프로그래밍 패러다임

  • IO: 사용자데이터를 입력받으면(input) 원하는 결과를 내보낸다(output)
  • Network IO가 웹서버(WAS)의 성능을 측정하는데 가장 중요한 요소
  • Node.js는 Network IO시 다른 WAS가 겪는 동시성 이슈(Thread)를 비동기와 Non-blocking으로 해결
  • 다른 WAS는 Threadfull 방식이라면 순서가 될때까지 대기해야 해서 Multi Thread 필요.
  • Node.js는 Event Driven 방식이기 때문에 이벤트가 발생했을때 기다리지 않고 반응한다.

Event Roof

  • Node.js는 Event Driven 방식, 즉 non-blocking으로 처리를 위해 Event Roof 사용
  • Event Roof는 Stack(Call Stack)과 Que(Callback Queue)로 구성
  • Event Roof는 주기적으로 Call Stack이 비어있는지 체크한다.(Polling)

Call Stack

  • Call Stack는 실행될 코드들이 순서를 기억하기 위해 쌓아놓는 곳이다.
  • 마지막에 쌓은 최상단의 코드부터 순차적으로 실행한다.

Callback Queue

  • Callback Queue는 비동기 작업들이 대기하는 곳이다.
  • Call Stack이 비어있어야지만, Callback Queue의 대기열 맨앞에 있는 코드부터 Call Stack으로 옮겨진다.( == 실행된다. )

Web API

  • 웹이 가지고 있는 이벤트 click들이 처리 되는 곳이다.
  • 클릭이 일어났을때 내부에 있는 코드를 Call Stack 혹은 Callback Queue로 옮긴다.
// '클릭'은 언제 일어날지 모르는 이벤트 작업이다.
$.on('button', 'click', function onClick() {
    setTimeout(function timer() {
        console.log('You clicked the button!');    
    }, 2000);
});

console.log("Hi!");

// setTimeout(callback, time) 에서 time은 실행에 필요한 최소지연시간을 뜻한다. 
setTimeout(function timeout() {
    console.log("Click the button!");
}, 5000); // 무조건 5000ms 지나서 실행된다는 뜻 X

console.log("Welcome to loupe.");

'Backend > Node.js' 카테고리의 다른 글

[multer] 파일업로드  (0) 2020.02.11
[가비아] Node.js 웹호스팅 세팅  (0) 2020.01.27
[NVM] Node.js 설치  (0) 2020.01.23
[graphQL] rest API와 차이점, Apollo Server로 맛보기  (0) 2020.01.10
Error handling과 custom Error 생성  (0) 2020.01.02