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 |