Náš systém rostl organicky. Služba A volá službu B synchronně, B volá C, C volá D. Když D spadne, spadne celý řetězec. S Apache Kafka jsme přešli na event-driven architekturu.
Problém: synchronní řetězy¶
V synchronní architektuře je latence aditivní a dostupnost multiplikativní. S každou přidanou službou se systém zhoršuje. Retry a circuit breaker pomáhají, ale synchronní coupling je křehký.
Kafka jako event bus¶
- Persistence — eventy na disku, retence konfigurovatelná
- Ordering — v rámci partition garantované
- Replayability — konzument může přečíst od libovolného offsetu
- Throughput — miliony zpráv za sekundu
Event sourcing pattern¶
Místo aktuálního stavu objednávky ukládáme každou změnu jako event: OrderCreated, PaymentReceived, ItemShipped. Aktuální stav je projekce těchto eventů. Kompletní audit trail, replay, temporal queries.
Kafka Connect¶
JDBC source connector čte změny z databáze, Elasticsearch sink connector indexuje eventy. Konfigurace v JSON, žádný vlastní kód.
Event-driven architektura je investice, která se vrací¶
Přechod na Kafka nebyl jednoduchý — museli jsme změnit způsob přemýšlení. Ale odolnost, škálovatelnost a flexibilita za tu investici stojí.