Distributed Booking System
- A hotel-booking platform of ~10 microservices, each with its own database, deployed to GKE with Helm and per-service CI/CD.
- Bookings run as an orchestrated saga with the outbox pattern and compensating actions, with no two-phase commit.
- Change Data Capture (Debezium → Kafka) feeds local read replicas, so bookings keep working when upstream services are down.
- Resilience checked with chaos experiments, Pact contract tests, k6 load tests and canary releases.
How one booking moves through the saga
place-bookingBookingService starts the sagareserve-roomon failure: release-roomcharge-paymenton failure: refund-paymentconfirm-bookingPivot: after this, steps only retrysend-confirmationRetried until delivered