Network

Node 특성

Z00_HWAN_99 2024. 10. 7. 14:04
728x90
반응형

이벤트 기반

  • 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식
  • 이벤트의 예 : 클릭, 네크워크 요청, 타이머 등
  • 이벤트 리스너 : 이벤트를 등록하는 함수
  • 콜백 함수 : 이벤트가 발생했을 때 실행될 함수

논블로킹I/O

  • 논블로킹 : 오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되게 하고, 나중에 오래 걸리는 함수를 실행.
  • 논 블로킹 방식 하에서 일부 코드는 백그라운드에서 병렬로 실행됨.
  • 일부 코드 : I/O 작업(파일 시스템 접근, 네크워크 요청), 압축, 암호화 등
  • 나머지 코드는 블로킹 방식으로 실행됨.
  • I/O 작업이 많을 때 노드 활용성이 극대화.

프로세스 vs 스레드

  • 프로세스 : 운영체제에서 할당하는 작업의 단위, 프로세스 간 자원 공유X
  • 스레드 : 프로세스 내에서 실행되는 작업의 단위, 부모 프로세스 자원 공유
  • 노드 프로세스는 멀티 스레드이지만, 직접 다룰 수 있는 스레드는 하나이기 때문에 싱글 스레드라고 표현함.
  • 노드는 주로 멀티 스레드 대신 멀티 프로세스 활용.
  • 노드는 14버전부터 멀티 스레드 사용 가능

싱글 스레드

  • 싱글 스레드란, 주어진 일을 하나밖에 처리하지 못함.
  • 블로킹이 발생하는 경우 나머지 작업은 모두 대기해야함 -> 비효율 발생
  • 주방에 비유(점원 : 스레드, 주문 : 요청, 서빙 : 응답)
  • 대신 논 블로킹 모델을 채택하여 일부 코드(I/O)를 백그라운드(다른 프로세스)에서 실행 가능
  • 요청을 먼저 받고, 완료될 때 응답함
  • I/O 관련 코드가 아닌 경우 싱글 스레드, 블로킹 모델과 같아짐.

그러면 하나의 스레드로 동시에 처리할 수는 없을까?

  • 이벤트 기반 아키텍처를 적용하여 해결할 수 있다.
  • 콜스택에 쌓인 작업을 다른 곳에서 처리한 다음, 처리가 완료되었을 경우 알림을 받으면 스레드가 하나라도 빠르게 처리할 수 있다.

멀티 스레드 모델과의 비교

  • 싱글 스레드 모델은 에러를 처리하지 못하는 경우 멈춤
    • 프로그래밍 난이도 쉽고, CPU나 메모리 자원 적게 사용
  • 멀티 스레드 모델은 에러 발생 시 새로운 스레드를 생성하여 극복
    • 단, 새로운 스레드 생성이나 놀고 있는 스레드 처리에 비용 발생.
    • 프로그래밍 난이도 어려움.
    • 스레드 수만큼 자원을 많이 사용함.
  • 점원 : 스레드, 주문 : 요청, 서빙 : 응답

멀티 스레드의 활용

  • 노드 14버전
    • 멀티 스레드를 사용할 수 있도록 worker_threads 모듈 도입
    • CPU를 많이 사용하는 작업인 경우에 활용 가능
    • 멀티 프로세싱만 가능했던 아쉬움을 달래줌.
멀티 스레딩 멀티 프로세싱
하나의 프로세스 안에서 여러 개의 스레드 사용 여러 개의 프로세스 사용
CPU 작업이 많을 때 사용 I/O 요청이 많을 때 사용
프로그래밍 어려움 프로그래밍 비교적 쉬움

 

이벤트 루프(반응자 패턴 - reactor pattern)

  • 디멀티플렉서와 이벤트 큐 구성되어 있음.
  • reactor pattern : 이벤트를 추가하는 주체와 해당 이벤트를 실행하는 주체를 분리(decoupling)하는 구조
728x90
반응형

'Network' 카테고리의 다른 글

간단한 용어 정리  (0) 2024.10.08
라우팅  (0) 2024.10.08
REST API Node란  (2) 2024.10.07
웹 아키텍처 분석  (3) 2024.09.08
쿠키와 세션  (2) 2024.09.08