서비스를 업데이트할 때 기존 방식대로 서버를 잠시 멈추고 새 코드를 올린다면 그 시간 동안 사용자는 서비스를 이용할 수 없습니다. 무중단 배포는 이러한 서비스 중단 없이 새로운 버전으로 안전하게 전환하는 기법을 말합니다.

블루-그린 배포

동일한 사양의 두 환경(Blue, Green)을 준비해두고, 현재 트래픽이 흐르는 환경이 Blue라면 새 버전을 Green 환경에 배포합니다. Green 환경에서 충분히 테스트한 후, 로드 밸런서의 트래픽을 한 번에 Green으로 전환합니다.

  • 장점: 전환이 즉각적이며, 문제가 생기면 즉시 이전 환경(Blue)으로 되돌릴 수 있음
  • 단점: 두 배의 인프라 자원이 필요해 비용이 증가함

롤링 배포

여러 대의 서버 중 일부씩 순차적으로 새 버전으로 교체해나가는 방식입니다. 예를 들어 10대의 서버 중 2대씩 순서대로 업데이트하며, 전체 서버가 교체될 때까지 나머지 서버는 계속 이전 버전으로 서비스를 제공합니다.

  • 장점: 추가 인프라 비용이 적고, 점진적으로 배포되어 위험을 분산할 수 있음
  • 단점: 배포 중 신버전과 구버전이 동시에 존재해, 호환성을 신경 써야 함

카나리 배포

새 버전을 일부 트래픽(예: 5%)에만 먼저 노출시켜 문제가 없는지 확인한 후, 점진적으로 트래픽 비율을 늘려가는 방식입니다. 위험을 최소화하며 실제 사용자 반응을 살필 수 있어 대규모 서비스에서 널리 사용됩니다.

Kubernetes에서의 배포 전략

Kubernetes는 기본적으로 롤링 업데이트를 지원하며, Deployment 리소스의 strategy 설정을 통해 한 번에 교체할 Pod 수를 세밀하게 조정할 수 있습니다. Istio 같은 서비스 메시를 함께 사용하면 카나리 배포도 정교하게 구현할 수 있습니다.

정리

어떤 배포 전략을 선택하든 핵심 목표는 동일합니다: 사용자가 배포 과정을 전혀 느끼지 못하게 하는 것입니다. 서비스의 규모와 인프라 예산에 맞는 전략을 선택하는 것이 중요합니다.