Monoliti Çok Hızlı Bölme Hatası
Monolitimizi 3 ayda 15 mikroservise böldük. Sonra 2 yıl boyunca sınırları düzeltmekle uğraştık.
Nasıl böldük:
- Veritabanı tablosu başına bir servis
- "Bu doğal bir sınır gibi görünüyor"
- Hızlı gönder, sonra düzelt
Neyi yanlış yaptık:
- Sipariş servisi Müşteri verisine ihtiyaç duyuyordu
- Müşteri servisi Sipariş geçmişine ihtiyaç duyuyordu
- Her istek: 5+ servisler arası çağrı
- HTTP üzerinden dağıtılmış join'ler (evet, gerçekten)
Belirtiler:
- P99 gecikmesi: 50ms → 800ms
- Bir servis çöktüğünde = her şey bozuluyordu
- Ekipler bağımsız olarak yayın yapamıyordu (asıl amaç buydu)
- Servisler arasında veri tutarsızlığı
Ne yapmalıydık:
- Önce DDD event storming
- Gerçek sınırlı bağlamları bul
- Tabloya göre değil, iş yeteneğine göre böl
- Trafik desenleriyle sınırları doğrula
Ders: Servis sınırları doğru yapılması en zor şeydir. Acele etmeyin.