피드로 돌아가기
Dev.toDevOps
원문 읽기
AWS Elastic Beanstalk 기반 Zero Downtime 배포 전략 분석
5 Ways to Deploy Code (Without Making Your Users Mad)
AI 요약
Context
코드 배포 시 발생하는 서비스 중단과 사용자 경험 저하라는 전형적인 가용성 문제 직면. 배포 속도와 시스템 안정성, 그리고 인프라 비용 사이의 상충 관계(Trade-off) 해결 필요.
Technical Solution
- All at Once: 모든 인스턴스를 동시 교체하여 배포 속도를 극대화하되 전체 서비스 다운타임 감수
- Rolling: 배포 단위를 Batch로 분할하여 순차 업데이트를 통한 무중단 서비스 유지 및 가용 용량 일시 감소 해결
- Rolling with Additional Batch: 신규 인스턴스 배치를 선행 생성하여 배포 중에도 100% 서비스 처리 용량 확보
- Immutable: 기존 서버와 완전히 분리된 Parallel Group을 생성하고 Health Check 통과 후 트래픽을 즉시 전환하여 Rollback 안정성 확보
- Traffic Splitting: 신규 버전으로의 트래픽을 일부(예: 10%)만 할당하는 Canary 배포로 Blast Radius 최소화 및 실사용자 검증 수행
실천 포인트
1. 개발 환경에서는 속도 우선의 All at Once 검토
2. 트래픽 변동이 적은 운영 환경은 Rolling 적용
3. 고가용성 및 트래픽 부하가 큰 서비스는 Rolling with Additional Batch 채택
4. 절대적 안정성과 즉각적 Rollback이 필요한 핵심 시스템은 Immutable 구조 설계
5. 대규모 기능 변경 시 Traffic Splitting을 통한 단계적 롤아웃 수행