Failure Domains & Blast Radius
A failure domain is a set of components that fail together due to a shared dependency. Understanding failure domains is fundamental to designing resilient systems—if you don't know what can fail together, you can't properly separate your redundancy.
# Types of Failure Domains
Electrical Failure Domains
Devices whose only power path is the same source lose power together when that source is lost.
Network Failure Domains
Devices whose only network path traverses the same switch or router lose connectivity when that device fails.
Geographic Failure Domains
Natural disasters, broad power failures, or network partitions can affect an entire region.
# Blast Radius
Blast radius is the scope of impact when a failure occurs. Small blast radius = localized failure. Large blast radius = widespread outage.
Design principle: Minimize blast radius by avoiding shared single points of failure and distributing load across independent failure domains.
# Correlated Failures
Correlated failures occur when seemingly independent components fail due to a shared root cause.
Example 1: Configuration Changes
Example 2: Software Bugs Under Load
Scenario: Service has 5 replicas. Load increases, triggering memory leak in all replicas simultaneously. All 5 crash within minutes.
Problem: Replicas are identical software, hit same bug under same conditions. Redundancy didn't help—correlated failure mode.
Mitigation: Use a time-bounded staged release: keep adjacent versions compatible during a defined rollout window, expose a limited canary population, evaluate health and correctness gates, roll back when those gates fail, and retire the old version after the new one is accepted. Load shedding can also keep replicas below the failure threshold.
Example 3: Shared Dependencies
This is an operation-specific degraded mode, not an authentication bypass. Whether cached validation is safe depends on the protected action and the token's audience, scope, expiry, and revocation model.
# Separating Failure Domains
Distribute resources across independent failure domains to prevent correlated failures.
Cloud Failure Domain Separation
In AWS, distribute across Availability Zones (AZs):
# Real-World Example: AWS October 2025 DynamoDB Outage
On October 19–20, 2025, AWS experienced a major service disruption in US-EAST-1 after DynamoDB's DNS management system published an empty regional-endpoint record. DynamoDB, EC2, Network Load Balancing, Lambda, ECS, EKS, Fargate, and other services experienced distinct periods of elevated errors or impairment; existing EC2 instances remained healthy.
Failure domain issue: Independent DNS Enactors could race while applying and cleaning up plans. A delayed Enactor applied a stale plan; another Enactor's cleanup then deleted that now-active plan, leaving the endpoint with an empty DNS record and inconsistent state that required manual operator correction. AWS described the Enactor as deliberately designed with minimal dependencies.
Blast radius amplification: The downstream impact was not one linear cascade. DynamoDB endpoint recovery was followed by an EC2 Droplet Workflow Manager (DWFM) lease backlog and congestive collapse, a network-configuration propagation backlog, and Network Load Balancer health-check behavior that removed healthy capacity. Lambda experienced several dependency-specific periods of impact; ECS, EKS, and Fargate experienced container launch failures and cluster-scaling delays, and the last container-service impacts recovered by 2:20 PM.
Lesson: Independent reconcilers need safeguards that keep stale work and cleanup from invalidating the active plan. Recovery design must also account for queued work, feedback loops, and the distinct dependencies through which one regional event can expand its blast radius.
# Key Takeaways
- Failure domains are components that fail together due to shared dependencies (power, network, geography)
- Blast radius is the scope of impact; minimize by avoiding shared single points of failure
- Correlated failures occur when independent replicas fail due to same root cause (config, code bug, dependency)
- Separate failure domains: distribute across racks, AZs, regions depending on availability requirements
- Protect active control-plane state from stale-plan and cleanup races, and design recovery for backlogs and feedback loops
- Test failure scenarios to validate blast radius is as expected