Distributed Transactions: Sagas, the Transactional Outbox, and Change Data Capture