Hız sınırlayıcımız durumu Redis'te saklıyordu. Redis çöktü. Hız sınırlaması durdu. DDoS saldırısı geldi.

Zaman çizelgesi:

  • 14:00 - Redis master bakıma alındı
  • 14:01 - Hız sınırlayıcı durumu okuyamadı/yazamadı
  • 14:01 - Hata durumunda açık: tüm isteklere izin verildi
  • 14:02 - API'ye saniyede 500 bin istek geldi
  • 14:03 - API sunucuları aşırı yüklendi
  • 14:05 - Tam kesinti

Tasarım hatası:

Hız sınırlayıcı depolaması başarısız olduğunda, "hata durumunda kapalı" (her şeyi engelle) yerine "hata durumunda açık" (her şeye izin ver) seçeneğini seçtik.

Bu seçimi neden yaptık:

"Redis sorunlarının meşru kullanıcıları engellemesini istemiyoruz."

Ne yapmalıydık:

  • Bellek içi yedek hız sınırlayıcı
  • Depolama kullanılamadığında muhafazakar sınırlar
  • Otomatik yük devretme için Redis Sentinel
  • Birden çok katmanda hız sınırlaması (CDN, API Gateway, Uygulama)

Ders: Güvenlik kontrolleri açık değil, kapalı olarak hata vermelidir. Şüpheye düştüğünüzde reddedin.


← Alınan Derslere Dön