node.js 코어의 원칙 / 작동원리

혜인·2022년 6월 17일
0

Node.js 코어의 원칙

  • 최소한의 기능 세트를 가지고 코어 바깥부분에 userland userspace라는 사용자 전용 모듕 생태계를 둔다.

  • Unix 철학

    작은 것이 아름답다
    각 프로그램은 한가지 역할만 잘 하도록 만들어라

  • 작은모듈의 장점 : 재사용성 / 이해하기 사용하기 쉬움 / 테스트 유지보수 쉬움/ 사이즈가 작아 브라우저에서 사용하기 좋음

  • 클래스 보다 함수를 노출시키는 것을 선호함

    Node.js 작동 원리

  • I/O (input/output : 입출력) 는 느림

    블로킹 I/O vs 논블로킹 I/O

  • 블로킹 I/O : I/O 요청 함수 호출은 작업 완료될때까지 스레드 실행 차단
    같은 스레드 내에서 여러 연결 처리 못함
    각각 동시 연결 처리하기 위해 개별 스레드 혹은 프로세스 사용
    스레드는 비용이 저렴하지 않는다. 메모리 CPU 사이클 낭비

  • 논블로킹 I/O : I/O 요청이 와도 기다리지 않고 항상 즉시 반환
    호출시간에 결과 없으면, 미리 정의된 상수 반환 --> 그순간 사용 가능한 데이터 없다고 알림
    실제 데이터가 반환 될 때 까지 루프 내에서 리소스 적극적 폴링 하는것 : 바쁜대기 (busy-waiting) 사용할 수 없는 리소스 반복하는 데 CPU 시간 낭비

    동기 이벤트 디멀티플렉서 (= 이벤트 통지 인터페이스) : 여러 리소스 중에 I/O가 완료되었을때 새 이벤트 반환 --> 새 이벤트 있을 때 까지는 블로킹됨

    멀티플렉싱 : 여러신호를 하나로 합성해서 제한된 수용범위 내에 매개체를 통해 쉽게 전달하는 방법
    디 멀티 플렉싱 : 원래 대로 다시 분할

  • 리액터 패턴 : I/O 작업에 연관된 핸들러를 가진다.
    일련의 관찰 대상 리소스에서 새 이벤트를 사용할 수 있을 때까지 블로킹하여 I/O를 처리하고 각 이베느를 관련된 핸들러에 전달함으로써 반응

0개의 댓글