Resilience#
Resilience is how much failure the infrastructure absorbs before the mission feels it. Availability zones cover a datacenter loss, regions cover a geographic one, and the architecture decides which failures are survived automatically and which need a human and a runbook.
Two numbers anchor the design. The recovery point objective (RPO) is how much data the operator can afford to lose, measured backward from the failure; the recovery time objective (RTO) is how long recovery may take. Tighter targets cost more, active-active across regions buys near-zero RPO and RTO at a steep price, while backup-and-restore is cheap but slow. The operator sizes the targets to the mission, not to a brochure.
flowchart TB
subgraph R1["Region 1 (primary)"]
A1[AZ a]
A2[AZ b]
A3[AZ c]
end
subgraph R2["Region 2 (failover)"]
B1[AZ a]
B2[AZ b]
end
R1 -. async replication .-> R2
Domains#
A failure domain is the blast radius of one fault. The architecture stacks them so a fault is contained at the smallest level that can absorb it, and only the rare large fault escalates to the expensive recovery path.
Domain |
Fault contained |
Covered by |
|---|---|---|
Host |
A single machine or rack |
Redundant instances behind a balancer |
Availability zone |
One datacenter, its power and network |
Spreading instances across zones |
Region |
A whole geography |
A second region with replicated data |
Provider |
The cloud account or provider itself |
A second provider or an offline copy |
Targets#
RPO and RTO are set per workload, not once for the whole infrastructure. A billing ledger tolerates almost no data loss; a cache can be rebuilt from scratch. The operator records the targets, then proves the architecture meets them, because an untested target is a guess.
RPO, the data the operator can lose, set by how often state is replicated or backed up.
RTO, the downtime the mission can absorb, set by how fast traffic shifts to healthy capacity.
Per workload, tier the targets so spend follows the data that actually matters.
Strategies#
Disaster recovery runs on a spectrum from cheap and slow to expensive and instant. The operator picks the cheapest strategy that still meets the workload’s RPO and RTO.
Strategy |
RPO |
RTO |
Cost |
|---|---|---|---|
Backup and restore |
Hours |
Hours |
Lowest |
Pilot light |
Minutes |
Tens of minutes |
Low |
Warm standby |
Seconds to minutes |
Minutes |
Medium |
Active-active |
Near zero |
Near zero |
Highest |
Failover#
Failover is the mechanism that moves traffic off the failed domain. It only counts as resilience when it triggers without a heroic intervention, and when failing back afterward is itself a planned operation.
Detect, health checks decide a domain is gone before users do.
Shift, DNS or a global load balancer moves traffic to healthy capacity.
Quorum, stateful systems need an odd member count to avoid split-brain.
Fail back, returning to the primary is rehearsed, not improvised.
Testing#
A recovery path that is never exercised is a recovery path that does not work. The operator proves resilience on a schedule rather than discovering its gaps during the real incident.
Game days, rehearse the runbook under realistic, time-boxed pressure.
Chaos, inject host, zone, and dependency failures to surface bad assumptions.
Restore drills, recover a backup end to end and verify the data.
Pitfalls#
Untested backups, a backup never restored is a hope, not a plan.
Single-region control plane, a multi-region data plane steered by one region.
No quorum, an even member count that splits the brain on partition.
RTO fantasy, a target written on paper and never measured.
Silent replication lag, replicas that drift because nobody watches the lag.
References#
Network Topology for the multi-region routing failover depends on.
Tenancy for how isolation bounds a fault to one tenant.
Storage for the replication and backup primitives.
Practices for the on-call and runbook discipline around failover.