Bağlam
Müşteri, 8 yıl önce yazılmış monolitik bir ödeme çekirdeği üzerinden günde milyonlarca işlem işliyordu. Ürün ekibi yeni PSP entegrasyonları ve uluslararası genişleme planlıyor; ancak her sürüm 3 saatlik bakım penceresi gerektiriyor, p99 gecikme zirvelerde 1.4 saniyeye çıkıyordu.
Yaklaşım
Çekirdeği bir kerede değiştirmek yerine tedrici dekomposizyon uyguladık:
- Trafik bir API gateway arkasına taşındı; tüm işlemler etiketlendi.
- PSP yönlendirme katmanı bağımsız bir servise ayrıştırıldı (event-driven).
- Reconciliation iş yükü Kafka tabanlı bir veri akışına çekildi.
- Yeni servisler, eskiyle yan yana 3 ay paralel çalıştı (shadow mode).
- Trafik kanary ile %1 → %50 → %100 olarak taşındı.
Çözümün ana hatları
- Mimari. Domain-driven decomposition; ödeme, anti-fraud, mutabakat ve raporlama olarak 4 ana domain.
- Veri. Outbox pattern ile transactional event yayını; reconciliation için CQRS okuyucuları.
- Operasyon. SLO-temelli alarmlar, otomatik geri-alma, gerçek zamanlı işlem dashboard’u.
Sonuç
12 ay boyunca üretim ortamında %99.97 uptime ile çalıştı. Sürüm penceresi tamamen kalktı (zero-downtime). Yeni PSP ekleme süresi 6 haftadan 4 güne indi.