[Docker] Docker와 pm2를 함께 사용하는 것이 불리한 이유
ㅁ 관련글
ㅇ [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 자체의 기능을 활용하는 것이 더 효율적이고 관리하기 쉬운 방법으로 여겨진다.
ㅁ 함께 보면 좋은 사이트