what if we simplify each to binary: we get 8 permutations (1) Sagas

(2) sharding

  • example: concert tickets
  • example: sysops experts

(1) Sagas

dimensions of change ./resources/architecture-the-hard-parts-sagas-distributed-tran.resources/unknown_filename.png


Any change to any of these 3 forces, changes everything…

./resources/architecture-the-hard-parts-sagas-distributed-tran.resources/unknown_filename.1.png




treat as binary for simplicity


then we get: Model: 8 types of sagas

  1. epic saga
  2. fantasy fiction saga
  3. fairy tale saga
  4. parallel saga
  5. phone tag saga
  6. horror story saga
  7. time travel saga
  8. anthology saga

./resources/architecture-the-hard-parts-sagas-distributed-tran.resources/unknown_filename.2.png orchestration + atomic => drives complexity


hybrid sagas epic saga with async compensating updates ./resources/architecture-the-hard-parts-sagas-distributed-tran.resources/unknown_filename.3.png


(2) sharding

example: concert tickets ./resources/architecture-the-hard-parts-sagas-distributed-tran.resources/unknown_filename.4.png

./resources/architecture-the-hard-parts-sagas-distributed-tran.resources/unknown_filename.5.png

create a microservice that owns a region

How to see available seats? ./resources/architecture-the-hard-parts-sagas-distributed-tran.resources/unknown_filename.6.png cache for available seeds

example: sysops experts ./resources/architecture-the-hard-parts-sagas-distributed-tran.resources/unknown_filename.8.png ./resources/architecture-the-hard-parts-sagas-distributed-tran.resources/unknown_filename.7.png shard per experts?