중단 배포와 다운 타임
운영중인 서비스에 새로운 버전으로 업데이트 하려고 하면 서비스가 멈추는 시간이 생기게 된다.
V1 운영 -> V2 코드 변경 -> V1 종료 -> V2 실행 -> V2 로드 -> V2 운영
위 와 같이 V1에서 V2로 옮겨가는 5~10분 가량 서비스가 멈추는 시간이 생기는데 이것을 다운 타임(Down Time)이라고 한다.
무중단 배포(Zero Down Time Deployment)
무중단 배포는 위와 같이 서비스가 멈추지 않고(Zero Down Time) 새로운 버전으로 바꾸는 것을 의미한다.
무중단 배포를 하기 위해서는 최소 서버 2대 이상이 있어야 한다.
롤링 업데이트(Rolling Update)
한번에 하나의 서버씩 점진적으로 변경해 가능 방식
변경 순서
1. 변경할 서버로 가는 트래픽을 끊는다.
2. 서버의 버전을 바꾼다.
3. 트래픽을 다시 잇는다.
장점
- 제한된 서버 자원으로도 구현이 가능하다.
- 많은 컨테이너 오케스트레이션에서 default 지원하며 구현이 편리하다.
단점
- V1과 V2가 공존하는 시간이 존재하여, 그 시간동안 호환성에 문제가 생길 수 있다.
- 변경을 위해 하나의 서버의 트래픽을 줄이면 그 동안 나머지 서버들이 부담해야 할 트래픽이 늘게된다.
블루 그린(Blue-Green) 배포
기존 서비스 되는 서버 그룹(Blue), 새롭게 서비스 될 서버 그룹(Green)으로 보고
Green에 V2를 모두 생성한 뒤 Blue에서 Green으로 한번에 트래픽을 변경하는 방법
변경 순서
1. 새로운 버전으로 생성될 서버를 모두 실행 시킨다.
2. 기존 버전으로 가는 트래픽을 새롭게 생성된 서버로 옮긴다.
3. 기존 버전을 종료 시킨다.
장점
- 한번에 트래픽이 옮겨 가기 때문에 이전 버전과의 호환성을 고민하지 않아도 된다.
- 새 버전에 오류가 생길 경우 빠르게 blue로 트래픽을 변경하여 Roll Back 시킬 수 있다.
단점
- 서버 자원이 2배로 들게 된다.
- 치명적인 오류가 발생할 경우 모든 사용자가 해당 오류를 경험하게 된다.
카나리(Canary) 배포
blue - green 배포와 같이 새로운 버전을 먼저 만들고 트래픽을 점진적으로 넘기는 방식.
변경 순서
1. 새로운 버전으로 생성될 서버를 모두 실행 시킨다.
2. 기존 버전의 트래픽 일부를 새버전으로 변경한다.
3. 새 버전의 상태를 확인하며 롤백할지 계속 진행할지 결정한다.
4. 모든 트래픽이 새버전으로 옮겨지면 기존 버전을 내린다.
장점
- 새 버전의 실패율을 모니터링하고 자동 복구 시스템을 생성할 수 있다.
- 치명적인 오류에 대한 위험성을 줄일 수 있다.
- 두가지 버전을 비교하는 A/B 테스트를 수행하기 적합한 방식
단점
- Blue-Green과 마찬가지로 서버 자원이 2배로 들게 된다.
- 동시에 두 버전이 올라가므로 호환성에 대해 고려해야 한다.
카나리 배포의 이름은 예전 광부들이 가스에 예민한 카나리아 새를 활용해 가스 누출을 감지한 것에서 유래했다.
참고
https://hudi.blog/zero-downtime-deployment/
https://www.encora.com/insights/zero-downtime-deployment-techniques-rolling-update
https://www.encora.com/insights/zero-downtime-deployment-techniques-blue-green-deployments
https://www.encora.com/insights/zero-downtime-deployment-techniques-canary-deployments
'CS > Infra' 카테고리의 다른 글
[AWS] EC2에 올라간 Docker 컨테이너 자동 복구 시키기 (0) | 2023.04.05 |
---|---|
쿠버네티스 공부 12일차 :: 스테이트풀셋에서 스토리지와 작동방식 (1) | 2022.12.01 |
쿠버네티스 공부 11일차 :: DB 파드는 어떻게 만들까? (스테이트풀셋) (0) | 2022.11.25 |
쿠버네티스 공부 10일차 :: 디플로이먼트 (0) | 2022.11.18 |
쿠버네티스 공부 9일차 :: 컨피그맵과 시크릿 (0) | 2022.11.09 |