Chapter 1
Failure Models: Name What Can Go Wrong
Reliability starts by describing failures clearly instead of saying that the system may be unstable.
A failure model is a list of ways a component can stop meeting its promise. A process can crash, a machine can disappear, a network can delay or drop messages, a dependency can return bad data, and a person can deploy the wrong configuration. These failures have different causes and need different defenses.
Start with one user journey and inspect every step. For each step, record the expected result, how long it may take, whether it changes data, and what the caller sees when it fails. Also identify the failure domain: one process, one machine, one availability zone, one region, or the whole organization.
For a checkout flow, the catalog may be optional while payment and order storage are critical. If recommendations fail, the page can continue. If payment is uncertain, the system must stop and reconcile rather than guess. This simple classification guides later choices about timeouts, retries, and degraded modes.
You cannot design a useful recovery until you can state the failure, its scope, and its user impact.
How to apply this
- Map failures against a real user journey, not an abstract component list.
- Separate critical dependencies from optional enhancements.
- Record how each failure will be detected and who owns recovery.
Situation
The product page waits forever for a recommendation service even though product and price data are healthy.
Decision
Mark recommendations as optional, give them a short deadline, and render the core product page when that deadline is reached.