Monolitimizi 3 ayda 15 mikroservise böldük. Sonra sınırları düzeltmek için 2 yıl harcadık.

Nasıl böldük:

  • Her veritabanı tablosuna bir servis
  • “Bu doğal bir sınır gibi görünüyor”
  • Hızlı çıkar, sonra düzelt

Neyi yanlış yaptık:

  • Order servisinin Customer verisine ihtiyacı vardı
  • Customer servisinin Order geçmişine ihtiyacı vardı
  • Her istek: 5+ servisler arası çağrı
  • HTTP üzerinden dağıtık join'ler (evet, gerçekten)

Belirtiler:

  • P99 gecikmesi: 50ms → 800ms
  • Bir servis düştü = her şey bozuk
  • Ekipler bağımsız release yapamıyordu (işin bütün amacı buydu)
  • Servisler arasında veri tutarsızlığı

Ne yapmalıydık:

  • Önce DDD event storming
  • Gerçek bounded context'leri bulmak
  • Tabloya göre değil, iş yeteneğine (business capability) göre bölmek
  • Sınırları trafik desenleriyle doğrulamak

Ders: Servis sınırları, doğru kurgulanması en zor şeydir. Acele etmeyin — dışarıdan bir DevOps ve mimari incelemesi kendini tam da sınır tasarımında amorti eder; bölmeden önce, sonra değil.


← Çı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.