[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 장점
- 이벤트 기반 비동기 방식이라 서버 무리가 적다