Hata oranı artınca otomatik rollback yapan (self-healing) deploy altyapısını nasıl tasarlarım?
Yeni sürümü canary ağırlığında bir bake süresi boyunca 5xx ve latency eşiğine karşı ölçün; eşik aşılırsa son kararlı sürüme dönüp ekibi yalnızca uyarın.
Etiket
Arıza altında ayakta kalma: timeout, yeniden deneme, geri çekilme ve bölmeleme.
Bu etikette 14 cevaplanmış soru var.
Yeni sürümü canary ağırlığında bir bake süresi boyunca 5xx ve latency eşiğine karşı ölçün; eşik aşılırsa son kararlı sürüme dönüp ekibi yalnızca uyarın.
Rutin sürümlerde Canary'yi varsayılan yapın, instant rollback istediğiniz büyük cutover'lara Blue-Green'i saklayın; ikisi de geriye uyumlu şema şart koşar.
Periyodik base backup alıp WAL'ı sürekli S3'e arşivleyin, recovery_target_time ile hatalı ifadenin saniyeler öncesine dönün ve restore'u prova edin.
İşe `tries` ve `backoff` verin: sınır dolunca Laravel işi `failed_jobs`'a taşır, `JobFailed` listener'ı alert eder, düzelen işi `queue:retry` geri oynatır.
Liveness'ı bağımlılıksız tutun, bağımlılıkları readiness'ta cache'li yoklayın: liveness fail pod'u restart eder, readiness fail yalnız trafiği keser.
Kilitleri tek bir global sırada, artan PK gibi, alın; transaction'ı kısa ve dar tutun, hedefli `FOR UPDATE` kullanın, kalanı backoff ile retry edin.
Zincirin en dışına `defer recover()` koyun, stack'i request id ile loglayıp generic 500 dönün, metrik basın, her goroutine'e kendi recover'ını verin.
RPO 5 dakika sürekli cross-region replikasyon ve PITR, RTO 30 dakika ise IaC ile hazır bekleyen sıcak yedek ve Route 53 failover demek; düzenli prova edin.
Tekrarlı logu uygulamada sayaçla tek satıra indirin, retry'a backoff koyun, logrotate'e boyut ve sayı sınırı verin, `/var/log`'u kök diskten ayırın.
IP limiti dönen proxy'lere yenilir: Redis sliding-window'u hesap + IP + ASN'de anahtarlayın, hesap kilidi ekleyin, volumetrik seli edge'e bırakın.