Software Architecture · Cluster
Distributed Architecture
Service boundaries and failure domains.
- 01 Availability Multiplication in Synchronous Service Graphs Why end-to-end availability is the product of every dependency on the request path, how fan-out changes that product, and which edges can be removed or made optional.
- 02 Drawing Service Boundaries Around Consistency Requirements How invariants determine where a service boundary can fall, what a shared database does to that boundary, and which cross-service operations need a different mechanism entirely.
- 03 Blast Radius and Cell-Based Isolation How failure propagates through shared pools and control planes, how cells bound the damage to a fraction of traffic, and what the routing layer costs in exchange.
- 04 Temporal Coupling Between Services What a synchronous call forces on two services, how message passing changes the coupling without removing it, and where each style breaks under load.
- 05 Idempotency Keys and Duplicate Suppression at Service Boundaries How to make a retried request safe when the first attempt had an unknown outcome, where the claim record must sit relative to the side effect, and when key-based deduplication is not enough.
- 06 The Dual-Write Problem and the Transactional Outbox Why committing to a database and publishing to a broker cannot both be atomic, which failure windows open between them, and how an outbox table turns the problem into a delivery guarantee consumers must absorb.
- 07 Deadline Propagation Across Service Hops Why a timeout configured independently at each hop produces work nobody waits for, how an absolute remaining budget survives the chain, and where cancellation actually stops.
- 08 Compensating Transactions in Multi-Service Workflows How a saga replaces an impossible distributed commit with local steps and explicit undo actions, why the undo is not a rollback, and what becomes visible while the workflow is in flight.
- 09 Read Models Across Service Boundaries What changes when a screen needs data from three owners, how a replicated projection trades freshness for availability, and how to make staleness a stated contract instead of a bug report.
- 10 Independent Deployability and Cross-Service Contracts What must be true for two services to be released on separate schedules, how wire formats absorb change, and why a passing contract test does not prove compatibility.