Misc
Distributed Communications Failure
Failure is always an option
We have 4 option to handle distributed exceptions.
- Ignore
- Swallow exceptions
- Retry
- How many times?
- Ensure no duplication (-> idempotent)
- Undo
- Does a logical undo exist?
- What do we do if Undo fails?
- Coordination
- Two-Phase Commit (Prepare with all involved resources -> Commit)
- Distributed transaction (usually doesn't work with web APIs)
- ❌Costly
- Communicator (Two phase commit, )
For each case and each possible failure (call to XY failed, message to service bus could not be published) we need to consider the 4 options and choose the best.
Metrics
Hotspot for Code Churn vs (Cyclomatic or Cognitive) Complexity
- Many code changes with high complexity