← Articles

Writing

Disaster Recovery Testing Is Not Chaos Engineering

Fault injection tests whether software fallbacks run. Surviving a real catastrophe tests whether engineers can coordinate under ambiguity.

Engineering

Most engineering teams with an uptime goal love the chaos monkey. The pitch is clean: kill random servers in production. Check that backups catch the drop. Declare your system safe.

It is an easy story because it turns system health into a task on a backlog. You buy a test tool. You schedule server kills during work hours. You watch dashboards stay green.

Then a real outage hits when a cloud control plane hangs and a bad deploy breaks database replicas. The recovery scripts do not save you. Instead, they fire conflicting retries and flood alerting tools. Five teams end up arguing on an incident bridge.

Automated fault tools check code logic. They do not prove your team can survive a crash.

The confusion comes from mixing two layers: code and people. Chaos tools test whether code fallbacks run when single servers fail. Recovery drills check whether human teams can build shared context, solve command gaps, and make hard choices under real stress.

What the evidence shows

The evidence on system uptime splits into three tiers; keep them separate.

The survey data comes from the 2019 Accelerate State of DevOps Report by DORA and Google Cloud. In their model across global teams, recovery tests predict service uptime. Top teams are far more likely to run failovers (49 percent for elite versus 25 percent for low performers) and test outages in staging (29 percent versus 18 percent).

Running tests in production does not split top teams from bottom teams. Exactly 9 percent of elite teams and 9 percent of low performers run ongoing automated tests. What matters is whether teams run recovery drills and fix the action items. That habit makes teams 1.4 times more likely to reach the top tier.

The systems tier draws from safety research. In How Complex Systems Fail (1998), Richard Cook showed that complex systems run as degraded systems all the time. Real crashes never stem from a single broken piece. They require multiple hidden flaws that beat automated defenses.

In the 2017 STELLA Report, David Woods and John Allspaw showed that automation works only inside a narrow boundary. When surprises breach that boundary, software breaks. Human skill at the front line provides real safety.

Then there is expert evidence from the builders of chaos tools. In their 2020 book Chaos Engineering, Casey Rosenthal and Nora Jones note that chaos tools need safety abort triggers to limit blast radius. Automated tools stop when real customer pain crosses a line.

Automated tools verify the presence of known defenses. Resilience is the human capacity to adapt when those defenses fail.

This creates the abort paradox: automated tools cannot safely test deep crises where automated guards fail.

The limits of automated chaos

Automated tools are good software checks for cloud setups. They answer simple questions: Did the circuit breaker trip? Did the autoscaler add servers in time? Did the cache serve old data?

These are unit tests for cloud plumbing. They test known failures with known fixes.

Real crashes do not follow planned failure paths. They strike in the dark debt of the system: hidden links, boot loops, and race conditions between recovery scripts. When a major cloud region goes down, the crisis is not a dead virtual machine. Instead, the control plane times out while monitoring tools drop metrics and internal DNS fails.

In that state, automated tools hit three hard walls:

First, the blast radius ceiling. You cannot run an automated script that drops half your customer database in live production without safety limits. Automated tools must abort to save revenue. They stop right where real recovery begins.

Second, bad automation loops. In cascading failures, automated recovery tools often make outages worse. Health checks trigger thundering herds. Retry loops choke database pools. Auto-fix scripts fight human operators for control.

Third, the authority vacuum. Software cannot choose to take fifteen minutes of data loss to bring a payment cluster back up. Software cannot authorize dropping unverified traffic or cutting off a failing vendor.

Human recovery drills

If automated chaos tests your code, recovery drills train your human team.

As Google’s DiRT exercises and Amazon’s GameDay drills have shown for twenty years, high-yield recovery testing is a team drill, not a software job. It forces engineers and leaders to face real operational blocks:

  • Building shared context. Under crisis, teams hold conflicting views of how systems fit together. Drills expose where assumptions split before customer data is at risk.
  • Testing degraded tools. Good drills cut standard chat channels, simulate lost metrics, and require teams to operate out-of-band.
  • Exercising decision authority. Incident response stalls when responders wait on management sign-offs. Drills force the Incident Commander to make hard choices without extra approvals.
  • Testing secondary staff. Drills isolate lead architects to verify whether secondary responders have the runbooks, access, and context needed to bring systems back online.

Automated chaos tools are healthy hygiene for cloud code. Keep running them to check your circuit breakers.

Just do not mistake a green chaos dashboard for disaster safety. When production burns, code fallbacks are only the first shield. Real survival depends on whether your team has the clarity and shared context to guide you through the wreckage.