본문 바로가기

ComputerScience/NodeJs

node - 1. 노드 시작하기

728x90
 

Node.js 교과서 개정 2판: 1장 노드 시작하기

 

thebook.io

* 위 내용을 정리하였음

1.1 핵심개념

1.1.1 서버

- 클라이언트의 요청에 응답하는 주체

 

1.1.2 노드

- 자바스크립트 프로그램이 서버로 기능하기 위한 도구를 제공하는 것이 노드

- 즉 자바스크립트 런타임(프로그램을 실행할 수 있는 환경)이 노드이다.

 

1.1.3 이벤트 기반

- 이벤트가 발생했을 때 지정된 작업을 수행하는 것

- 작업을 콜백, 리스너로 등록한다

- 호출스택에서 콜백을 백그라운드로 보내고 백그라운드에서 태스크 큐로 이동하면 이벤트루프를 통해 호출스택으로 태스크가 이동한다.

 

1.1.4 논블로킹I/O

- 병렬처리가 가능한 I/O, 네트워크 작업의 경우 작업을 백그라운드로 넘기면 동시 처리가 가능하다. 이를 논 블로킹이라고 한다.

- 정해진 순서대로 수행된다면 블로킹이다.

function longRunningTask() {
    // 오래걸림
    console.log('작업 끝');
}

console.log("시작");
setTimeout(longRunningTask, 0);
console.log("다음 작업");

- setTimeout으로 longRunningTask 콜백함수를 백그라운드로 보낸다. 이후에 태스크 큐로 이동하기 때문에 정해진 순서대로 실행되지 않는다.

- "다음작업"이 먼저 수행되고 longRunningTask가 실행된다.

- 전체 실행시간이 줄어든 것은 아니지만 간단한 작업을 먼저 처리하고 오래걸리는 작업을 나중에 처리한다는 점에서 의의가 있다.

 

1.1.5 싱글 스레드

- 프로세스는 cpu시간, 독립된 메모리공간 할당 단위이다. 쓰레드는 프로세스 안에서 Stack만 따로 할당받고 Code, Data, Heap 영역은 공유한다.

- 노드는 싱글스레드 논블로킹 방식을 채택한다.

 

1.2 서버로서 노드

- 노드는 논 블로킹 방식을 채택하기 때문에 I/O요청이 많은 서버에 적합하다.

- 실시간채팅, 주식차트, json을 제공하는 api 서버가 노드를 많이 사용한다.

 

1.3 서버 외의 노드

- 노드 기반으로 돌아가는 웹 프레임워크로는 angular, react등이 있다

- react native는 노드 기반으로 모바일 개발도구로 사용된다.

728x90
반응형