Kurumsal bir şirket 20.000 mikroservisi Kubernetes'e taşıdı. İlk gün sadece %30'u çalıştı.

Plan:

  • "Sadece konteynerleştir ve dağıt"
  • Otomatik geçiş araçları
  • Büyük patlama kesinti hafta sonu

Ne yanlış gitti:

  • 14.000 servis sağlık kontrollerinde başarısız oldu
  • Her yerde belgelenmemiş sabit kodlanmış IP'ler
  • Belirli dosya sistemi yolları bekleyen servisler
  • Ana bilgisayar adı formatlarına gizli bağımlılıklar
  • Zaman dilimi varsayımları (konteyner varsayılanı: UTC)

Keşifler:

  • Servis A, geçici dosyaları /opt/app/tmp'ye yazıyordu (yazılabilir değil)
  • Servis B, ortamı belirlemek için kendi IP'sini ayrıştırıyordu
  • Servis C, "prod-db-01" adlı bir sunucuda olmayı bekliyordu
  • 2.000'den fazla serviste sabit kodlanmış `localhost` referansları vardı

Ne yapılmalıydı:

  • Aşamalı geçiş (durumsuz olanlarla başla)
  • Her servis için konteyner hazırlık kontrol listesi
  • Çift yazma ile kanarya dağıtımları
  • Gerçekçi zaman çizelgesi (haftalar değil, aylar)

Ders: Konteynerleştirme sadece "docker build" değildir. Bu bir altyapı arkeolojisidir.


← Alınan Derslere Dön