* 위 내용을 정리하였음
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는 노드 기반으로 모바일 개발도구로 사용된다.
'ComputerScience > NodeJs' 카테고리의 다른 글
node - 3.7 이벤트 이해하기 ~ 3.8 예외처리 (0) | 2022.01.09 |
---|---|
node - 3.6 파일 시스템 접근하기 (0) | 2022.01.07 |
node - 3.5 노드 내장 모듈 사용하기 (0) | 2022.01.06 |
node - 3.1 노드 기능 알아보기~ 3.4 노드 내장 객체 알아보기 (0) | 2021.12.30 |
node - 2. 알아야 하는 javascript (0) | 2021.12.29 |