Node.js
- Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임 환경
- 서버 사이드 애플리케이션 개발에 주로 사용되는 소프트웨어 플랫폼
- 브라우저 외부 환경에서 자바스크립트 애플리케이션 개발에 사용
장점
- 모든 API가 비동기로 동작
- HTTP 서버 모듈 내장 => 별도의 웹서버 설치 필요 X
- 이벤트 기반 => 이벤트가 발생할 때 미리 지정해둔 작업 수행
- 논 블로킹 I/O = 오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되게 하고, 나중에 오래 걸리는 함수를 실행 (빨리 처리할 수 있는 작업부터 실행)
- 노드 프로세스는 멀티 스레드이지만, 직접 다룰 수 있는 스레드는 하나(싱글 스레드)
- npm을 기반으로 다양한 모듈 제공 => 효율성이 좋음
※ npm(Node Package Manager) = JavaScript 패키지 매니저로 Node.js에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할 + 패키지 설치 및 관리를 위한 CLI(Command line interface) 제공
- Javascript 언어로 backend 개발 가능하게 해줌
단점
- 모든 API가 비동기로 동작하기 때문에 로직이 복잡하면 콜백 지옥에 빠짐
- 싱글 스레드라서 하나의 작업이 오래 걸리는 웹 서비스의 경우 애플리케이션의 성능이 저하될 수 있음
- 세션을 공유할 경우 redis와 같은 인프라가 추가적으로 필요함
사용하기 적합한 상황
- 하나의 언어로 Front/backend 개발해야 할 때 (JavaScript)
- 입출력이 자주 발생하는 서비스 (채팅이나 알람)
- 비동기 방식에 어울리는 서비스 (스트리밍이나 채팅)
- 빠르게 환경 구성을 하여 작업해야 하는 경우
'Node.js' 카테고리의 다른 글
Node.js로 Redis 연결 (0) | 2023.09.05 |
---|---|
Node.js 클러스터 (0) | 2023.08.28 |
Node.js Swagger 적용 (0) | 2023.06.03 |
Socket.io (0) | 2023.05.31 |
Nodemon/PM2 (0) | 2023.05.30 |
댓글