Dev Tools/amazon aws사용관련

pm2와 config를 활용한 node.js app 실행 환경 관리

JaeHyunShin 2021. 2. 3. 17:29

node.js 앱을 배포하다 보면, 모니터링,프로세스 관리 등 

 

pm2에에는 기본 제공 로드 밸런서가 포함되어 있다. PM2를 이용하면 앱을 항상 정상 작동 상태로 유지하고, 시스템 가동 중단 없이 앱을 다시 로드할 수 있다. 

pm2 + config

pm2 의 ecosystem을 활용하면 실행 시에 NODE_ENV 를 명시해서 넘길 수 있다.

pm2 ecosystem.config.js --env production

// ex) ecosystem.config.js
{
  "apps" : [{
    "name"        : "worker",
    "script"      : "./worker.js",
    "watch"       : true,
    "env": {
      "NODE_ENV": "development"
    },
    "env_production" : {
       "NODE_ENV": "production"
    }
  }]
}

config 패키지를 사용하면 application 내에서 손쉽게 configuration에 접근할 수 있다. 물론 환경별로 configuration을 관리할 수 있고, default 값에 변경되는 값만 override 할 수도 있다.

캡스톤 디자인 때를 회고하면, config.js 파일은 늘 보안상 문제가 되어 깃에 업로드 하지 않았던 기억이 있다.

 

전달받은 NODE_ENV 이름에 맞는 config 파일은 config/ 디렉토리 안에 추가해주면, application 전체에서 config로 쉽게 접근이 가능하다.

캡디에서는 nodemon을 사용했었고 이번에는 pm2를 사용해보려한다. 

ORM또한 사용할 것이다. Docker 개발 환경도 구축하고 들어간다.  

forever,nodemon,pm2중에서도 pm2는 모니터링 및 프로세스의 현재 상태를 시각적으로도 잘 보여주고, 여러 프로세스를 관리할 때 용이하게 되어있어서 애용하는 도구다. 무엇보다 세련되게 생겼다.

http://pm2.keymetrics.io/

기존 pm2 1.x.x 버전을 쓰고 있는 서버가 있어서, 이번에 배포 환경 정리하면서 pm2 로 업그레이드하였고, pm2 2.x에서 나온 ecosystem을 활용했다.