Multi-service trip booking consistency

DesignHard50 minAirbnb style

Your task

Design the booking/transaction flow for a travel platform where a single 'trip' purchase must reserve a flight, a hotel, and a car, each owned by a different microservice with its own database, possibly in different regions. The whole trip must be all-or-nothing from the user's view (no charging for a flight if the hotel can't be booked), but you cannot run a distributed ACID transaction across these independent services. How do you keep the booking consistent?

It covers

  • Transactions
  • Saga
  • Isolation