만약 무중단 배포를 적용하지 않는 서비스를 이용할 경우, 사용자는 서버가 다시 배포될 때마다 제대로 이용할 수 없게 된다.
이러한 문제점을 해결하고자 배포 시 중단이 되지 않는 무중단 배포를 적용함으로써 해결할 수 있다.
무중단 배포는 애플리케이션이 가동 중인 상태에서 새 버전으로 업데이트하여 사용자에게 서비스 중단을 최소화하거나 없애는 배포 방식이다.
기존 버전과 새 버전을 동시에 운영하거나, 요청을 전환하며 사용자는 중단 없이 서비스를 이용할 수 있다.
무중단 배포는 크게 3가지의 전략이 있다.
롤링 배포는 여러 어플리케이션 인스턴스를 점진적으로 새 버전으로 교체하는 방식이다.
주로 Kubernetes 환경에서의 Pod 배포나 VM 교체를 위해 사용되며, 배포 시간이 길더라도 가용성을 유지해야 할 때 적합하다.
* Pod : 하나 이상의 컨테이너를 묶어서 실행하는 논리적 단위이며, 동일한 네트워크 환경과 스토리지를 공유한다.
블루 그린 배포는 현재 서비스 중인 버전을 블루(Blue), 새 버전을 그린(Green) 환경으로 분리하여, 그린 버전이 준비되면 트래픽을 그린으로 전환하는 방식이다.
주로 고가용성이 필수적인 서비스나 금융, 의료 분야처럼 사용자 서비스 중단이 민감한 환경에서 사용된다.
카나리 배포는 새 버전을 소수의 사용자에게 먼저 제공하여, 점진적으로 전체 사용자에게 배포하는 방식이다.
초기에는 소수의 인스턴스에만 새 버전을 배포하고, 문제가 없으면 점차 배포 대상을 늘린다.
신규 기능 출시나 대규모 업데이트에서 사용되며, 주로 Netflix와 같은 대규모 서비스에서 사용자 반응을 확인하기 위해 적용된다.
Performing a Rolling Update | Kubernetes Docs
Blue Green Deployments vs Rolling Deployments? | Stack overflow
Scalability concepts: zero-downtime deployments | gif 출처
Automated Canary Analysis at Netflix with Kayenta | Netflix Technology Blog
무중단 배포 아키텍처(Zero Downtime Deployment)- 글로벌 서비스 운영의 필수 요소 | Samsung SDS 김지명
✏️ 무중단 배포 전략(Zero-downtime Deployment) | 박상민