Node? (1)

BirdsOnTree·2022년 12월 29일
0

Node.js

목록 보기
1/8
post-thumbnail

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

노드란?

  • 서버의 역할도 수행할 수 있는 자바스크립트 런타임이다.
  • 노드로 자바스크립트로 작성된 서버를 실행할 수 있다.
  • 서버 실행을 위해 피룡한 http/https/http2 모듈을 제공한다.

런타임: 특정 언어로 만든 프로그램들을 실행할 수 있게 해주는 가상 머신의 상태

노드의 특징

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

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

  1. 프로세스 vs 스레드
  • 노드 프로세스는 멀티 스레드이지만 직접 다룰 수 있는 스레드는 하나이기 때문에 싱글 스레드라고 표현한다.
  • 노드는 주로 멀티 스레드 대신 멀티 프로세스를 활용한다.
  • 노드는 14버전부터 멀티스레드를 사용 가능하긴 하다.

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

  1. 싱글 스레드
    싱글 스레드라 주어진 일을 하나밖에 처리하지 못한다.
    대신 논 블로킹 모델을 채택하여 일부 코드( I/O )를 백그라운드(다른 프로세스)에서 실행 가능하다.

  2. 멀티 스레드 모델과의 비교
    싱글스레드 모델은 에러를 처리하지 못하는 경우에는 멈추게 된다. ( 프로그래밍 난이도가 쉽고, CPU, 메모리 자원을 적게 사용한다. )
    멀티스레드 모델은 에러 발생 시 새로운 스레드를 생성하여 극복한다. ( 단, 새로운 스레드 생성이나 놀고 있는 스레드 처리에 비용이 발생하고 프로그램이 난이도가 어렵다. 그리고 스레드 수 만큼 자원을 많이 사용한다. )

노드의 역할

  1. 서버로서의 노드
    서버: 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램
    클라이언트: 서버에 요청을 보내는 주체
    노드는 서버가 아니다.

  1. 서버 외의 노드
    자바스크립트 런타임이기 때문에 용도가 서버에 한정되지 않는다.
    웹, 모바일, 데스크탑 애플리케이션등 사용이 가능하다.

0개의 댓글