Development
Failure Prevention Is the Wrong Goal
Joe Farrell
Written on April 21, 2026
Why Failure Prevention Fails in Real-World Systems
Most teams building critical systems optimize for failure prevention. Fewer outages. Fewer bugs. Fewer incidents. The goal sounds right. The engineering model behind it is wrong.
Prevention assumes you can eliminate failure from a system. You cannot. Not in systems with external dependencies, human operators, network boundaries, or anything resembling real-world load. The question is not whether failures occur. It is what happens when they do.
Failure Prevention vs Failure Containment
This is the difference between failure prevention and failure containment — and it changes how you architect everything.
Prevention-oriented systems tend to share a few patterns: deep coupling between components, implicit trust in upstream responses, retries without bounds, and error handling that assumes errors are exceptional. When something breaks, the failure propagates. A latency spike in one integration becomes a cascading timeout across three services. A malformed payload from a third party corrupts state that takes days to unwind.
Containment-oriented systems start from a different assumption: failure is a normal operating condition. The architecture is designed around it.
Designing for Fault Isolation and Containment
In practice, this means explicit state models where every transition is defined — including the failure transitions. It means bounded retries with backoff, not infinite loops hoping for recovery. It means integration boundaries that isolate third-party failure modes so a downstream outage degrades one capability, not the whole system. It means idempotency as a default, so that when retries do happen, they do not produce duplicate effects.
The outcome is not fewer failures. It is failures that are contained, diagnosable, and recoverable. An incident becomes a bounded event with a known blast radius — not a mystery that requires four engineers and a war room.
System Resilience Engineering in Practice
We build systems this way because the alternative — betting on prevention — is an architecture that works until it doesn’t, and then fails in ways nobody predicted and nobody can quickly fix.
Prevention is a goal. Containment is a discipline.
The systems that survive real-world pressure are designed for the second one.