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
'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 |