[React] Node.js


Node.js란

  • 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임입니다.
  • Node.js는 이벤트 기반, 논블로킹 I/O 모델을 사용해서 가볍고 효율적입니다.
  • Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈소스 라이브러리 생태계입니다.

Node.js 특징

Non blocking I/O

Single Thread Model

우선 프로세스와 스레드에 대해 알아 보겠습니다.

프로세스

  • 운영체제로부터 자원을 할당받는 작업의 단위

스레드

  • 프로세스가 할당 받은 자원을 이용하는 실행의 단위

싱글 스레드의 장점

  • 자원 접근에 대한 동기화를 신경쓰지 않아도 됩니다.

  • context switch 작업을 요구하지 않아서, 전환 비용이 들지 않는다.

context switch : 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하기 위해, 이전의 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다.

싱글 스레드의 단점

  • 단일 스레드 방식이기 때문에 하나의 작업 자체가 많이 걸리는 웹사이트에는 어울리지 않는다.

  • 에라가 나면 프로세스가 내려간다.

Node.js 장점

  • 이벤트 기반 비동기 방식이라 서버 무리가 적다