- 무중단 배포를 반영하기에 앞서 무중단 배포는 무엇인가?
- 무중단 배포 ( Zero-downtime Deployment )
- 이름 그대로 보자면 중단이 되지 않고 배포가 된다는 뜻
- 서비스가 중단되지 않은 사태 ( Zero-downtime )로, 새로운 버전을 사용자들에게 배포하는 것을 의미 한다.
- 무중단 배포를 하기 위해서는 최소 서버가 2 대 이상 확보해야 한다.
- 무중단 배포 종류는 무엇이 있을까?
-
롤링 ( Rolling ) 배포

- 트래픽을 점진적으로 구 버전 → 신 버전으로 옮기는 방식이다.
- 점진적으로 어떻게 옮기는가 이 방식에서는 사용하는 방식에 따라 달라 질 수 있다.
간단히 원리만 알아본다.
- 여러 서버를 사용하게 된다면 트래픽의 과부화를 막기 위해 로드 밸러서를 활용할 것이다.
이를 통해서 새롭게 배포할 서버에 대해서는 로드 밸런서와 연결을 끊고 배포 작업을 진행한다.
- 이 과정에서 나머지 서버들은 사용자의 트래픽을 받아 주면서 서비스가 중단되지 않는다.
- 위 두 가지 과정을 모든 서버가 반영이 되기까지 반복하면 된다.
-
Blue/Green 배포

- 롤링이 점진적으로 버전을 바꾸는 방식이라면 Blue/Green 배포는 한번에 구 버전 → 신 버전으로 옮기는 방식이다.
- Blue/Green 전략
Blue = 현재 운영중인 서비스
Green = 새로운 환경 서비스
- Blue와 Green 의 서버를 동시에 나란히 구성하고, 배포 시점에 로드 밸런서가 트래픽을 Blue 에서 Green 으로 일제히 전환 시킨다.
-
카나리 ( Canary ) 배포

- 카나리 배포의 이름은 예전 광부들이 가스에 예민한 카나리아 새를 활용하여 가스 누출을 감지 했다는 이야기에서 유래 되었다.
- 카나리 배포는 점진적으로 구 버전에 대한 트래픽을 신 버전으로 옮기는 것은 롤링 배포 방식과 비슷하다.
- 다만, 카나리 배포의 핵심은 새로운 버전에 대한 오류를 조기에 감지하는 것!
- 소수 인원에 대해서만 트래픽을 새로운 버전에 옮겨둔 상태에서 서비스를 제공하고, 새로운 버전에 이상이 없다고 판단하는 경우 모든 트래픽을 신규 버전으로 옮긴다.
A/B 테스트에 진행하기에 적합한 방식이다.
- A/B 테스트란?
- 대조군과 실험군으로 나누어 특정한 UI 나 알고리즘의 효과를 비교하는 방벙론
- 즉, 일부 서버에 대해서 테스트를 병행하면서 진행하고, 문제가 없는 경우 새로운 버전에 대한 영역을 넓혀 나가면서 신규 버전으로 바꾼다.
무중단 배포 Blue/Green 적용기