본문 바로가기

Node

노드의 특징 및 서버로서의 노드 장단점

노드의 특징

 

1. 이벤트 기반

 

이벤트의 예: 클릭, 네트워크 요청, 타이머 등

 

이벤트 리스터: 이벤트를 등록하는 함수

 

콜백 함수: 이벤트가 발생했을 때 실행될 함수

 

2. 논블로킹 I/O(입력(Input)/출력(Output))

 

논블로킹: 오래 걸리는 함수를 백그라운드로 보내서 다음코드가 먼저 실행되게 하고, 나중에 오래걸리는 함수를 실행

 

-논블로킹 방식 하에서 일부 코드는 백그라운드에서 병렬로 실행됨
-일부코드 : I/O작업(파일 시스템 접근, 네트워크 요청), 압축, 암호화 등
-나머지 코드는 블로킹 방식으로 실행됨
-따라서 I/O작업이 많을때 노드의 활용성이 극대화

  1. A함수가 B함수를 호출하면, B 함수는 실행되지만, 제어권은 A 함수가 그대로 가지고 있는다.
  2. A함수는 계속 제어권을 가지고 있기 때문에 B함수를 호출한 이후에도 자신의 코드를 계속 실행한다.

 

논블로킹은 A함수가 B함수를 호출해도 제어권은 그대로 자신이 가지고 있는다.

  1. A함수가 B함수를 호출하면, B 함수는 실행되지만, 제어권은 A 함수가 그대로 가지고 있는다.
  2. A함수는 계속 제어권을 가지고 있기 때문에 B함수를 호출한 이후에도 자신의 코드를 계속 실행한다.

블로킹은 A 함수가 B 함수를 호출하면, 제어권을 A가 호출한 B 함수에 넘겨준다.

  1. A함수가 B함수를 호출하면 B에게 제어권을 넘긴다.
  2. 제어권을 넘겨받은 B는 열심히 함수를 실행한다. A는 B에게 제어권을 넘겨주었기 때문에 함수 실행을 잠시 멈춘다.
  3. B함수는 실행이 끝나면 자신을 호출한 A에게 제어권을 돌려준다.


3. 프로세스와 스레드

 

프로세스: 운영체제에서 할당하는 작업의 단위, 프로세스 간 자원공유 X
스레드: 프로세스 내에서 실행되는 작업의 단위, 부모 프로세스 자원 공유

 

노드 프로세스는 멀티 스레드이지만 직접 다룰 수 있는 스레드는 하나이기 때문에 싱글스레드라고 표현함
노드는 주로 멀티 스레드 대신 멀티 프로세스 활용

 

4. 싱글 스레드

 

싱글 스레드라 주어진 일을 하나밖에 처리 못함

 

-블로킹이 발생하는 경우 나머지 작업은 모두 대기해야 함 -> 비효율 발생

주방에 비유(점원: 스레드, 주문: 요청, 서빙: 응답)


대신 논 블로킹 모델을 채택하여 일부 코드(I/O)를 백그라운드(다른 프로세스)에서 실행가능(따라서 노드는 멀티 프로세스 활용)
-요청을 먼저 받고, 완료가 될 때 응답함
-I/O 관련 코드가 아닌 경우 싱글 스레드, 블로킹 모델과 같아짐

노드에서 멀티스레드를 사용안하는 이유:

 

- 멀티 스레드 모델은 에러 발생 시 새로운 스레드를 생성하여 극복
- 이때 새로운 스레드 생성이나 놀고 있는 스레드 처리에 비용 발생
- 멀티 스레드의 경우 프로그래밍 난이도가 어려움
- 스레드 수많은 자원을 많이 사용함
- 싱글 스레드 모델은 프로그래밍 난이도가 쉽고, CPU, 메모리 자원 적게 사용

 

서버로서의 노드

 

장점 단점

'Node' 카테고리의 다른 글

for await(변수 of 프로미스 배열)  (0) 2024.01.24
async function  (0) 2024.01.24
프로미스  (0) 2024.01.24
클래스  (0) 2024.01.24
구조분해 할당  (1) 2024.01.24