**무중단 deploy(zero-downtime deployment)**는 사용자에게 어떤 중단도 없이 새 버전을 릴리스하는 것을 의미합니다 — 애플리케이션이 내내 가용 상태를 유지합니다. 이를 달성하려면 신중한 deploy 전략, 하위 호환 변경, health check, 진행 중인 요청의 우아한 처리가 필요합니다.
무중단이 요구하는 것
목표: 사용자 대면 다운타임 없이 새 버전 deploy (항상 가용한 서비스):
→ deploy를 위해 전체 서비스를 절대 오프라인으로 하지 않음
→ 다른 것을 업데이트하는 동안 항상 건강한 인스턴스가 서비스
→ 진행 중인 요청을 우아하게 처리 (요청 중간에 드롭하지 않음)
→ 여러 기법을 결합 (아래).
핵심 기법
✓ DEPLOYMENT 전략 — rolling, blue-green, 또는 canary (한 번에 모두 다운타임 없음):
→ rolling: 인스턴스를 점진적으로 업데이트 (다른 것은 계속 서비스)
→ blue-green: 트래픽을 새 환경으로 즉시 전환
✓ LOAD BALANCER + HEALTH CHECK → 건강한/준비된 인스턴스에만 트래픽 라우팅;
새 인스턴스는 준비되었을 때만 합류 (readiness check)
✓ GRACEFUL SHUTDOWN → draining: 인스턴스에 새 요청 보내기를 중단, 진행 중인
요청을 끝내게 함, 그 다음 중지 (SIGTERM 처리) → 드롭된 요청 없음
✓ 하위 호환 변경 → rollout 중 이전과 새 버전이 공존
(API와 데이터베이스 호환성 — expand-contract migration)
