Progressive Delivery: Blue-Green ve Canary Stratejileri
Yayın stratejisi, yazılım kalitesinin görünmeyen ama en etkili bileşenlerinden biridir. Sık deploy yapan ekiplerde hedef sadece yeni sürümü üretime çıkarmak değil; bunu kontrollü riskle yapmak, geri dönüş yolunu açık tutmak ve kullanıcı etkisini minimumda tutmaktır. Bu noktada en çok kullanılan iki yaklaşım Blue-Green ve Canary'dir. İkisi de klasik "yerinde güncelleme" modeline göre daha güvenlidir ancak operasyonel olarak farklı ihtiyaçlara hitap eder.
Blue-Green yaklaşımında iki ayrı ama eşdeğer üretim ortamı tutulur: aktif ortam (Blue) ve yeni sürümün hazırlandığı ortam (Green). Trafik tek hamlede yeni ortama alınır; sorun olursa eski ortama dönülür. Canary yaklaşımında ise trafik kademeli artırılır; önce küçük bir kullanıcı yüzdesi yeni sürümü görür, metrikler sağlıklıysa oran büyütülür.
Doğru seçim, sadece teknik tercihe değil; gözlemlenebilirlik olgunluğu, maliyet toleransı, ekip refleksi ve sistemin risk profilinə bağlıdır.
Blue-Green'in güçlü yönleri
Blue-Green modelinin en belirgin avantajı hızlı rollback kabiliyetidir. Trafiği eski ortama almak çoğu durumda dakikalar içinde mümkün olur. Ayrıca çevre ayrımı net olduğundan incident anında hangi sürümün problem çıkardığını izlemek daha kolaydır.
Avantajlar:
- Trafik anahtarıyla çok hızlı geri dönüş.
- Eski/yeni ortam sınırlarının netliği.
- Canlıya yakın doğrulama senaryolarının kolay test edilmesi.
- Operasyonel iletişimde sade bir model.
Sınırlamalar:
- İki tam ortam maliyeti nedeniyle altyapı yükü.
- Veritabanı şema uyumluluğu iyi yönetilmezse geçiş riski.
- Trafik tek seferde değiştiği için ısınma problemi oluşabilmesi.
Blue-Green, özellikle rollback hızının kritik olduğu servislerde güçlü bir seçenektir.
Canary'nin güçlü yönleri
Canary modeli, riski tek adımda almak yerine kontrollü parçalar halinde alır. Örneğin %1 trafikle başlanır, hata oranı ve latency sağlıklıysa %5, %20, %50 ve %100'e geçilir. Bu yaklaşım yüksek frekanslı release yapan ekiplerde gerçek kullanıcı davranışıyla doğrulama imkanı verir.
Avantajlar:
- İlk aşamada çok düşük blast radius.
- Tam geçişten önce gerçek üretim sinyali elde edilmesi.
- Bölge, tenant veya kullanıcı segmentine göre kademeli rollout.
- SLO ve error budget yaklaşımıyla yüksek uyumluluk.
Sınırlamalar:
- Güçlü observability ve otomatik koruma mekanizması gerektirir.
- Rollback süreci Blue-Green kadar tek hamlede olmayabilir.
- Sıkı kapı koşullarında release süresi uzayabilir.
Canary, hızlı iterasyon yapan ürün ekiplerinde güvenli hız sağlamak için çok etkilidir.
Veri ve şema geçişleri
Yayın kazalarının önemli bölümü binary değişiminden değil, veri sözleşmesi kırılmasından kaynaklanır. Bu nedenle hangi strateji seçilirse seçilsin backward-compatible migration prensibi uygulanmalıdır:
- Önce ekleyici (additive) şema değişikliği.
- Hem eski hem yeni şemayı okuyabilen kod yayını.
- Backfill ve doğrulama.
- Yeni yazma yoluna geçiş.
- Eski alanların sonraki sürümde temizlenmesi.
Bu sıra, hem Blue-Green ortamları arasında hem de Canary kohortları arasında uyumluluğu korur.
Otomasyon ve güvenlik kapıları
Progressive delivery kişisel reflekslere değil, ölçülebilir politikalara dayanmalıdır. Rollout kapıları net tanımlanmalıdır:
- Hata oranı eşiği
- P95/P99 latency sınırı
- Kaynak doygunluğu ve kuyruk gecikmesi
- İş metriklerinde anomali kontrolü
Bu eşikler aşıldığında otomatik pause veya rollback tetiklenmelidir. İnsan onayı kritik aşamalarda kalabilir; ancak temel güvenlik mekanizması gece vardiyasında tek kişinin dikkatine bağlı olmamalıdır.
Hangi durumda hangisi?
Blue-Green tercih edin:
- Deterministik ve çok hızlı rollback gerekiyorsa
- Paralel ortam maliyeti karşılanabiliyorsa
- Geçişin net bir "switch" ile yönetilmesi isteniyorsa
Canary tercih edin:
- Günde çok sayıda yayın yapılıyorsa
- Güçlü metrik, tracing ve alert altyapısı varsa
- Riski kademeli artırmak isteniyorsa
Olgun ekipler çoğu zaman hibrit yaklaşım kullanır: büyük platform geçişlerinde Blue-Green, günlük servis sürümlerinde Canary. Asıl farkı yaratan, seçilen stratejiden çok onun disiplinli uygulanmasıdır.
Progressive delivery, deploy işlemini bir "butona basma" etkinliğinden çıkarıp kontrollü bir risk yönetimi pratiğine dönüştürür. Bu kültür yerleştiğinde hem teslim hızı artar hem de üretim güvenilirliği sürdürülebilir hale gelir.
İlgili Yazılar
StatefulSet ve Deployment Arasindaki Farklar: Kritik Noktalar
Kubernetes'te StatefulSet ve Deployment kaynaklarinin farklarini, hangi workload icin hangisinin dogru oldugunu, operasyonel riskleri ve production'da dikkat edilmesi gereken kritik noktalarni detayli inceliyoruz.
Mikroservislerde Chaos Engineering: Kontrollu Ariza Testleri
Mikroservis altyapisinda kaos deneyleri tasarlayarak dayanıklılık açıklarını onceden bulma ve azaltma yontemleri.
eBPF ile Backend Gozlemlenebilirligi: Agent Overhead'ini Azaltmak
eBPF tabanli gozlemlenebilirlik yaklasimi ile kernel seviyesinde metrik ve trace toplamanin avantajlarini anlatir.