Monoliti Çok Hızlı Bölmek
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.
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.