가자미의 개발이야기
노드에 들어가기 앞서 알아보는 노드의 특징 본문
이벤트 기반
이벤트 발생시 미리 지정해둔 작업을 수행하는 방식.
이벤트 루프 : 호출된 콜백 함수의 실행 순서를 결정, 노드가 종료될 떄까지 이벤트 처리를 위한 작업을 반복
태스크 큐 : 콜백 함수들이 기다리는 공간.
백그라운드 : 타이머나 IO 작업 콜백 또는 이벤트 리스너들이 대기하는 곳
논블로킹 I/O
node.js는 오래걸리는 작업을 백그라운드에 두고 다음 코드가 먼저 실행시키고 그 함수가 태스크 큐를 거쳐 호출 스택으로 올라오게 하는 방식으로 작업을 효율적으로 운용할 수 있다. 이를 논블로킹 방식이라 한다.
블로킹 방식의 코드
function lonRunningTask(){
//오래 걸리는 작업
console.log('작업 끝');
}
console.log('시작');
longRunningTask();
console.log('다음 작업');
논블로킹 방식의 코드
function longRunningTask(){
//오래 걸리는 작업
console.log('작업 끝');
}
console.log('시작');
setTimeout(longRunningTask, 0); //논블로킹을 위한 타이머
console.log('다음 작업');
setTimeout(콜백, 0) : 코드를 논블로킹으로 만들기 위해 사용하는 기법. 사용시 콜백 함수가 태스크 큐에 보내짐.
싱글스레드
프로세스 : 운영체제에서 할당하는 작업의 단위.
스레드 : 프로세스 내에서 실행되는 흐름의 단위.
하나의 프로세스는 스레드를 여러개 가질 수 있음.
노드는 왜 싱글 스레드 인가?
멀티 스레드는 요청이 많은 경우 유리 할 수 있지만, 스레드를 늘리고 줄이는 행위도 비용이 발생하기 때문.
논블로킹 방식 싱글 스레드로 이 문제점을 해결.
장점 | 단점 |
멀티 스레드 방식보다 컴퓨터 자운을 적게 사용 | 싱글 스레드라서 CPU코어를 하나만 사용 |
I/O 작업이 많은 서버로 적합 | CPU 작업이 많은 서버로는 부적합 |
멀티 스레드 방식보다 쉬움 | 하나뿐인 스레드가 멈추지 않도록 관리해야함 |
웹 서버가 내장 | 서버 규모가 커졌을 때 서버 관리 어려움 |
자바스크립트 사용 | 어중간한 성능 |
JSON 형식과 호환하기 쉬움. |
'HTML & CSS & JS > Node.js' 카테고리의 다른 글
[Node.js] express를 활용한 웹 개발 (0) | 2021.05.11 |
---|---|
[Node.js] 이벤트 리스너를 추가한 간단한 웹서버 구현 (0) | 2021.03.17 |
[Node.js] Node.js에서 웹 서버 만들기 (0) | 2021.03.11 |
[Node.js] 자주 쓰이는 npm 명령어 (0) | 2021.03.11 |
[Node.js] 주요 REPL 명령어 (0) | 2021.03.11 |