Üretim 2 saat kapalı. Kök neden: Tek bir yazım hatası.

Değişiklik:

# ConfigMap update
data:
  DATABASE_CONNECITON_TIMEOUT: "30000"  # typo: CONNECITON

Ne oldu:

  • Uygulama DATABASE_CONNECTION_TIMEOUT'u aradı
  • Bulamadı (yazım hatası) ve varsayılan değer tanımlı değildi
  • Config yükleyici veritabanı sürücüsüne sessizce 0 geçti
  • Bizim sürücümüzde — JDBC ve libpq'da olduğu gibi — 0 timeout timeout yok demek
  • Zaten yavaş bir replica'ya giden sorgular süresiz askıda kaldı, bağlantı havuzu takılı bağlantılarla doldu ve arkasındaki her istek servis yanıt vermeyi bırakana kadar kuyrukta bekledi

Neden yakalanmadı:

  • ConfigMap'ler sadece YAML — şema yok
  • Kubernetes anahtar adlarını doğrulamaz
  • PR incelemesi yazım hatasını kaçırdı
  • Entegrasyon testleri farklı config kullanıyordu

Düzeltmeler:

  • Uygulama zorunlu env var'ları açılışta doğruluyor
  • Kritik config eksikse hızlı başarısız ol (fail fast)
  • CI'da ConfigMap'ler için şema doğrulaması
  • Sorunları erken yakalamak için canary deployment'lar

Config şema kontrolleri, bir CI/CD pipeline'ına ekleyebileceğiniz en ucuz kapılardan biri — iki saatlik kesintiye karşılık birkaç satır doğrulama.

Ders: ConfigMap'ler kod değildir — ama kodmuş gibi davranın.


← Çıkarılan Dersler'e dö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.