İletişim

Canary Deployment Nedir?

Kısa tanım

Canary deployment, yeni bir sürümü önce trafiğin veya kullanıcıların küçük bir bölümüne açan, hata oranı ve gecikme gibi metrikleri eski sürümle karşılaştırarak payı adım adım artıran yayın stratejisidir. Metrikler önceden belirlenen eşikleri aşarsa yayın durdurulur ve canary geri çekilir. Böylece hatalı bir sürüm, kullanıcıların tamamına ulaşmadan küçük bir grupta yakalanır.

Diğer adları: canary release, kanarya yayını, kademeli yayın, canary dağıtım, progressive rollout

Yeni sürümün önce kullanıcıların yüzde beşine açıldığı, hata ve gecikme ölçümleri iyiyse kademeli olarak artırıldığı canary dağıtım ölçeği

Adı nereden geliyor, neyi çözüyor?

Madenciler eskiden ocağa bir kanarya götürürdü; zehirli gaz insanlardan önce kuşu etkilediği için tehlike erken fark edilirdi. Yazılımda canary de aynı işi görür: yeni sürüm önce küçük bir kullanıcı grubuna sunulur, bir sorun varsa etkisi bu grupla sınırlı kalır. Testler ne kadar iyi olursa olsun gerçek trafiğin çeşitliliğini taklit edemez; canary, sürümü gerçek koşullarda ama kontrollü bir “patlama yarıçapı” ile denemenin yoludur.

Google'ın SRE pratiklerinde canary, bir değişikliğin kısmi ve süresi sınırlı olarak yayına alınıp değerlendirilmesi diye tanımlanır. Değişikliği alan gruba canary, almayan gruba kontrol grubu denir. Kararın temeli bu iki grubun karşılaştırılmasıdır.

Kademeli bir yayın planı

Tipik bir canary planı, her adımda bir süre bekleyip metrikleri değerlendiren basamaklardan oluşur:

AdımYeni sürümün trafik payıBeklemeBakılan
1%115 dakikaÇökme, 5xx oranı, başlangıç hataları
2%1030 dakikaHata oranı ve p95 gecikme, kontrol grubuna göre
3%501 saatKaynak kullanımı, iş metrikleri (ödeme, kayıt)
4%100—Eski sürüm kapatılır

Yüzdeler ve süreler örnektir. Grubun büyüklüğü ve süresi, sorunları görünür kılacak kadar trafik toplamaya yetmelidir. Günde birkaç yüz istek alan bir serviste %1'lik canary, saatlerce bekleseniz de istatistiksel olarak anlamlı bir sonuç vermez.

Metrik kapıları: ilerle ya da geri çek

Canary'nin değeri, karar kurallarının önceden yazılmasından gelir. Her adımın sonunda bakılan sorular genellikle şunlardır:

  • Göreli karşılaştırma: Canary'nin hata oranı ve gecikmesi, aynı anda çalışan kontrol grubundan anlamlı ölçüde kötü mü? Mutlak eşikler gün içi trafik dalgalanmalarında yanıltır; aynı zaman diliminde iki grubu karşılaştırmak bu gürültüyü azaltır.
  • Doygunluk: CPU, bellek, bağlantı havuzu kullanımı yeni sürümde beklenmedik biçimde arttı mı?
  • İş sinyalleri: Sepete ekleme, ödeme tamamlama veya oturum açma oranı düştü mü? Teknik metrikler temiz görünürken bozuk bir buton satışları durdurabilir.

Bu kontrollerin yapılabilmesi için metriklerin sürüme göre ayrıştırılabilmesi gerekir; yani gözlemlenebilirlik altyapısı her ölçüme sürüm etiketi eklemelidir. Herhangi bir kapı kırmızıya dönerse trafik payı sıfırlanır; bu, kapsamı küçük ve hızlı bir rollback anlamına gelir. Bu karşılaştırma ve geri çekme, CI/CD araçlarında veya service mesh katmanında otomatikleştirilebilir.

Trafiği kim, nasıl böler?

Bölme işi genellikle ağırlıklı yönlendirme destekleyen bir yük dengeleyicide, bir ingress denetleyicisinde ya da service mesh'te yapılır. Önemli bir ayrıntı yapışkanlıktır (stickiness): aynı kullanıcı bir istekte yeni, diğerinde eski sürümü görürse arayüz tutarsızlaşabilir. Kullanıcı kimliğinin veya bir çerezin hash'ine göre atama yapmak, her kullanıcının yayın boyunca aynı grupta kalmasını sağlar. Mobil uygulamalarda canary, mağazaların kademeli dağıtım özellikleriyle cihazlar üzerinden yapılır; orada geri çekmek sunucu tarafındaki kadar hızlı değildir.

Blue-green ile farkı

Blue-greenCanary
Geçiş biçimiTüm trafik tek hamledeYüzde yüzde, adım adım
Hatanın etkilediği kullanıcıGeçiş anında herkesYalnızca o anki canary grubu
Altyapı ihtiyacıİki tam ortamAğırlıklı yönlendirme ve sürüm bazlı metrik
Yayın süresiKısaDaha uzun (adım ve bekleme süreleri)

İkisi rakip değildir. Birçok ekip blue-green ortamlar arasında trafiği yüzdelerle kaydırarak iki yöntemi birleştirir. Unutulmaması gereken bir sınır var: canary, uygulama kodundaki riski küçültür ama paylaşılan veritabanında yapılan bir şema değişikliği ilk andan itibaren herkesi etkiler.

İlgili terimler

← Sözlüğe dön