NodeJS
: Chrome V8 javaScript 엔진으로 빌드된 JavScript 런타임
: 웹 브라우저에서만 실행되던 JavScript를 브라우저 외 환경에서 빠른 속도로 사용하기 위해 만들어짐
- NodeJS는 웹 서버다?
: javaScript로 작성된 서버를 구동시킬 수 있는 환경을 제공하는 것일 뿐
: HTTP 라이브러리를 내장하고 있으나 웹 서버 자체가 아니라 웹 서버를 만들 수 있는 환경임
NodeJS의 특징
: Non Blocking (한 프로세스에서 한 작업의 실행을 위해 다른 작업의 완료를 기다리는 것)
: Single Thread (하나의 스레드로만 동작하는 것)
: 기존 웹 서버는 스레드 기반으로 I/O를 처리했으나, NodeJS는 대규모 네트워크 서비스 개발을 위해 고안되어 이벤트 기반으로 처리
- 예시
: 작업 A와 B를 준비하고 A작업에 대한 이벤트가 발생하면 A작업을 시작
: B작업에 대한 이벤트가 발생하면 B작업을 시작
: A작업중 B 작업을 해야한다면 B 작업 이벤트를 발생 시켜 A작업을 잠시 멈추고 B 작업을 수행
=> 이벤트를 기반으로 비동기로 처리
- 이벤트 기반 처리의 장점
: 요청마다 스레드를 생성하지 않기 때문에 멀티 스레드 환경에서 보다 적은 메모리를 필요로 함
: 스레드가 하나 이기 때문에 동시에 똑같은 자원을 필요로 하는 상황이 발생하지 않음
: 따라서 많은 요청이 발생하는 환경에서 효율적으로 동작
- NodeJS를 사용하면 좋은 경우
: 이벤트로 처리되는 작업의 시간이 짧고 요청의 수가 많은 시스템
: CPU의 시간을 많이 잡아먹는 작업의 경우 병렬처리를 하는 NodeJS가 부적합
Reference
node.js란 무엇이고 node.js를 언제 사용해야 할까?
Node.js 란? Node.js 란 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다. 여기서는 V8 엔진이 다른 JS 엔진보다 속도가 빠르다는 것만 기억하도록 하고, 런타임에 초점을 맞추자. 런타임은 프로그
anywaydevlog.tistory.com
'Programming > JavaScript' 카테고리의 다른 글
| 백엔드 입문자를 위한 자바스크립트 생태계 (0) | 2023.07.07 |
|---|---|
| 코루틴 (CoRoutine)과 서브루틴 (SubRoutine)의 차이 (1) | 2023.06.05 |
| undefined / null / NaN / 0 / '' 의차이 (0) | 2023.05.19 |
| NodeJS 백로그 관리 (0) | 2023.05.15 |
| JavaScript 패키징 도구 (번들링 도구) (0) | 2023.04.24 |
