Information Security ˗ˋˏ ♡ ˎˊ˗

OS/Web

[Node.js] Node.js 정의 및 특징

토오쓰 2021. 7. 13. 14:23

 

정의

확장성 있는 네트워크 애플리케이션 개발에 사용되는 소프트웨어 플랫폼

주로 백엔드 서비스 구축에 사용

Google Chrome V8 자바스크립트 엔진을 기본으로 동작

 

 

내부 동작 원리

Single Thread 기반의 Event Loop (libuv) 돌면서 요청을 처리하며, 시스템적으로 non-blocking io 지원하지 않는 io 호출이 있는 경우, 이를 비동기 처리하기 위해서 내부의 Thread pool (libio) 별도 이용하여 처리한다.

- libuv = 비동기 I/O 집중하는 멀티 플랫폼 라이브러리

 

 

특징

- Non-blocking I/O: 호출되는 함수가 바로 제어권을 넘겨줘서 다른 작업 진행 가능

- 이벤트 기반 Asynchronous(비동기식): 파일 쓰기를 요청하고 바로 리턴이 오기 때문에 CPU 다른 일을 해도 된다. 동시에 다음 요청을 받을 있어서 빠른 속도로 일을 처리할 있다.

- 자바스크립트 기반으로 되어있어 클라이언트/서버를 고려하지 않으며 독립적 수행이 가능

- 웹 백엔드/프런트엔드 모두 개발 가능

- 웹서버나 WAS가 필요 없고 Node.js 그 자체가 웹서버로 동작한다.

 

 

패키지 저장소 NPM(Node Package Modules)

- Node.js 모듈을 관리해주는 패키지 관리자

- 명령어로 쉽게 모듈을 설치하여 js 라이브러리를 사용할 수 있고 개발한 모듈을 다른 이들이 사용할 수 있도록 저장소에 배포할 수 있다.

 

 

 

 

 

참고

https://nodejs.org/en/

https://psyhm.tistory.com/9  시스템 구조

https://cyberx.tistory.com/135

https://yonghyunlee.gitlab.io/node/nodejs-structure/