Node.js란?
JS를 구동시키는 런타임이며 여기서 런타임이란 프로그래밍 언어가
구동되는 환경을 뜻한다. 즉 실행 환경을 뜻하며 Node.js를 설치 시
웹이 아닌 컴퓨터에서 JS로 작성된 코드를 구동시킬 수 있다.
Node.js의 탄생 배경
JS는 서버 환경에서 사용하기에는 느린 속도로 인해 웹 브라우저 환경에서만 실행이 가능했었지만 V8엔진의 등장 이후 속도가 빨리진 덕분에 웹 브라우저 외의 환경에서 사용할 수 있도록 만들어진 표준이 바로 Node.js이다.
V8 엔진은 구글에서 개발한 오픈 소스 JS 엔진으로 웹 브라우저에서
JS 코드를 실행하는 데에 사용되며 C++ 언어로 작성되었다.
Node.js의 특징
Node.js는 다음과 같은 특징이 있다
- 비동기 및 이벤트 기반: Node.js는 이벤트 루프를 기반으로 비동기 처리를 지원한다. 작업을 요청하고 완료될 때까지 기다리지 않고 다른 작업을 계속 진행할 수 있다. 그래서 높은 성능과 효율성을 자랑하고, 대규모 네트워크 애플리케이션에 적합하다.
- 단일(싱글) 스레드: 기본적으로 Node.js는 단일 스레드 환경에서 실행된다. 단일 스레드가 모든 요청을 처리하지만, 비동기 I/O 작업 덕분에 여러 작업을 동시에 처리할 수 있다. 그래서 메모리 사용량이 적고 스레드 간 자원 경쟁 문제를 피할 수 있다.
- 빠른 성능: V8 JavaScript 엔진 덕분에 Node.js는 매우 빠른 실행 속도를 자랑한다. V8 엔진이 JavaScript 코드를 네이티브 기계어로 변환해서 실행하기 때문에 빠른 코드 실행이 가능하다.
- 단일 언어: 서버와 클라이언트 모두에서 JavaScript를 사용할 수 있다. 그래서 개발자들이 서버와 클라이언트 양쪽에서 같은 언어를 사용해서 개발할 수 있다.
- 빠른 개발 주기: JavaScript를 사용해서 코드 작성과 배포가 쉽고 빠르게 이루어진다. 개발자들이 빠르게 개발하고, 테스트하고, 배포할 수 있다. 비동기 I/O와 이벤트 기반 아키텍처 덕분에 서버 응답 속도도 빨라져서 전체 개발 주기를 단축할 수 있다.
Node.js의 장점
-
Non-blocking 덕분에 동시에 많은 요청이 발생하거나 오래걸리는 요청이 있더라도
멈추거나 대기시간이 발생하지 않으며 덕분에 채팅이나 SNS에서 주로 사용된다.
-
작업을 기다리는 동안 다른 작업을 계속 진핼할 수 있는 비동기 I/O 덕분에 복잡한 코드가
간결해지고 이해하기 쉬워져 빠른 개발이 가능하며 이러한 장점 덕분에 개발자들이
애플리케이션의 주요 기능을 신속히 구현할 수 있어 프로젝트의 개발 속도가 빨라진다.
Node.js의 단점
-
모든 요청이 하나의 스레드에서 처리되기 때문에 많은 CPU 연산이 요구될 시 하나의 스레드가 감당하기 어렵다. 따라서 이미지/비디오 처리, 대규모 데이터 처리와 같이 CPU 사용량이 많은 작업을 위한 서버로는 권장하지 않는다.
Node.js 참고 블로그
장점/단점 참조 블로그