İçeriğe geç
Muhammet Şafak
en
Soran: Bora Cevaplandı:

Fintek API'ı için Canary mi, Blue-Green deployment mı?


Soru

Binlerce kullanıcının anlık işlem yaptığı kritik bir fintek API'ımız var ve yeni sürüm çıkarken riski sıfırlamak istiyoruz. İki seçenek var: tüm trafiği bir anda yeni ortama almak (Blue-Green) ya da trafiğin %1'ini yeni sürüme verip logları izlemek (Canary). Altyapı maliyeti, veritabanı şema değişikliği (backward compatibility) ve rollback hızını düşünerek hangi senaryoda hangisini seçerim?

Cevap

Kısa cevap: Yüksek riskli bir fintek API’ında rutin sürümler için Canary’yi varsayılan yap; anında çevirebileceğin/geri alabileceğin büyük cutover’lar için Blue-Green’i elinde tut.

Asıl mesele şu: ikisi de aynı problemi farklı maliyetle çözüyor — yeni sürümü canlı trafikle, ama kontrollü şekilde sınamak.

  1. Canary: en küçük blast radius, en güvenli varsayılan. %1 trafik → hata oranı, latency ve iş metriklerini izle → kademeli ramp. Gerçek dünya hatalarını çok küçük bir kullanıcı kitlesiyle yakalarsın. Bir fintekte rutin sürümün doğal seçimi budur.
  2. Blue-Green: en hızlı rollback, en pahalı altyapı. Tam bir ikinci ortam ayağa kaldırır, trafiğin tamamını anında oraya çevirirsin. Rollback neredeyse anlık (geri çevir) ve temiz bir pre-prod test ortamı verir; ama altyapıyı ikiye katlar ve %100’ü aynı anda riske atar.
  3. Belirleyici nokta veritabanı. Her iki stratejide de eski ve yeni sürüm bir süre aynı anda çalışır. Bu yüzden şema değişikliklerin geriye uyumlu (expand/contract) olmak zorunda — migration backward-compatible değilse ne Canary ne Blue-Green seni kurtarır; eski kod yeni şemada patlar.
  4. Rollback hızı vs. maliyet dengesi. Blue-Green ≈ anlık geri dönüş ama yüksek maliyet; Canary hızlı (ağırlığı geri al) ve ucuz. Para hareketi olan bir API’da bu denge, “ne sıklıkta ve ne kadar riskli deploy ediyorsun” sorusuyla çözülür.

Sonuç: Ben olsam günlük sürümler için Canary’yi standart yapardım — en düşük risk, en küçük etki alanı. Büyük, riskli cutover’lar (major sürüm, altyapı taşıması) için Blue-Green’in instant rollback’ini saklardım. Ama strateji ne olursa olsun değişmeyen kural: her migration’ı geriye uyumlu yaz. Şema disiplinini kurmadan hiçbir deploy stratejisi seni güvende tutmaz.

Etiketler: #ci-cd#deploy#dayanıklılık
Paylaş:

Yorumlar

Yorum yapmak için GitHub hesabınızla giriş yapmanız yeterli. Yorumlar GitHub Discussions üzerinde saklanır.

Diğer Sorular

Tüm sorular

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Esc ile kapat Pagefind ile güçlendirildi