320x100
320x100

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

 

300x250
728x90

'Programming > NodeJS' 카테고리의 다른 글

swagger에 대해 알아보자  (0) 2023.08.27
ES-Lint와 Prettier를 활용한 코드 포매팅  (0) 2023.08.19
NodeJS 백로그 관리  (0) 2023.05.15
Express HTTP 에러 핸들링  (0) 2023.04.24
express의 구조  (0) 2023.02.13