Sagas in Erlang: Distributed Transactions Without Locks
summary
Claims that sagas give transactional semantics across arbitrarily distributed services without locks and implements them in Erlang by folding over closures, with compensating rollback closures and checkpoints. Tools and artifacts include an open source Gflow library on GitHub, a small future abstraction called Criswell futures, and property‑based tests (QuickCheck/proper style). A concrete use case is creating 50 cloud nodes; implementation spawns each operation, monitors failures, reverses the executed list and replays compensations, and assumes rollbacks cannot abort.
AI-written summary · about
chapters (19)
- 0:00Introduction
- 1:04Sagas
- 6:47FoldL
- 9:47Gflow
- 12:05Terminology
- 13:36Operations
- 15:31Assumptions
- 17:25Compensating Transactions
- 18:32Futures
- 18:50Criswell
- 20:13Semantics
- 21:54Property Based Testing
- 22:38QuickCheck
- 23:42Macros
- 24:55Resources
- 25:51Failure
- 28:18Unwind
- 29:15Checkpointing
- 30:22Dependencies
related talks
50mTransactional solutions for microservices
46mLost in transaction? Strategies to deal with (in-)consistency in distributed systems
51mNot Just Events: Developing Asynchronous Microservices
17mSaga Pattern for Distributed Transactions
35mDistributed Transactions in Service Mesh
55mTackling transactions in Microservices applications
30mData Consistency Patterns in Cloud Native Applications
28mFailing (and recovering) asynchronously: a saga
