백엔드 Node.js 멘토링 준비(1)

‍박소연·2023년 10월 3일

노드의 특성


이벤트 기반

이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식

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

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

이벤트 리스너(콜백 함수 등록) → 이벤트 발생 → 이벤트 리스너(콜백 함수 호출)

논블로킹 I/O

오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되게 하고, 나중에 오래 걸리는 함수를 실행한다. 노드에서는 코드가 동시에 돌아가는 경우가 거의 없다!

동기
순서대로 실행

비동기
순서대로 실행되지 않을 수 있음

프로세스와 스레드

노드는 주로 멀티 스레드 대신 멀티 프로세스를 활용한다.

프로세스

실행 중인 프로그램, 프로세스 간 자원 공유 X

  • 데이터 + Os로부터 할당받은 자원 + 스레드로 구성된다.
    • 모든 프로세스에는 하나 이상의 스레드가 존재한다.

멀티 태스킹

여러 개의 프로세스를 실행하는 것

스레드

프로세스 내에서 실행되는 작업의 단위, 부모 프로세스 자원 공유

  • 프로세스의 메모리 공간의 크기에 따라 생성할 수 있는 개수의 정도가 달라진다.

멀티 쓰레딩

하나의 프로세스 내에서 둘 이상의 쓰레드가 동시에 작업을 수행하는 것

멀티 쓰레딩의 장단점

장점

  • CPU 사용률의 향상: 하나의 CPU가 아주 짧은 시간 동안 여러 작업을 번갈아 가며 수행함으로써 여러 작업들이 모두 동시에 수행되는 것처럼 보인다.

단점

  • 동기화(Synchronization)
  • 교착상태(Deadlock)

싱글 스레드


서버로서의 노드

서버
네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램

클라이언트
서버에 요청을 보내는 주체(브라우저, 데스크탑 프로그램, 모바일 앱, 다른 서버에 요청을 보내는 서버)


노드의 장점은 I/O 작업이 많은 서버에 적합하다는 점이고, 단점은 CPU 작업이 많은 서버로는 부적합하다는 점이다.

I/O 작업이 많은 작업과 CPU 작업이 많은 서버가 각각 뭔지,,,

모듈 만들기


노드는 자바스크립트 코드를 모듈로 만들 수 있다.

0개의 댓글