PM2의 숨겨진 기능: 알려지지 않은 팁과 트릭
PM2의 숨겨진 기능: 알려지지 않은 팁과 트릭
PM2는 Node.js
애플리케이션 관리 도구로 널리 알려져 있습니다. 다중 프로세스 관리는 물론, 로드 밸런싱, 로깅, 모니터링 등 다양한 기능을 제공합니다. 그러나 PM2의 기능 중 상당수는 널리 알려지지 않았습니다. 이 글에서는 그러한 숨겨진 기능과 트릭들을 알아보고, 이를 활용하여 애플리케이션 관리를 더욱 효율적으로 하는 방법을 살펴보겠습니다.
1. 환경 변수 셋업하기
많은 개발자들이 ecosystem.config.js
를 사용하여 다양한 환경 설정을 관리합니다. 하지만 PM2는 더 간편하게 환경 변수를 설정할 수 있는 옵션을 제공하고 있습니다. --env
플래그를 사용하면, 특정 환경 변수를 지정할 수 있습니다.
예를 들어, 다음과 같이 사용할 수 있습니다:
shpm2 start app.js --env production
이렇게 하면 NODE_ENV
가 자동으로 production으로 설정됩니다. 이 방법은 다양한 배포 환경에서 유용하게 활용될 수 있습니다.
2. 로드밸런싱 기능 활용하기
PM2의 cluster mode
는 고가용성을 위해 분산된 여러 인스턴스를 운영할 수 있게 해줍니다. 애플리케이션이 단일 스레드로 동작하는 Node.js
의 특성 상, 다중 코어 사용이 필수입니다.
다음은 cluster mode
를 활성화하는 방법입니다:
shpm2 start app.js -i max
위 명령은 최대 가능한 모든 CPU 코어를 활용하여 인스턴스를 생성합니다. 이를 통해 부하를 효율적으로 분산시키고 고가용성을 달성할 수 있습니다.
3. 로깅과 파일 로테이션
PM2에는 로깅 기능이 내장되어 있지만, 로그 파일이 너무 커지면 문제가 발생할 수 있습니다. 이를 방지하기 위해 PM2는 logrotate
모듈을 제공합니다.
다음 명령을 통해 logrotate
모듈을 설치할 수 있습니다:
shpm2 install pm2-logrotate
설치 후, 로그 파일을 자동으로 로테이션하고, 원하는 조건에 따라 파일을 삭제하거나 아카이브할 수 있습니다. 이를 통해 로그 파일의 무분별한 증가를 효과적으로 관리할 수 있습니다.
4. 간편한 서버 관리
PM2의 원격 관리 기능을 사용하면, 여러 서버를 하나의 대시보드에서 관리할 수 있습니다. pm2
명령어를 확장하여, 원격 서버에 직접 접근할 필요 없이 관리할 수 있습니다.
다음은 원격 서버를 설정하는 예시입니다:
shpm2 deploy ecosystem.config.js production setup pm2 deploy ecosystem.config.js production
이 명령어는 ecosystem.config.js
파일에 정의된 설정을 기준으로, 원격 서버에서 자동으로 애플리케이션을 배포하고 관리합니다.
5. 앱 재시작 없이 환경 변수 변경하기
보통 환경 변수를 변경할 때 애플리케이션을 재시작해야 하지만, PM2는 이를 더욱 간편하게 관리할 수 있습니다. --update-env
플래그를 사용하면 환경 변수만 갱신되고 기존의 프로세스는 재시작되지 않습니다.
shpm2 restart app --update-env
이 방법을 통해 애플리케이션의 가동 중단 시간을 최소화할 수 있습니다.
6. Custom Actions 설정
PM2 custom actions
를 사용하여, 특정 작업을 트리거로 설정할 수 있습니다. 이는 스크립트나 커맨드를 주기적으로 실행해야 할 때 유용합니다.
다음은 custom action을 설정하는 예시입니다:
jsmodule.exports = { apps : [{ name: 'api', script: 'app.js', instances: 2, exec_mode: 'cluster', env: { NODE_ENV: 'development' }, env_production : { NODE_ENV: 'production' } }, { name: 'custom_action', script: './scripts/custom_action.js', cron_restart: '0 0 * * *', watch: false, exec_mode: 'fork' }] }
이렇게 하면 매일 자정에 custom_action.js
스크립트가 실행됩니다.
결론
PM2의 알려지지 않은 다양한 기능들은 효율적인 애플리케이션 관리에 큰 도움이 됩니다. 환경 변수 설정, 로드밸런싱, 로깅, 원격 관리 등의 기능을 활용하면 더욱 편리하고 강력한 서버 운영이 가능합니다. 이러한 기능들을 잘 활용하여 PM2의 모든 잠재력을 최대한 끌어내 보세요.