what if we simplify each to binary: we get 8 permutations (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
transactional boundary
Article: 8 fallacies of distributed computing 9 10 compensating updates always work
(1) epic saga
first attempt at saga
error: compensating updates consistency on the workflow level: read delta - 1 implementation detail
- orchestrator implements “delta - 1”
- services implement “delta - 1”
mimics non-distributed
anti-pattern atomic drives a lot of problem
(2) fantasy fiction saga
first attempt at fixing saga
errors: async compensating update faster: parallel compensating update still waiting for compensating update
concurrency: deadlocks, race-conditions
(3) fairy tale saga
examplar from Chris Richardson's 2 types of saga's
error: eventually consistent compensating update reads can return “delta” instead of “delta - 1”
(4) parallel saga
error: fast feedback to initator concurrency: deadlocks, race-conditions
(5) phone tag saga with same returnpath or other return path all sync calls
error handling
uncommon: usually when doing choreography, ppl use async
(6) horror story saga
one has to be the worst
very fast happy path
errors: wait with response until sure it was a happy path
we need async and choreography, and the business told us we need consistency
(7) time travel saga
error
(8) anthology saga
examplar from Chris Richardson's 2 types of saga's
fastest, most scaleable
error flow