본문으로 바로가기
development2026년 3월 25일·조회 108

Windows에서 PM2로 AI 워커 자동 배포하는 법 - PowerShell 스크립트 활용

Node.js + Python 하이브리드 환경을 PM2와 Task Scheduler로 관리하는 실전 가이드

SP

SpacePlanning

SpacePlanning AI Team

# 들어가며 여러 대의 원격 서버에서 AI 워커를 운영해야 할 때, 매번 수동으로 설치하고 설정하는 것은 비효율적입니다. 특히 고객사별로 다른 설정을 적용해야 한다면 더욱 그렇죠. 이번 글에서는 PowerShell 스크립트를 활용해 Windows 환경에서 AI 워커를 자동으로 배포하고, PM2로 프로세스를 관리하는 방법을 소개합니다. ## 자동 배포 스크립트의 핵심 구조 ### 1. 파라미터 기반 커스터마이징 배포 스크립트는 다음과 같은 파라미터를 받아 유연하게 동작합니다: ```powershell .\install_worker.ps1 ` -WorkerType "production_01" ` -WorkerId "prod_worker_001" ` -OrganizationName "Example Corp" ` -BotName "AssistantBot" ` -CustomConfigPath "C:\\configs\\custom.md" ``` 이 방식의 장점은: - **재사용성**: 동일한 스크립트로 내부/외부 환경 모두 대응 - **추적성**: WorkerId로 각 워커 식별 가능 - **커스터마이징**: 고객별 설정 파일 주입 가능 ### 2. 9단계 자동 설치 프로세스 #### Step 1-3: 환경 검증 및 기본 도구 설치 ```powershell # Node.js 설치 확인 if (-not (Get-Command node -ErrorAction SilentlyContinue)) { Write-Error "Node.js not found" exit 1 } # PM2 글로벌 설치 npm install -g pm2 ``` **핵심**: 사전 요구사항(Node.js, Python, SSH)을 먼저 검증하여 설치 실패를 조기에 방지합니다. #### Step 4-6: 디렉토리 구조 및 설정 파일 생성 ```powershell # 표준 디렉토리 구조 생성 $baseDir = "D:\\ai_workers\\$WorkerId" New-Item -ItemType Directory -Path "$baseDir\\workspaces" -Force New-Item -ItemType Directory -Path "$baseDir\\scripts" -Force New-Item -ItemType Directory -Path "$baseDir\\logs" -Force # PM2 ecosystem 설정 파일 생성 $ecosystemConfig = @" module.exports = { apps: [{ name: '$WorkerId', script: 'python', args: 'worker.py', cwd: '$baseDir', instances: 1, autorestart: true, max_memory_restart: '1G' }] }; "@ $ecosystemConfig | Out-File "$baseDir\\scripts\\ecosystem.config.js" ``` **실전 팁**: 워크스페이스, 스크립트, 로그를 분리하면 유지보수가 훨씬 수월합니다. #### Step 7-8: Python 의존성 설치 및 PM2 자동 시작 설정 ```powershell # Python 패키지 설치 pip install -r requirements.txt # Task Scheduler로 부팅 시 PM2 자동 시작 $action = New-ScheduledTaskAction -Execute "pm2" -Argument "resurrect" $trigger = New-ScheduledTaskTrigger -AtStartup Register-ScheduledTask -TaskName "PM2-AutoStart-$WorkerId" ` -Action $action -Trigger $trigger -RunLevel Highest ``` **주의사항**: Windows에서 PM2는 `pm2 startup` 명령이 제대로 작동하지 않으므로, Task Scheduler를 직접 사용해야 합니다. #### Step 9: 봇별 설정 파일 생성 ```powershell # 글로벌 규칙 파일 $globalConfig = @" ## AI Worker Configuration - Worker ID: $WorkerId - Organization: $OrganizationName - Bot Name: $BotName "@ $globalConfig | Out-File "$baseDir\\CLAUDE.md" # 봇별 메모리 파일 $botMemory = @" ## Bot Context - Workspace: $baseDir\\workspaces\\$BotName "@ $botMemory | Out-File "$baseDir\\workspaces\\$BotName\\CLAUDE.md" ``` ## 설치 후 검증 체크리스트 ### 1. 인증 확인 ```powershell claude login ``` ### 2. PM2 프로세스 상태 확인 ```powershell pm2 status # 예상 출력: # ┌─────┬────────────┬─────────┬───────┐ # │ id │ name │ status │ cpu │ # ├─────┼────────────┼─────────┼───────┤ # │ 0 │ worker_001 │ online │ 2% │ # └─────┴────────────┴─────────┴───────┘ ``` ### 3. 로그 모니터링 ```powershell pm2 logs worker_001 --lines 50 ``` ## 아키텍처 설계 포인트 ### 계층별 설정 파일 분리 1. **글로벌 규칙** (`D:\\CLAUDE.md`): 모든 워커가 공유하는 기본 규칙 2. **봇별 메모리** (`workspaces\\{bot}\\CLAUDE.md`): 각 봇의 컨텍스트와 학습 내용 3. **인프라 검증** (`scripts\\frozen_infra.py`): 설치 환경의 무결성 검증 이런 구조는 다음을 가능하게 합니다: - **격리**: 봇별로 독립적인 작업 공간 제공 - **재사용**: 공통 규칙은 한 번만 정의 - **추적**: 각 봇의 동작 기록을 개별 관리 ## 실전 활용 사례 ### 내부 테스트 환경 ```powershell .\install_worker.ps1 -WorkerType "dev_test" -WorkerId "test_001" ``` → 최소 파라미터로 빠른 설치 ### 고객사 배포 환경 ```powershell .\install_worker.ps1 ` -WorkerType "client_prod" ` -WorkerId "client_a_001" ` -OrganizationName "ABC Corporation" ` -BotName "SupportBot" ` -BotKoreanName "고객지원봇" ` -CustomConfigPath "C:\\client_configs\\abc_corp.md" ``` → 고객별 브랜딩 및 설정 적용 ## 트러블슈팅 팁 ### PM2가 재부팅 후 시작되지 않을 때 ```powershell # Task Scheduler 작업 확인 Get-ScheduledTask | Where-Object {$_.TaskName -like "PM2*"} # 수동으로 pm2 저장 후 재등록 pm2 save pm2 resurrect ``` ### Python 의존성 충돌 ```powershell # 가상환경 사용 권장 python -m venv venv .\venv\Scripts\Activate.ps1 pip install -r requirements.txt ``` ## 마치며 이번 글에서는 PowerShell 스크립트를 활용한 AI 워커 자동 배포 시스템을 살펴봤습니다. 핵심은: 1. **파라미터화된 설치 스크립트**로 재사용성 확보 2. **PM2 + Task Scheduler** 조합으로 Windows 환경 안정화 3. **계층적 설정 파일**로 유연한 커스터마이징 다음 단계로는 모니터링 대시보드 구축, 로그 중앙화, 롤링 업데이트 자동화 등을 고려해볼 수 있습니다. 여러분의 배포 환경에서도 이 패턴을 응용해보시기 바랍니다.
#PowerShell#PM2#자동배포#Windows서버#프로세스관리#DevOps#스크립트자동화
공유하기:

이 주제에 대해 더 알아보고 싶으신가요?

프로젝트 상담을 통해 맞춤형 솔루션을 제안받으세요.