#sapurimeetup Canary release - フレームワークのアップグレードを安心して進めるためのリリース戦略 Canary release とは “Canary release is a technique to reduce the risk of introducing a new software version in production by slowly rolling out the change to a small subset of users before rolling it out to the entire infrastructure and making it available to everybody.” 15 https://martinfowler.com/bliki/CanaryRelease.html
#sapurimeetup Canary release - フレームワークのアップグレードを安心して進めるためのリリース戦略 k8s namespace 18 student-api Server User if enable_new_feature?(user) new_logic else old_logic end Service Router Feature Toggles
#sapurimeetup Canary release - フレームワークのアップグレードを安心して進めるためのリリース戦略 k8s namespace 19 Service Router student-api Server student-api-new Server User Canary release if canary_release?(user) new_host else old_host end
#sapurimeetup Canary release - フレームワークのアップグレードを安心して進めるためのリリース戦略 k8s namespace 33 student-api Server User Cookie id = 0.0 ~ 1.0 Version = id < Ratio ? new : old Ratio = X Service Router (NGINX)
#sapurimeetup Canary release - フレームワークのアップグレードを安心して進めるためのリリース戦略 k8s namespace 34 student-api Server User Cookie id = 0.3 Version = old Ratio = 0 Service Router (NGINX)
#sapurimeetup Canary release - フレームワークのアップグレードを安心して進めるためのリリース戦略 k8s namespace 35 student-api Server User Cookie Ratio = 0.2 id = 0.3 Version = old Service Router (NGINX)
#sapurimeetup Canary release - フレームワークのアップグレードを安心して進めるためのリリース戦略 k8s namespace 36 student-api Server User Cookie Ratio = 0.5 id = 0.3 Version = new id < Ratio になったので バージョン切り替え用の Cookie も付与 Service Router (NGINX)
#sapurimeetup Canary release - フレームワークのアップグレードを安心して進めるためのリリース戦略 k8s namespace 37 student-api Server student-api-new Server User Cookie Version == new バージョン切り替え用の Cookie だけ見て Host 切り替え Service Router (NGINX)