무중단 배포란?
- 기존 배포 방식은 서비스 배포를 위해 서버를 내리고 서비스 배포 후에 서비스를 올리는 방식 -> 실제 운영 환경에서는 서비스가 일시적으로 중단되기 때문에 권장되지 않음
- 무중단 배포는 사용자가 서비스를 순단 없이 계속 사용할 수 있도록 새로운 버전을 배포하는 방식
무중단 배포 방식
- 무중단 배포에는 배포 방식에 따라 대표적으로 Rolling Update, Blue Green, Canary 3가지 전략이 있음
Rolling
- Rolling Update는 사용 중인 서비스의 업데이트를 점진적으로 수행하는 방식으로 가장 기본적인 무중단 배포 방식
- 서비스 중인 인스턴스를 하나씩 로드 밸런서의 라우팅 대상에서 제외하고 업데이트 이후에 다시 라우팅에 포함시킨다
장점
- 추가적인 서비스 배포가 없기 때문에 리소스 소모가 적음
- 업데이트되는 서비스는 서비스 대상에서 제외되기 때문에 적은 서비스에 트래픽이 집중될 수 있음
단점
- 기존 버전과 새로운 버전의 서비스가 함께 존재하기 때문에 호환성 문제가 발생할 가능성 있음
Blue Green
- Blue: 기존 버전, Green은 새로운 버전
- 새로운 버전에 대한 서비스를 배포 이후에 로드 밸런서의 라우팅을 기존 버전 서비스에서 새로운 버전의 서비스를 변경한다
장점
- 운영 환경에 영향 없이 새로운 버전에 대한 테스트 가능
단점
Canary
- 어원: Canary (카나리아) - 광부들의 광산에서 가스 누출을 감지하기 위한 용도로 사용된 새
- 사용자의 범위를 늘려가며 피드백을 통해 배포하는 방식
- 잠재적 문제를 초기에 발견하여 전체 운영환경이나 사용자에게 영향을 미치는 것을 방지
장점
- 문제 상황을 빠르게 파악할 수 있음
- 대조군 (기존 서비스)과 실험군 (새로운 서비스)을 비교 테스트 가능 (A/B 테스트)
단점
- 기존 서비스와 새로운 서비스에 대한 세부적인 트래픽 제어 필요
참고 링크
https://blog.devops.dev/microsevices-deployment-patterns-rolling-vs-blue-green-vs-canary-e35440e794ed