본문 바로가기
Node.js

Nodemon/PM2

by Mecodata 2023. 5. 30.

Nodemon(Node moniter)

- npm install nodemon

- 노드가 실행하는 파일이 속한 디렉터리를 감시하고 있다가 파일이 수정되면 자동으로 노드 애플리케이션을 재시작하는 확장 모듈 => 애플리케이션을 개발할 때 주로 사용

- 기존에 [node 파일명]으로 실행했던 것과 다르게 [nodemon 파일명]으로 실행

- [node 파일명] 방식 => 서버 구동 중에 코드를 수정하여 반영하려면 서버를 개발자가 수동으로 끈 후 재실행

- [nodemon 파일명] 방식 => 서버 구동 중에 코드를 수정한 후 파일을 저장하면 서버가 자동으로 재실행하면서 변경사항 반영

PM2(Process Manager)

- npm install pm2

- Node.js 서버 운영 패키지 => 애플리케이션 배포에 주로 사용

- node나 nodemon으로 서버 실행 => 에러가 발생하면 서버가 꺼짐 (재실행 X)

- pm2로 서버 실행 => 에러가 발생하면 서버가 꺼진 후 다시 재실행 (재실행 O)

- 멀티 코어 혹은 하피어 스레딩을 사용할 수 있게 해줌 (Node.js는 싱글 스레드 기반)

- 콘솔 창을 닫아도 따로 kill을 하지 않는한 서버가 24시간 계속 실행됨

- 클라이언트 요청을 여러 노드 프로세스에 고르게 분배함 (로드 밸런싱)

- 멀티 스레딩이 아니라 자원을 공유하지 못함

Docker로 배포 시 예시 코드

FROM node:18.15.0
RUN mkdir -p /app
WORKDIR /app
COPY package*.json /app/
ADD . /app
RUN npm install
RUN npm install -g pm2
COPY .env .env
COPY . .
EXPOSE 3000
CMD [ "pm2-runtime", "start", "index.js" ]

 

※ 개발 => nodemon, 배포 => pm2

'Node.js' 카테고리의 다른 글

Node.js 클러스터  (0) 2023.08.28
Node.js 정의 및 장단점  (0) 2023.06.06
Node.js Swagger 적용  (0) 2023.06.03
Socket.io  (0) 2023.05.31
Winston (Node.js 로그 관리)  (0) 2023.05.26

댓글