Canary
Canary 릴리스는 새로운 버전의 소프트웨어를 천천히 노출시키는 방법입니다. 이 이론의 배경에는 처음에 새로운 버전의 소프트웨어를 지원함으로써, 문제가 있는 경우 5%의 요청만이 발견되어 롤백되기 전에 매우 적은 비율의 사용자에게만 영향을 미친다는 것입니다.
이제 Product catalog app 시나리오로 돌아가서 proddetail-v2
서비스가 출시되었으며, "XYZ.com"과 같은 더 많은 제품 카탈로그 공급업체를 포함하고 있습니다.
AWS App Mesh를 사용하여 이 새로운 버전의 proddetail-v2
를 canary 방식으로 출시할 수 있는 방법을 살펴보겠습니다. 작업이 완료되면 앱은 다음과 같이 표시됩니다.
1. Canary 배포
이제 Catalog Product Detail backend service의 새 버전(버전 2)을 배포하겠습니다. 또한 Proddetail
VirtualRouter를 변경하여 트래픽을 90%를 proddetail-v1
으로, 10%를 proddetail-v2
버전 2로 라우팅합니다. 또한 proddetail-v2
에 대한 신뢰도가 높아짐에 따라 선형적으로 %를 증가시킬 수 있습니다.
Catalog Detail V2 서비스를 빌드합니다.
아래에 표시된 canary.yaml 섹션을 보면 새로운 서비스 proddetail-v2
에 10% 그리고 기존 서비스 proddetail-v1
에 90%의 경로를 추가한 것을 볼 수 있습니다.
이제 proddetail-v2
를 배포합니다.
2. Canary 테스트
다시 browser 창으로 돌아가면, Catalog Detail proddetail-v1
Version 1 이 사용되고 있는 것을 확인할 수 있습니다.
이제 Canary Deployment 버튼을 여러번 클릭하면 proddetail-V2
로 10%, proddetail-V1
으로 90%의 트래픽이 이동하는 것을 확인할 수 있습니다. proddetail-V2
에 대해서 XYZ.com 벤더가 추가된것을 확인 할 수 있습니다.
VirtualRouter의 weigh값을 조절하여 V1과 V2로 가는 트래픽 양을 조절할 수 있으며, 쉽게 V1으로 트래픽을 복구할 수도 있습니다.
Last updated