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.


← Alınan Derslere Dön