Rolling Deployment

  • 배포 중 다운타임 최소화
  • Pod 수 또는 인스턴스 수 조절 전략
  • Kubernetes RollingUpdate 정책 설정
  • 점진적 배포, 트래픽 분산, 점검 및 롤백 용이

Rolling Deployment 는 애플리케이션의 새 버전을 점진적으로 배포하는 무중단 배포 전략이다.

Rolling Deployment 는 기존 버전의 인스턴스를 새 버전으로 점진적으로 교체하는 방식이다.
이 과정에서 서비스의 가용성을 유지하면서 새 버전을 배포할 수 있다.

주요 특징:

  • 인스턴스를 하나씩 또는 작은 배치로 업데이트
  • 전체 배포 과정 동안 서비스 유지
  • 새 버전과 이전 버전이 일시적으로 공존

Rolling Deployment 는 서비스의 연속성을 유지하면서 새 버전을 안전하게 배포할 수 있는 효과적인 전략이다.
그러나 버전 간 호환성과 데이터베이스 변경 관리에 주의가 필요하다.
조직의 요구사항과 애플리케이션 특성을 고려하여 적절히 구현해야 한다.

구현 방법

  1. 배포 준비:

    • 새 버전의 애플리케이션 준비
    • 배포 대상 인스턴스 그룹 선정
  2. 점진적 교체:

    • 기존 인스턴스 중 일부를 서비스에서 제외
    • 새 버전의 인스턴스를 배포하고 서비스에 추가
    • 새 인스턴스의 정상 작동 확인
  3. 반복:

    • 모든 인스턴스가 새 버전으로 교체될 때까지 2 단계 반복
  4. 완료 확인:

    • 모든 인스턴스가 새 버전으로 업데이트되었는지 확인
    • 전체 시스템의 안정성 검증

장점

  1. 무중단 배포: 서비스 중단 없이 새 버전 배포 가능
  2. 리스크 감소: 점진적 배포로 문제 발생 시 영향 최소화
  3. 리소스 효율성: 추가 인프라 없이 기존 환경에서 배포 가능
  4. 롤백 용이성: 문제 발생 시 이전 버전으로 쉽게 롤백 가능

단점

  1. 배포 시간: 전체 배포 완료까지 시간이 오래 걸릴 수 있음
  2. 버전 호환성: 새 버전과 이전 버전의 호환성 필요
  3. 복잡성: 여러 버전이 동시에 운영되어 관리가 복잡할 수 있음
  4. 데이터베이스 스키마 변경: 데이터베이스 스키마 변경이 필요한 경우 어려움 발생 가능

사용 사례

  1. 웹 애플리케이션: 사용자 경험을 중단 없이 유지하면서 새 기능 배포 [6]
  2. 마이크로서비스: 개별 서비스의 독립적 업데이트 [6]
  3. 모바일 앱 백엔드: 클라이언트와의 호환성을 유지하며 서버 업데이트 [14]

구현 도구

  1. Kubernetes: Deployment 객체를 사용한 Rolling Update 지원
  2. AWS Elastic Beanstalk: 내장된 Rolling Deployment 옵션 제공
  3. Jenkins: CI/CD 파이프라인에서 Rolling Deployment 구현 가능

참고 및 출처