RELEASE STRATEJİLERİ CANARY VE BLUEGREEN

Veri Akademi6 dk okuma
Blue-green deployment için aktif blue ortam ve bekleyen green ortam arasındaki trafik anahtarlama mantığı

Yeni sürümü tek seferde tüm trafikle mi sınamalı, yoksa kullanıcıların yalnızca %1'iyle başlayıp hata sinyallerini erken yakalamak mı daha güvenli? Bu soru pek çok ekibin deploy gecesi yaşadığı stresin tam ortasında duruyor. Canary release ve blue-green deployment, farklı maliyet ve risk profilleriyle aynı problemi çözüyor — hangisinin sistem topolojinize, trafik karakterine ve geri dönüş süresine uygun olduğunu seçmek, mühendislik kararından çok bir denge oyununa dönüşüyor.

1. Canary Release: Aşamalı Yayın Mantığı

Canary release, yeni sürümü önce çok küçük bir trafik diliminin (genelde %1-5) gördüğü, telemetri sağlıklı kaldıkça yüzdenin artırıldığı bir yayın yöntemidir. Adını madencilerin gaz sızıntısı için kullandığı kanaryadan alır: önce küçük bir grup risk taşır, ana kitle güvende kalır. Konuyu daha derinlemesine incelemek isteyenler için ilgili çevrimiçi kaynak faydalı bir başlangıç noktasıdır.

Bu yöntemin temelinde iki bileşen vardır: trafiği yüzdeye göre bölebilen bir yönlendirici (load balancer, service mesh veya feature flag platformu) ve hata oranı, gecikme, kaynak kullanımı sinyallerini canlı izleyen bir gözlemleme katmanı. Sinyal kırmızıya dönerse otomatik ya da manuel olarak trafik eski sürüme döndürülür.

2. Blue-Green Deployment: İki Paralel Ortam

Blue-green deployment, üretim trafiğini taşıyan "blue" ortamının yanında, yeni sürümün dağıtıldığı tıpatıp aynı "green" ortamını ayakta tutar. Yeni sürüm green'de smoke testlerinden geçtikten sonra yönlendirici tek hamlede tüm trafiği green'e çevirir. Blue, en az bir sürüm boyu yedek olarak bekletilir.

Canary release sırasında trafik yüzdesinin yüzde bir, yüzde beş, yüzde yirmi beş ve yüzde yüze çıkışını gösteren aşamalı şema

Bu yaklaşımda kullanıcılar ya tamamen eski ya da tamamen yeni sürümü görür; arada bir gri bölge yoktur. Geri dönüş gerektiğinde yönlendirici tekrar blue'ya çevrilir ve dakikalar içinde olay kapanır — çoğu zaman saniyeler içinde.

3. Risk Profili: Patlama Yarıçapı Farkı

İki yöntem arasındaki en kritik fark, bir hatanın etkilediği kullanıcı sayısıdır. Canary'de bozuk sürüm yalnızca canary dilimindeki kullanıcıları etkiler; %1 dilimde yayınlanan bir bug, üretim kitlesinin %99'una hiç dokunmaz. Blue-green'de ise switch sonrası tüm trafik aynı anda yeni sürüme bağlandığı için bir hata, geri dönüşe kadar tüm kullanıcıya dokunur.

  • Canary: Erken uyarı veren, küçük patlama yarıçaplı; ancak hatayı yakalamak için yeterli trafik ve sağlam metrik gerektirir.
  • Blue-Green: Tek anahtarda büyük geçiş; smoke testleri eksiksizse rahat, eksikse pahalı bir hata.
  • Hibrit yaklaşım: Yeni sürüm önce green'e konur, sonra green içinde canary akışı uygulanır — iki yöntemin avantajları birleşir.

4. Rollback Hızı ve Karmaşıklığı

Geri dönüş tarafında blue-green açık ara öndedir. Eski sürüm zaten ayakta olduğu için yönlendiriciyi blue'ya çevirmek tek bir API çağrısı kadardır. Canary'de rollback için trafik yüzdesi sıfıra düşürülür — yine hızlıdır, ama o ana kadar canary dilimine düşmüş kullanıcıların oturum, önbellek ve veritabanı yan etkileri ayrıca temizlenmelidir.

Bu nokta veritabanı şeması değiştiren sürümlerde özellikle önemlidir: blue ile green farklı şema versiyonlarına bakıyorsa, geri dönüş tek başına trafiği çevirmekle bitmez. Bu yüzden deneyimli ekipler şema değişikliklerini backward compatible biçimde, ayrı bir döngüde yayımlar.

5. Altyapı Maliyeti

Blue-green deployment'ın ana maliyet kalemi açıktır: iki tam üretim ortamını aynı anda ayakta tutmak gerekir. Stateless servisler için bu sadece bilişim parası demektir; veri katmanı varsa replikasyon, eşzamanlama ve test verisi başlı başına bir konu olur. Canary release, eski sürümün üstüne küçük bir yeni filo eklediği için altyapı yükü çok daha düşüktür — ama gözlemleme, trafik yönlendirme ve otomasyon yatırımı belirgin biçimde artar.

Canary ile blue-green stratejilerinin patlama yarıçapı, rollback süresi ve altyapı maliyeti açısından karşılaştırması

6. Hangi Senaryoda Hangisi?

Seçim sistem yapısına ve hataların geri dönüşüm hızına bağlıdır. Yüksek trafikli, mikroservis tabanlı, gözlemleme altyapısı olgun ekipler canary release ile küçük ama sık yayın ritmine geçebilir. Monolitik uygulamalar, kritik finansal işlemler veya değişimi parça parça denemeye uygun olmayan akışlar blue-green'den daha çok fayda görür.

  1. Hata oranı, gecikme ve iş metriklerini canlı izleyebiliyor musunuz? Cevap "evet" değilse canary'ye erken atlamayın.
  2. Veri katmanınız iki ortamı paralel taşıyacak şekilde tasarlandı mı? Hayırsa blue-green'in maliyeti kâğıt üstünde olduğundan büyük çıkar.
  3. Bir hata anında kullanıcı oturumlarının ne kadarını feda edebilirsiniz? Cevap "neredeyse hiç" ise canary, "geri dönüş hızı kritik" ise blue-green öne çıkar.

Modern CI/CD boru hatlarında her iki yöntem de standart araçlarla desteklenir; konuyu uçtan uca pratik olarak öğrenmek için CI/CD ve DevOps eğitimi içeriğinden yararlanabilirsiniz. Doğru seçim, doktrin olarak benimsenen bir yöntem değil — sistemin trafik karakterine, veri kararlılığına ve takımın olgunluk seviyesine göre kalibre edilen bir denge noktasıdır.

Sıkça Sorulan Sorular

Canary release için kaç yüzde trafikle başlamak doğru?

Yaygın başlangıç %1 ile %5 arasındadır. Daha düşük yüzdeler hata sinyallerini yakalamak için yetersiz trafik üretebilir, daha yüksek yüzdeler ise patlama yarıçapını gereksiz büyütür. İdeal yüzde toplam trafik hacmine, hata bütçesine ve metriklerin istatistiki anlamlılık eşiğine göre belirlenir; düşük hacimli sistemlerde %10 da makul olabilir.

Blue-green deployment veritabanı şeması değiştiren sürümlerde nasıl çalışır?

Şema değişiklikleri tek bir blue-green geçişine sıkıştırılmaz. İki ortam farklı şemaya bakacağı için işlemler kopabilir. Pratikte şema değişikliği backward compatible adımlara bölünür: önce yeni alanlar eklenir, uygulama sürümü dağıtılır, sonra eski alanlar ayrı bir döngüde kaldırılır. Böylece blue ile green eş zamanlı olarak aynı veriyle çalışabilir.

Canary release için zorunlu olan minimum gözlemleme yatırımı nedir?

En az üç metrik canlı izlenmelidir: hata oranı (HTTP 5xx veya iş hatası), p95/p99 gecikme ve iş metriği (örneğin sepete ekleme oranı). Bu üçü canary dilim ile baseline dilim arasında karşılaştırılabilir biçimde tutulmalı, eşik aşıldığında otomatik trafik düşürme tetiklenmelidir. Yoksa canary, sadece yavaş bir tam yayın olur.

Blue-green deployment'ta rollback gerçekten saniyeler içinde mi tamamlanır?

Yönlendirici geçişi tarafında evet — load balancer veya DNS güncellemesi saniyeler sürer. Ancak DNS TTL değerleri, açık WebSocket oturumları ve önbellek tabakaları rollback'in son kullanıcıya yansımasını dakikalara uzatabilir. Bu yüzden geçiş öncesi TTL düşürmek ve oturum drenajını planlamak önerilir; aksi halde 'anlık geri dönüş' beklenti olarak kalır.

Mikroservis mimarisinde canary ile blue-green nasıl birleştirilir?

Tipik hibrit yaklaşım, kritik servisler için canary, durum tutmayan veya seyrek değişen servisler için blue-green kurmaktır. Service mesh katmanı her servis için ayrı trafik bölme politikası tanımlamayı pratik hale getirir. Önemli olan, deploy birimi mikroservis olsa da yayın kararının iş akışı düzeyinde alınması ve birbirine bağlı servislerin aynı anda risk almamasıdır.

Küçük bir start-up için hangi yöntem daha gerçekçi başlangıçtır?

Ekip büyüklüğü 10 mühendisin altındaysa ve trafik henüz düşükse, blue-green deployment çoğu zaman daha pragmatiktir. Kurulumu basittir, ek gözlemleme yatırımı gerektirmez ve hata anında hızlı geri dönüş sunar. Canary, trafik bir istatistik üretmeye yetecek hacme ulaştıktan ve metrik altyapısı olgunlaştıktan sonra anlamlı hale gelir.

Feature flag kullanımı bu iki yöntemin yerine geçer mi?

Hayır, feature flag farklı bir katmandır. Flag'ler tek bir kullanıcı veya kohort bazında özellik açıp kapatmaya yarar; deployment'ın kendisini etkilemez. Pratikte üçü birlikte kullanılır: sürüm blue-green ile yayınlanır, içindeki yeni özellik flag arkasında saklı tutulur ve flag canary mantığıyla aşamalı olarak açılır. Bu üçlü, riski en aza indirir.