DevOps/Docker

[Docker] Docker와 pm2를 함께 사용하는 것이 불리한 이유

기록하는 백앤드개발자 2024. 10. 27. 10:10
반응형

ㅁ 관련글

 [Node.js] PM2를 사용한 Node.js 관리하기(PM2 사용법 정리)
 [Docker] Docker와 pm2를 함께 사용하는 것이 불리한 이유
 [Docker] Express 서버를 Docker에서 PM2로 기동하는 방법

 [Grafana] grafana k6로 테스트 환경 구성(grafana, influxdb, k6)

ㅁ 들어가며

ㅇ node 서비스를 Node process manager인 pm2로 관리하고 있는데, 이를 docker 환경으로 이관 중이다.

ㅇ docker와 pm2가 둘다 프로세스를 관리하는 주체이기에 충돌 문제점에 대해서 조사해 보았다.

 

ㅁ 기능 중복

ㅇ Docker와 PM2 모두 프로세스 관리자 역할을 한다.

 두 도구 모두 로그 전달, 자동 재시작 등의 기능을 제공한다.

 

ㅁ 컨테이너 관리의 어려움

ㅇ PM2가 컨테이너 내에서 여러 프로세스를 실행하면 Docker의 모니터링이 어려워진다.

ㅇ PM2가 문제 발생 시 자동으로 재시작하면 Docker의 모니터링 시스템에서 이를 감지할 수 없다.

 

ㅁ 리소스 낭비

ㅇ Docker 컨테이너 내에서 PM2를 사용하면 불필요한 메모리 소비가 증가할 수 있다.

 

ㅁ 프로세스 관리의 복잡성

ㅇ PM2가 워커 프로세스를 관리하기 때문에 Docker가 개별 프로세스의 문제를 감지하고 관리하기 어려워진다.

 

ㅁ 대안

ㅇ Docker와 PM2 대신 다음과 같은 방법을 고려할 수 있다.

 ㄴ Docker의 restart 옵션을 사용하여 자동 재시작 구현

 ㄴ 여러 컨테이너를 실행하여 멀티 프로세싱 구현

 ㄴ Nginx를 사용한 로드 밸런싱으로 무중단 배포 구현

 

ㅁ 마무리

Docker와 PM2를 함께 사용하는 것은 일반적으로 권장되지 않는다. 위의 이유처럼 Docker 환경에서는 PM2 대신 Docker 자체의 기능을 활용하는 것이 더 효율적이고 관리하기 쉬운 방법으로 여겨진다.

 

ㅁ 함께 보면 좋은 사이트

Docker Integration

what is the point of using pm2 and docker together?

[Docker] Docker, Nginx, Node.js 환경에서 서비스 무중단 배포하기

반응형