Bağlam
Günlük 4M paket işleyen lojistik platformu, kampanya günlerinde (örneğin 11.11) 6-8 katı yüke çıkıyor; monolitik backend yatay ölçeklemiyordu. Sipariş alımı, barkod üretimi, depo yönlendirme aynı veritabanı üzerinden çalışıyor; bir bileşen yavaşladığında tüm zincir tıkanıyordu.
Yaklaşım
- Domain haritası — sipariş, barkod, depo, dağıtım, mutabakat olarak 5 ana domain.
- Strangler fig pattern — yeni servisler eski monolitin yanında çalıştırıldı.
- Kafka backbone — event’ler topic’lere bölündü; consumer group bazında ölçeklenebilir.
- Outbox pattern — transactional event yayını; veri kaybı sıfır.
- CDC köprüsü — eski monolit DB → Kafka (Debezium); kademeli devre dışı bırakma.
Çözüm ana hatları
- Mesajlaşma: Apache Kafka 3.7 (KRaft mode, 5 broker) + Schema Registry.
- Servisler: 26 mikroservis; çoğunluğu Go + bazı Java Spring Boot.
- Orkestrasyon: Temporal workflow engine; uzun-vadeli süreçler (kargo lifecycle).
- Veri: PostgreSQL Patroni + Redis cache + ClickHouse analitik.
- Konteyner: RKE2 + ArgoCD; Mono Cloud üzerinde 3 bölge.
Sonuç
11.11 kampanya gününde 12x tepe yükü sıfır olay ile karşıladı. Sipariş alımı → barkod oluşturma süresi %34 iyileşti. Servisler bağımsız ölçeklendiği için kampanya dışı dönemde maliyet %26 azaldı. Yeni bir kargo iş kuralı eklemek 2 hafta → 2 gün.