PM2의 숨겨진 기능: 알려지지 않은 팁과 트릭

작성일 :

PM2의 숨겨진 기능: 알려지지 않은 팁과 트릭

PM2는 Node.js 애플리케이션 관리 도구로 널리 알려져 있습니다. 다중 프로세스 관리는 물론, 로드 밸런싱, 로깅, 모니터링 등 다양한 기능을 제공합니다. 그러나 PM2의 기능 중 상당수는 널리 알려지지 않았습니다. 이 글에서는 그러한 숨겨진 기능과 트릭들을 알아보고, 이를 활용하여 애플리케이션 관리를 더욱 효율적으로 하는 방법을 살펴보겠습니다.

1. 환경 변수 셋업하기

많은 개발자들이 ecosystem.config.js를 사용하여 다양한 환경 설정을 관리합니다. 하지만 PM2는 더 간편하게 환경 변수를 설정할 수 있는 옵션을 제공하고 있습니다. --env 플래그를 사용하면, 특정 환경 변수를 지정할 수 있습니다.

예를 들어, 다음과 같이 사용할 수 있습니다:

sh
pm2 start app.js --env production

이렇게 하면 NODE_ENV가 자동으로 production으로 설정됩니다. 이 방법은 다양한 배포 환경에서 유용하게 활용될 수 있습니다.

2. 로드밸런싱 기능 활용하기

PM2의 cluster mode는 고가용성을 위해 분산된 여러 인스턴스를 운영할 수 있게 해줍니다. 애플리케이션이 단일 스레드로 동작하는 Node.js의 특성 상, 다중 코어 사용이 필수입니다.

다음은 cluster mode를 활성화하는 방법입니다:

sh
pm2 start app.js -i max

위 명령은 최대 가능한 모든 CPU 코어를 활용하여 인스턴스를 생성합니다. 이를 통해 부하를 효율적으로 분산시키고 고가용성을 달성할 수 있습니다.

3. 로깅과 파일 로테이션

PM2에는 로깅 기능이 내장되어 있지만, 로그 파일이 너무 커지면 문제가 발생할 수 있습니다. 이를 방지하기 위해 PM2는 logrotate 모듈을 제공합니다.

다음 명령을 통해 logrotate 모듈을 설치할 수 있습니다:

sh
pm2 install pm2-logrotate

설치 후, 로그 파일을 자동으로 로테이션하고, 원하는 조건에 따라 파일을 삭제하거나 아카이브할 수 있습니다. 이를 통해 로그 파일의 무분별한 증가를 효과적으로 관리할 수 있습니다.

4. 간편한 서버 관리

PM2의 원격 관리 기능을 사용하면, 여러 서버를 하나의 대시보드에서 관리할 수 있습니다. pm2 명령어를 확장하여, 원격 서버에 직접 접근할 필요 없이 관리할 수 있습니다.

다음은 원격 서버를 설정하는 예시입니다:

sh
pm2 deploy ecosystem.config.js production setup
pm2 deploy ecosystem.config.js production

이 명령어는 ecosystem.config.js 파일에 정의된 설정을 기준으로, 원격 서버에서 자동으로 애플리케이션을 배포하고 관리합니다.

5. 앱 재시작 없이 환경 변수 변경하기

보통 환경 변수를 변경할 때 애플리케이션을 재시작해야 하지만, PM2는 이를 더욱 간편하게 관리할 수 있습니다. --update-env 플래그를 사용하면 환경 변수만 갱신되고 기존의 프로세스는 재시작되지 않습니다.

sh
pm2 restart app --update-env

이 방법을 통해 애플리케이션의 가동 중단 시간을 최소화할 수 있습니다.

6. Custom Actions 설정

PM2 custom actions를 사용하여, 특정 작업을 트리거로 설정할 수 있습니다. 이는 스크립트나 커맨드를 주기적으로 실행해야 할 때 유용합니다.

다음은 custom action을 설정하는 예시입니다:

js
module.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의 모든 잠재력을 최대한 끌어내 보세요.