런타임 환경 (js 실행 환경)
Node.js Chrome 의 V8 자바스크립트 엔진 기반으로
구축된 자바스크립트 런타임 서버 측에서 JavaScript 코드를 실행 가능
비동기 및 이벤트 기반
Node.js 비차단 이벤트 기반 아키텍처를 사용하므로
확장 가능한 네트워크 애플리케이션 빌드하는데 적합
단일 스레드
비차단 I/O 호출을 사용하여 단일 스레드에서 작동하므로
스레드 관리의 부담없이 수천 개의 동시 연결 처리 가능
NPM (Node Package Manager)
NPM 을 통해 사용할 수 있는 오픈 소스 라이브러리의 방대한 생태계 보유
Node 를 통해 다양한 JavaScript 애플리케이션 실행 가능
서버를 실행하는데 제일 많이 사용
* 확장성이 있는 네트워크 애플리케이션 개발에 사용되는 SW 플랫폼
* 특히 서버 사이트에서 많이 사용
* JavaScript 사용
* 내장 HTTP 서버 라이브러리 포함하고 있어
웹 서버에서 아파치 등의 별도 SW 없이 동작 가능
Node.js 사용이유
JavaScript 를 사용 (독립적인 언어가 아닌 스크립트 언어)
웹 브라우저가 없으면 사용 불가능
그러나 Node.js 를 설치하게 되면 터미널에서 Node.js 를 입력하여
브라우저 없이 바로 실행 가능
📰 정리
이벤트 기반
이벤트 루프
논 블로킹 I/O
싱글 스레드
📢 핵심
- 자바스크립트 런타임
- 서버 만들 수 있음
- NPM 사용
- 이벤트 기반으로 이벤트 루프로 작업
- 싱글 스레드이며 논 블로킹 I/O 로 작업
언제 사용하면 좋은지 (Node.js / DJango / Spring)
Node.js
: 성능과 확장성 필요할 때, 실시간 애플리케이션에서 많은 동시 연결 처리
DJango
: 신속한 개발 기능으로 인해 선택
Spring
: 기업 애플리케이션과 더 크고 복잡한 시스템에서 선호
Express.js
웹 및 모바일 애플리케이션을 개발하기 위한 강력한 기능 세트 제공
웹 애플리케이션 RESTFul API 를 빠르게 빌드하는데 자주 사용
주요 특징들
HTTP.js
HTTP 를 통해 데이터 전송 (서버 및 클라이언트 기능 만드는 데 사용)
주요 특징들
Fastify.js
빠르고 오버 헤트가 적은 웹 프레임 워크
주요 특징들
nodemon
Node.js 응용 프로그램의 변경 사항을 모니터링하고 서버를 자동으로 다시 시작
하는 유틸리티
프로젝트의 개발 단계에서 특히 유용, 생산성 up