irfo
Moderatör
- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Eski madencilerin, madendeki zehirli gazları tespit etmek için yanlarında kanarya taşımalarından esinlenen Canary Release (Kanarya Dağıtımı), modern DevOps dünyasının en güvenli yayına alım stratejilerinden biridir.
Blue-Green stratejisinden farklı olarak, tüm trafiği bir anda değiştirmek yerine, yeni sürümü önce kullanıcıların çok küçük bir kısmına (%1, %5 gibi) sunarız. Eğer bu "kanaryalar" hayatta kalırsa (yani sistem hata vermezse), yeni sürümü kademeli olarak tüm kullanıcılara yayarız.
Canary Release stratejisini uygulamak için trafiği yönlendirecek bir "akıllı" mekanizmaya ihtiyacınız vardır:
Nginx veya Kubernetes Ingress üzerinden ağırlıklı (weighted) yönlendirme yapılabilir.
Eğer mikroservis mimarisi kullanıyorsanız, Istio gibi araçlarla çok daha hassas kurallar (örneğin sadece Android kullanıcıları veya sadece belirli bir bölgedeki kullanıcılar yeni sürümü görsün) belirleyebilirsiniz.
Canary Release, "Hızlı hareket et ve bir şeyleri boz" felsefesini, "Hızlı hareket et ama sadece küçük bir kısmı boz" şeklinde evrimleştirir. Özellikle milyonlarca kullanıcısı olan platformlar için hata payını minimize eden en prestijli dağıtım yöntemidir.
Blue-Green stratejisinden farklı olarak, tüm trafiği bir anda değiştirmek yerine, yeni sürümü önce kullanıcıların çok küçük bir kısmına (%1, %5 gibi) sunarız. Eğer bu "kanaryalar" hayatta kalırsa (yani sistem hata vermezse), yeni sürümü kademeli olarak tüm kullanıcılara yayarız.
Neden Canary Release Kullanmalıyız?
- [] Gerçek Dünya Testi: Test ortamlarında asla simüle edilemeyecek gerçek kullanıcı davranışlarını ve trafik yükünü gözlemleme şansı verir. [] Risk Yönetimi: Eğer bir hata varsa, bu hatadan tüm kullanıcılar değil, sadece %1'lik küçük bir grup etkilenir. [] Performans İzleme: Yeni sürümün CPU, RAM ve veritabanı üzerindeki etkisini canlı verilerle kıyaslamanızı sağlar. [] Kademeli Güven: Sistem stabil çalıştıkça trafiği %10, %25, %50 ve %100 şeklinde artırarak özgüvenli bir dağıtım yaparsınız.
Teknik Uygulama Yöntemleri
Canary Release stratejisini uygulamak için trafiği yönlendirecek bir "akıllı" mekanizmaya ihtiyacınız vardır:
Nginx veya Kubernetes Ingress üzerinden ağırlıklı (weighted) yönlendirme yapılabilir.
YAML:
Kubernetes Nginx Ingress Canary Örneği
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: forum-canary annotations: nginx.ingress.kubernetes.io/canary: "true" nginx.ingress.kubernetes.io/canary-weight: "10" # Trafiğin %10'unu buraya gönder spec: rules:
host: https://www.google.com/search?q=forum.com http: paths:
path: / backend: service: name: forum-v2-service port: number: 80
Eğer mikroservis mimarisi kullanıyorsanız, Istio gibi araçlarla çok daha hassas kurallar (örneğin sadece Android kullanıcıları veya sadece belirli bir bölgedeki kullanıcılar yeni sürümü görsün) belirleyebilirsiniz.
Blue-Green vs. Canary: Hangisi Daha İyi?
| Özellik | Blue-Green | Canary Release |
|---|---|---|
| Geçiş Hızı | Anlık (%0 -> %100) | Kademeli (%1 -> %100) |
| Hata Etkisi | Tüm kullanıcılar etkilenir. | Sadece küçük bir grup etkilenir. |
| Maliyet | Yüksektir (2 tam ortam). | Düşüktür (Ekstra birkaç pod). |
| İzleme | Basit (Çalışıyor/Çalışmıyor). | Karmaşık (Derin analiz gerekir). |
Başarılı Bir Canary Süreci İçin İpuçları
- [] Gözlemlenebilirlik Şart: Canary sürümündeki hata oranlarını (5xx hataları) ve gecikme sürelerini (latency) anlık olarak izleyemiyorsanız bu strateji tehlikelidir. [] Otomatik Rollback: Eğer %1'lik gruptaki hata oranı eşik değerini aşarsa, sistem otomatik olarak trafiği eski sürüme geri döndürmelidir.
- Sticky Sessions (Yapışkan Oturumlar): Bir kullanıcı yeni sürümü görmeye başladıysa, süreç tamamlanana kadar hep o sürümü görmelidir; aksi halde tutarsız bir deneyim yaşar.
Sonuç
Canary Release, "Hızlı hareket et ve bir şeyleri boz" felsefesini, "Hızlı hareket et ama sadece küçük bir kısmı boz" şeklinde evrimleştirir. Özellikle milyonlarca kullanıcısı olan platformlar için hata payını minimize eden en prestijli dağıtım yöntemidir.