Six independent services. No central saga orchestrator.
api-gateway-service is the only synchronous entry point a client ever talks to — one
gRPC hop to user-service for auth, one guarded HTTP route into the Kafka-driven saga
chain. Everything past that gateway reacts to events independently; nothing issues commands down
the chain. See Saga Flow for how a single order actually moves through it.
Every Kafka-driven service follows the same transactional-outbox shape (domain write + outbox
row, one transaction, then a separate poller). What's actually different per service — ports,
topics, schemas — is on the Services Reference diagram.
Testing follows its own layered approach, independent of this module split — see the
Testing Strategy diagram.