Bayat Cache Verisi Felaketi
Bir promosyon sona erdi. Cache'in bundan haberi olmadı. Müşteriler dört saat daha $500'lık ürünleri $350'lık promosyon fiyatından almaya devam etti.
Ne oldu:
- Admin promosyonu sonlandırdı ve veritabanında normal fiyatı geri getirdi
- Cache TTL'i 6 saatti
- Güncellemede cache invalidation yoktu
- API cache'teki (promosyon) fiyatı sundu
- Süresi dolmuş fiyattan 327 sipariş
- Birisi fark edene kadar yaklaşık $49.000 istenmeyen indirim
Kök neden:
Admin paneli veritabanını doğrudan güncelliyordu. Cache katmanının bir şeyin değiştiğinden haberi yoktu.
Çözüm:
- Write-through cache: güncellemeler cache katmanından geçer
- Olay güdümlü invalidation: veritabanı değişiklikleri cache temizliğini tetikler
- Fiyata duyarlı veri için daha kısa TTL (5 dakika)
- Adminler için manuel cache temizleme düğmesi
Ders: Cache invalidation zordur, çünkü verinin değişebileceği her yeri bilmenizi gerektirir. Gözden kaçan tek bir yol = bayat veri felaketi. Invalidation yerindeyken bile bunun nasıl ters gittiğinin uzun versiyonu için cache invalidation kâbusumuza bakın.
Bu tür olaylar önlenebilir. AWS Yönetilen Hizmetler ekibimiz müşteri ortamlarını yapay zekâ destekli izleme ve nöbetteki kıdemli mühendislerle 7/24 gözetir — böylece bu tür hikâyeler arşivde kalır.