Rolling Deployment
- 배포 중 다운타임 최소화
- Pod 수 또는 인스턴스 수 조절 전략
- Kubernetes
RollingUpdate
정책 설정 - 점진적 배포, 트래픽 분산, 점검 및 롤백 용이
Rolling Deployment 는 애플리케이션의 새 버전을 점진적으로 배포하는 무중단 배포 전략이다.
Rolling Deployment 는 기존 버전의 인스턴스를 새 버전으로 점진적으로 교체하는 방식이다.
이 과정에서 서비스의 가용성을 유지하면서 새 버전을 배포할 수 있다.
주요 특징:
- 인스턴스를 하나씩 또는 작은 배치로 업데이트
- 전체 배포 과정 동안 서비스 유지
- 새 버전과 이전 버전이 일시적으로 공존
Rolling Deployment 는 서비스의 연속성을 유지하면서 새 버전을 안전하게 배포할 수 있는 효과적인 전략이다.
그러나 버전 간 호환성과 데이터베이스 변경 관리에 주의가 필요하다.
조직의 요구사항과 애플리케이션 특성을 고려하여 적절히 구현해야 한다.
구현 방법
배포 준비:
- 새 버전의 애플리케이션 준비
- 배포 대상 인스턴스 그룹 선정
점진적 교체:
- 기존 인스턴스 중 일부를 서비스에서 제외
- 새 버전의 인스턴스를 배포하고 서비스에 추가
- 새 인스턴스의 정상 작동 확인
반복:
- 모든 인스턴스가 새 버전으로 교체될 때까지 2 단계 반복
완료 확인:
- 모든 인스턴스가 새 버전으로 업데이트되었는지 확인
- 전체 시스템의 안정성 검증
장점
- 무중단 배포: 서비스 중단 없이 새 버전 배포 가능
- 리스크 감소: 점진적 배포로 문제 발생 시 영향 최소화
- 리소스 효율성: 추가 인프라 없이 기존 환경에서 배포 가능
- 롤백 용이성: 문제 발생 시 이전 버전으로 쉽게 롤백 가능
단점
- 배포 시간: 전체 배포 완료까지 시간이 오래 걸릴 수 있음
- 버전 호환성: 새 버전과 이전 버전의 호환성 필요
- 복잡성: 여러 버전이 동시에 운영되어 관리가 복잡할 수 있음
- 데이터베이스 스키마 변경: 데이터베이스 스키마 변경이 필요한 경우 어려움 발생 가능
사용 사례
- 웹 애플리케이션: 사용자 경험을 중단 없이 유지하면서 새 기능 배포 [6]
- 마이크로서비스: 개별 서비스의 독립적 업데이트 [6]
- 모바일 앱 백엔드: 클라이언트와의 호환성을 유지하며 서버 업데이트 [14]
구현 도구
- Kubernetes: Deployment 객체를 사용한 Rolling Update 지원
- AWS Elastic Beanstalk: 내장된 Rolling Deployment 옵션 제공
- Jenkins: CI/CD 파이프라인에서 Rolling Deployment 구현 가능