High availability is not a property you retrofit into a system — it's designed in from the start. The patterns and principles that enable resilient software are well-established, but applying them correctly requires understanding both the mechanics and the failure modes they address.
The Circuit Breaker Pattern
Named after electrical circuit breakers, the software circuit breaker prevents cascade failures by monitoring downstream service health and "opening" (stopping calls to a failing service) when error rates exceed a threshold. Rather than having every request fail slowly with a timeout, the circuit breaker fails fast and provides fallback behavior, preserving system resources and enabling faster recovery.
Bulkheads and Isolation
The bulkhead pattern, borrowed from ship design (where bulkheads prevent a hull breach from sinking the entire vessel), isolates components so that a failure in one doesn't cascade to others. In practice, this means separate thread pools or process pools for different operations, separate resource limits for different customers or workload types, and network segmentation at the infrastructure layer.