20.000 Mikroservis Geçişi
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.