Canary Release, bir uygulamanın yeni bir sürümünün önce küçük bir kullanıcı alt kümesine sunulduğu ve ardından kademeli olarak tüm kitleye yayıldığı bir dağıtım stratejisidir. Bu yaklaşım, sorunların erken bir aşamada tespit edilmesini sağlayarak tüm kullanıcılar üzerindeki etkiyi en aza indirir. Google Cloud (2024)'a göre, kanarya sürümleri olay tespit süresini ortalama %60 oranında azaltır. Kanarya dağıtımı, işlevselliğin tamamen kullanılamaz olduğu kritik hizmetler için bir standart haline gelmiştir.
Önemli Noktalar
Canary Release, bir hizmetin yeni sürümünün önce küçük bir kullanıcı yüzdesine yönlendirildiği ve yalnızca kararlılık onaylandıktan sonra tüm kitleye yayıldığı bir dağıtım tekniğidir. Terim, “kömür madeninde kanarya” metaforundan gelir — tarihsel olarak madenciler tehlikeli gazları tespit etmek için kanaryaları yanlarında götürürdü. Geliştirmede, kullanıcıların kanarya grubu sorunların aynı erken göstergesi olarak hizmet eder.
Yazılım geliştirmede kanarya metaforu, 2010'larda mikroservis mimarisinin ve sürekli dağıtım uygulamalarının yükselişiyle ortaya çıktı. Netflix, Amazon ve Google, kanarya sürümlerini büyük ölçekte uygulayan ve sonuçlar ile metodolojileri yayınlayan ilk şirketlerdi. Bugün canary, üretim hatasının maliyetinin kullanıcı verileri ve gelirle ölçüldüğü ciddi projeler için standart bir modeldir. Kubernetes gibi modern orkestrasyon platformları, canary stratejileri için yerleşik destek sağlar.
Bir canarya sürümünün merkezinde, uygulamanın eski (kararlı) ve yeni (canarya) sürümleri arasında trafik bölünmesi yer alır. Kanarya sürümünün ilk payı toplam trafiğin %1–5'idir. İzleme sistemi her iki sürümün metriklerini sürekli olarak karşılaştırır. Sapmalar kabul edilebilir eşikleri aşmazsa, kanarya payı otomatik olarak %25'e, %50'ye ve son olarak %100'e yükselir. Metrikler kötüleşirse dağıtım otomatik olarak durdurulur ve bir geri alma başlatılır.
Kanarya dağıtım süreci, her biri bir sonrakine geçmeden önce otomatik doğrulama gerektiren ardışık aşamalardan oluşur. Trafik yönetimi için service mesh kullanarak Kubernetes'te dağıtılan bir backend hizmetinin tipik bir senaryosunu ele alalım.
İlk aşama, kanarya sürümünü version: canary etiketli izole bir pod grubuna dağıtmaktır. Bir trafik dengeleyici (örneğin Istio veya Linkerd), bu gruba isteklerin %2'sini yönlendirir. İzleme sistemi, 10–30 dakika boyunca her iki sürümün metriklerini toplar. Hata oranı kararlıysa ve gecikme artmamışsa, otomasyon kanarya payını %10'a, ardından %50'ye yükseltir. Her aşamada işlem hattı, izleme veya geliştiriciden onay bekler. Trafik kanarya'da %100'e ulaştığında eski sürüm kullanımdan kaldırılır.
stage("Canary Deploy") {
steps {
sh "kubectl set image deployment/canary app=${NEW_VERSION}"
sh "kubectl scale deployment/canary --replicas=2"
}
}
stage("Canary Observation") {
steps {
script {
def healthy = sh(
script: "check-canary-health.sh",
returnStatus: true
)
if (healthy != 0) {
error "Canary failed health check"
}
}
}
}
stage("Gradual Rollout") {
steps {
sh "update-traffic-split.sh canary 25"
sh "sleep 300 && check-metrics.sh"
sh "update-traffic-split.sh canary 50"
sh "sleep 300 && check-metrics.sh"
sh "update-traffic-split.sh canary 100"
}
}
Canarya'nın temel avantajı, metrikler kötüleştiğinde otomatik geri almadır. Kanarya sürümünün payı artırıldıktan sonra hata oranı bir eşiği aşarsa (örneğin, taban çizgisinden +%5), işlem hattı otomatik olarak tüm trafiği eski sürüme yönlendirir. Geliştirici, ayrıntılı bir rapor içeren bir bildirim alır: hangi metriklerin düştüğü, hangi uç noktalarda ve hangi kod sürümünün dağıtıldığı. Bu yaklaşım, kurtarma süresini (MTTR) saatler yerine dakikalara indirir.
| Aşama | Trafik Payı | Süre | Geçiş Koşulu |
|---|---|---|---|
| Başlangıç | %2 | 10–30 dk | Hata oranı < taban çizgisi + %1 |
| Genişletme | %10–25 | 30–60 dk | Gecikme p95 < taban çizgisi + %10 |
| Çoğunluk | %50 | 30–60 dk | İş metrikleri kararlı |
| Tam dağıtım | %100 | — | Tüm kontroller geçildi |
Canary ve blue-green, sıklıkla karıştırılan iki popüler sıfır kesinti dağıtım stratejisidir. Her ikisi de sürekli hizmet kullanılabilirliğini sağlar, ancak trafik yönetimi ve yeni sürüm doğrulama yaklaşımlarında temel olarak farklılık gösterir. Farkı anlamak, belirli bir senaryo için doğru stratejiyi seçmek açısından kritiktir.
Blue-green dağıtımı, iki özdeş ortam kullanır (blue — mevcut, green — yeni). Green ortamının tam dağıtımı ve test edilmesinden sonra trafik anında değiştirilir — tek bir yönlendirici anahtarıyla. Canary ise aynı altyapıda yeni sürümün payını kademeli olarak artırmayı hedefler ve daha ince bir kontrol sağlar. Blue-green, tüm altyapının çoğaltılmasını gerektirir, bu daha pahalıdır ancak anında geri alma sağlar. Canary daha ekonomiktir ancak daha karmaşık izleme ve otomasyon gerektirir.
Canary sürümü, değişiklikleri gerçek trafikte doğrulamanın önemli olduğu yüksek dağıtım sıklığına (günde birkaç kez) sahip hizmetler için idealdir. Trafik yönlendirmesinin hassas bir şekilde kontrol edilebildiği mobil uygulama backend hizmetleri, API ağ geçitleri ve mikroservisler için özellikle etkilidir. Blue-green, monolitik uygulamalar veya kısmi trafik dağıtımının uygulanmasının zor olduğu hizmetler için tercih edilir.
Bir canarya sürümünün başarısı tamamen izleme kalitesine bağlıdır. Kanarya ve kararlı sürümler arasında doğru metrik karşılaştırması olmadan canary amacını kaybeder — genişletme veya geri alma kararı körü körüne alınır. Canary analizi için temel metrikleri ve bunların toplanma yaklaşımlarını inceleyelim.
Birincil göstergeler hata oranı (HTTP 5xx, istisnalar ve zaman aşımlarının yüzdesi), gecikme (p50, p95, p99 yanıt süresi), iş hacmi (saniyedeki istek sayısı) ve kaynak kullanımıdır (CPU, bellek). Karşılaştırma izole edilmelidir: kanarya grubunun metrikleri, tüm hizmetle değil, aynı boyuttaki bir kontrol grubuyla karşılaştırılmalıdır. Doğru karşılaştırma için Mann-Whitney istatistiksel testi veya güven aralığı hesaplaması kullanılır.
Teknik metriklerin yanı sıra, canary analizi iş göstergelerini de dikkate almalıdır: dönüşüm, elde tutma, işlem sayısı, kullanıcı başına gelir. Mobil uygulamalar için çökmesiz oran, soğuk başlatma süresi ve ANR sıklığı kritiktir. Teknik metrikler normalse ancak iş metrikleri düşmüşse — bu geri alma sinyalidir. Canary platformunun analitik sistemlerle (Amplitude, Mixpanel) entegrasyonu, gruplar arasında iş metriklerinin otomatik karşılaştırılmasını sağlar. Mevsimsellik ve günlük trafik döngülerini dikkate alarak her iki grup için aynı karşılaştırma dönemini kullanmak önemlidir. Örneğin, yoğun saatlerde bir canarya grubunu düşük yüklü saatlerdeki bir kontrol grubuyla karşılaştırmak çarpık sonuçlar verecektir.
Otomatik geri alma için eşikleri yapılandırmak, duyarlılık ve gürültüye karşı direnç arasında denge gerektiren kritik bir görevdir. Çok düşük bir eşik, normal metrik dalgalanmaları sırasında yanlış pozitiflere ve dağıtım durmasına yol açar. Çok yüksek bir eşik gerçek sorunları gözden kaçırır. Eşiklerin geçmiş verilere dayanarak ayarlanması önerilir: %95 güven aralığıyla önceki 7 günün taban çizgisi metrikleri. Hata oranı için tipik bir eşik, taban çizgisinden 2 yüzde puanından fazla artıştır. Gecikme için p95'in %20'den fazla aşılmasıdır.
Modern ekosistem, canarya sürümlerini uygulamak için birçok araç sunar — orkestrasyon platformlarının yerleşik yeteneklerinden özelleşmiş service mesh çözümlerine kadar. Belirli bir aracın seçimi, teknoloji yığınına ve trafik kontrol gereksinimlerine bağlıdır.
Istio, Kubernetes'te kanarya dağıtımı için en popüler service mesh'dir. Istio, uygulama kodunu değiştirmeden VirtualService ve DestinationRule düzeyinde trafik dağıtımını yönetmeye olanak tanır. Linkerd, daha az yapılandırma karmaşıklığıyla benzer işlevsellik sağlar. Her iki araç da ağırlıklı trafik dağıtımını, istek yansıtmayı ve metriklere dayalı otomatik geri almayı destekler.
Argo Rollouts ve Flagger gibi CI/CD platformları, Kubernetes'te kanarya dağıtımı için özel kaynaklar sağlar. Metrik toplama için Prometheus ile entegre olurlar ve genişletme veya geri alma sürecini otomatik olarak yönetirler. Mobil uygulamalar için canary, Google Play Console ve App Store Connect'te aşamalı dağıtımlar aracılığıyla gerçekleştirilir; burada yeni kullanıcıların payı, uygulama mağazası düzeyinde birkaç gün boyunca kontrol edilir.
Sıkça Sorulan Sorular
Canary Release, yeni bir sürümün kararlılığını kontrol etmek için bir dağıtım stratejisidir; A/B testi ise iki seçeneğin etkinliğini karşılaştırmak için bir deneydir. Canary “hizmet bozulacak mı” diye kontrol ederken, A/B “hangi seçenek iş için daha iyi” diye kontrol eder. Ancak canary altyapısı genellikle A/B deneylerinin temeli olarak kullanılır.
Optimal başlangıç yüzdesi, toplam trafiğin %1–5'idir. Bu, metriklerin istatistiksel anlamlılığı için yeterlidir ancak sorunlar sırasında kullanıcılar üzerinde önemli bir etki için yetersizdir. Düşük trafikli hizmetler için (1000 RPM'den az), anlamlı veriler elde etmek için pay %10–20'ye çıkarılabilir. Canary'ye yapılan mutlak istek sayısının analiz için yeterli olması önemlidir.
Canarya aşamasının minimum süresi, yeterli metrik toplamak için 10–30 dakikadır. Tam bir canarya sürüm döngüsü, hizmetin karmaşıklığına ve trafik hacmine bağlı olarak 30 dakikadan birkaç saate kadar sürebilir. Uygulama mağazaları aracılığıyla mobil uygulamalar için canarya aşaması, güncelleme dağıtım gecikmeleri nedeniyle 1–3 gün sürebilir.
Evet, mobil uygulamalar için canary, Google Play Console ve App Store Connect'te aşamalı dağıtımlar aracılığıyla gerçekleştirilir. Yeni sürüm önce kullanıcıların %1–5'ine sunulur, ardından çökme artışı olmazsa pay artar. Mobil uygulama backend hizmetleri için canary, API ağ geçidi tarafında trafik dağıtımı yoluyla standart şekilde çalışır.
Ana risk, dengesiz hata dağılımıdır: kanarya grubu yanlışlıkla belirli kullanıcıları (örneğin, yalnızca bir bölgeden) alabilir ve metrikleri bozabilir. Diğer bir risk, doğru izleme ve otomatik geri alma eşiklerini yapılandırmanın karmaşıklığıdır. Çok agresif bir canary (yüksek başlangıç yüzdesi veya hızlı dağıtım) ile kademeli dağıtımın avantajı kaybolur.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun