[node.js교과서] 노드 & 자바스크립트

day024·2025년 7월 6일

HTML&CSS&JS

목록 보기
15/15

node.js교과서

node.js 강의를 듣고 정리한 내용입니다.

1.2 노드의 정의

노드 : Node.js는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이다.

node가 뜬 이유 : 싱글스레드&비동기 I/O

1.3 노드의 특성

1.3.1 이벤트 기반

  • 이벤트 : 클릭, 네트워크 요청
  • 이벤트 리스너 : 이벤트를 등록하는 함수
  • 콜백함수 : 이벤트가 발생했을 때 실행될 함수

1.3.2 논블로킹 I/O

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

  • 논 블로킹 방식 하에서 일부 코드는 백그라운드 병렬 실행

  • 일부 코드 : I/O 작업( 네트워크 요청) 압축, 암호화 등

    나머지 코드는 블로킹

  • I/O 작업이 많을때 노드 활용성이 극대화 된다./

1.3.3 프로세스 vs 스레드

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

노드 프로세스는 멀티 스레드이지만 직접 다룰 수 있는 스레드는 하나이기 때문에 싱글스레드라고 한다.

노드는 멀티 스레드 대신 멀티 프로세스 활용

싱글스레드 1개 = 코어1개 사용
싱글스레드라 주어진 일을 하나 밖에 처리하지 못함

  • 블로킹이 발생하면 모두 대기해야함

노드의 방식

주문만 먼저 받고 ->주방으로

  • 논 블로킹 모델을 채택하여 일부코드(I/O)를 백그라운드에서 실행 가능
    - 요청을 받고 완료될때 응답
    - I/O 관련 코드가 아닌 경우 싱글 스레드, 블로킹 모델과 같아짐

  • 싱글 스레드 모델은 에러를 처리하지 못하는 경우 멈춘다.

  • 멀티 스레드 모델은 에러 발생시 새로운 스레드를 생성하여 극복한다.
    - 단 새로운 스레드 생성, 놀고 있는 스레드 처리에 대한 비용 발생

    • 프로그램 복잡, 자원사용 많아짐

1.4 서버로서의 노드

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

클라이언트: 서버에 요청을 보내는 주체 (브라우저, 데탑, 모바일 앱.. )

노드 != 서버, 그러나 노드는 서버를 구성할 수 있게 하는 모듈

CPU 작업을 위해 AWS 같은 별도 서비스 사용
페이팔 넷플 등 메인 또는 서브서버로 이용

자바스크립트 런타임이기 대문에 용도가 서버에만 한정되지 않는다.
웹, 모바일 데탑 어플리케이션에도 사용한다.

profile
개발하는 감자

0개의 댓글