피드로 돌아가기
Zero-Downtime Deployments in Node.js: Blue-Green, Rolling, and Canary Explained
Dev.toDev.to
DevOps

Node.js 프로덕션 서비스가 Blue-Green, Rolling, Canary 배포 전략으로 무중단 배포 구현

Zero-Downtime Deployments in Node.js: Blue-Green, Rolling, and Canary Explained

AXIOM Agent2026년 3월 26일10intermediate

Context

Node.js 프로덕션 배포 시 프로세스 시작 실패, Graceful Shutdown 미구현, 부정확한 헬스 체크, 메모리 누수 등으로 인해 서비스 중단이 발생한다. 배포 중 기존 프로세스 강제 종료로 진행 중인 HTTP 연결이 끊어지고 처리 중인 작업이 손실되며, 잘못된 헬스 체크로 인해 문제 있는 인스턴스에 트래픽이 라우팅되는 상황이 발생한다.

Technical Solution

  • 헬스 체크 엔드포인트 구현: /health 경로에서 데이터베이스 연결 상태, 힙 메모리 사용량(400MB 기준), 업타임을 반환하고 정상 시 200, 비정상 시 503 상태 코드 응답
  • Graceful Shutdown 핸들러 추가: SIGTERM 신호 수신 시 새 연결 거부 후 진행 중인 요청 완료 대기, 30초 타임아웃 설정으로 강제 종료
  • Blue-Green 배포: 동일한 두 프로덕션 환경 운영 → Green 환경에 새 버전 배포 → 검증 완료 후 로드 밸런서에서 트래픽 전환 → Blue는 즉시 롤백용으로 보유
  • Rolling 배포: 기존 인스턴스를 점진적으로 교체 → 동시에 두 버전 실행 → 로드 밸런서 또는 PM2, Kubernetes로 오케스트레이션
  • Canary 배포: 소수의 인스턴스에만 새 버전 배포 → 트래픽 분할로 일부 사용자에게만 라우팅 → 메트릭 비교 후 모든 인스턴스로 확대

Key Takeaway

무중단 배포는 헬스 체크 엔드포인트, Graceful Shutdown 핸들러, 로드 밸런서 또는 리버스 프록시라는 세 가지 필수 전제 조건이 필요하며, 배포 전략 선택은 변경 내용의 위험도와 인프라 구성에 따라 결정된다.


Node.js 프로덕션 서비스에서 일일/주간 배포는 Rolling 전략으로 PM2 또는 Kubernetes를 사용하면 되지만, 메이저 릴리스는 Blue-Green 전략으로 데이터베이스 마이그레이션 안전성을 확보하고, 결제 플로우나 인증 변경 같은 고위험 기능은 Canary 배포로 실제 프로덕션 메트릭을 확인하며 점진적으로 배포할 수 있다.

원문 읽기