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.
- 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.
- 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.
- 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.
- 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.
Yorumlar
Yorum yapmak için GitHub hesabınızla giriş yapmanız yeterli. Yorumlar GitHub Discussions üzerinde saklanır.