제로 다운타임 배포는 애플리케이션을 중단 없이 업데이트하여 사용자에게 불편함 없이 서비스를 제공하는 실천입니다. 이는 애플리케이션의 구형 인스턴스를 단계적으로 제거하고 신형 인스턴스를 도입함으로써 이루어집니다.
스테이트리스 애플리케이션을 클라우드에서 구현하는 예시 (예: Kubernetes 사용 시):
롤링 업데이트를 위한 deployment.yaml 예시:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 4 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1 template: metadata: labels: app: my-app spec: containers: - name: app image: my-app:v2
주요 특징:
데이터 스키마가 변경될 때 제로 다운타임 배포는 불가능한가요?
가능합니다. 스키마 마이그레이션이 두 단계로 진행된다면: 처음에는 코드가 이전 및 새로운 스키마와 호환되도록 하고, 그 후에 마이그레이션과 레거시 코드 제거가 이루어집니다.
애플리케이션이 스테이트리스라면 제로 다운타임 배포가 항상 보장되나요?
아닙니다! 제한 요인은 외부 상태, 연결 시간 초과, 처리되지 않은 요청 또는 API에서 지원되지 않는 역호환성 변화 등이 될 수 있습니다.
제로 다운타임 배포는 대기업에만 필요하나요?
아닙니다. 작은 스타트업이나 SaaS 솔루션에서도 제로 다운타임은 사용자 경험에 결정적인 요소입니다 (특히 글로벌 마켓과 고부하 상황에서).