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는 모니터링 및 프로세스의 현재 상태를 시각적으로도 잘 보여주고, 여러 프로세스를 관리할 때 용이하게 되어있어서 애용하는 도구다. 무엇보다 세련되게 생겼다.
기존 pm2 1.x.x 버전을 쓰고 있는 서버가 있어서, 이번에 배포 환경 정리하면서 pm2 로 업그레이드하였고, pm2 2.x에서 나온 ecosystem을 활용했다.