Stackbook Logo
โ† Back to Research

Fault Injection Research and Chaos Engineering in Practice

Fault injection has decades of research behind it. How academic failure studies and practitioner chaos engineering fit together, and where they still diverge.

4 min read

Deliberately causing failures to see how a system responds is an old idea. Software-implemented fault injection was studied in the dependability community from at least the 1990s, and the practice entered mainstream engineering vocabulary when Netflix described Chaos Monkey, which randomly terminated instances in production, around 2011. The community later wrote down its approach in the Principles of Chaos Engineering, which describes forming a hypothesis about steady-state behavior, varying real-world events and trying to disprove the hypothesis.

What the research says

Several lines of research are relevant. Studies of real failures motivate the field: the 2014 OSDI paper by Ding Yuan and colleagues, Simple Testing Can Prevent Most Critical Failures, analyzed catastrophic failures in widely used distributed data-intensive systems and found that a large share came from incorrect handling of errors that the software had detected, and that many could be reproduced with a small number of nodes. That finding suggests that systematic injection of ordinary faults, even without exotic scenarios, uncovers serious bugs.

Research tools extend this. Lineage-driven fault injection, by Peter Alvaro and colleagues, uses the data flow of a successful execution to reason about which combinations of faults could break it, and it was applied in collaboration with Netflix. Jepsen, Kyle Kingsbury's testing work, has applied fault injection with consistency checking to many databases and coordination systems and has published analyses of anomalies, often leading vendors to fix bugs or correct documentation. Studies of network partition failures, such as the OSDI 2018 work by Ahmed Alquraan and colleagues, examined how partitions cause damaging failures in real systems.

What practitioners see

Practitioners usually begin with simple experiments: kill a process, add latency to a dependency, fill a disk, make a downstream service return errors. The early value is often not exotic discoveries but learning that a timeout, retry or fallback does not behave as assumed, or that an alert never fires.

Teams run game days, scheduled exercises where engineers inject failures and practice response. Many find that the human and procedural findings, such as unclear ownership, missing runbooks and stale dashboards, matter as much as technical ones.

Running experiments in production is the aspiration, but most organizations begin in staging and move cautiously, with limits on blast radius and an abort mechanism. Managers' worries about risk are real, and experiments without clear hypotheses and safeguards can cause the outages they aim to prevent.

Gaps

  • Evidence on whether chaos programs reduce incident rates is mostly anecdotal and from self-selected organizations.
  • Research tends to target open source infrastructure, while practitioner chaos work targets entire product stacks with their messy dependencies.
  • It is difficult to know how much of the fault space has been covered; random injection offers no strong guarantee.
  • Experiments reflect faults that engineers imagine, and real incidents often involve unanticipated interactions.

How to apply it

State a hypothesis before each experiment, for example the checkout should still succeed if the recommendation service is slow, and define the metric that shows success. Start with the smallest blast radius, in a test environment or on a small slice of traffic, and have a clear stop condition.

Prioritize faults suggested by evidence: your own past incidents and the common failure classes the research highlights, such as network partitions, slow dependencies and error handling paths. Automate the experiments that pass so they act as regression tests, and feed every surprising result into fixes and runbooks.

Combine with design review and formal modeling for the cases where random injection is unlikely to reach.

Key takeaways

  • Fault injection has roots in dependability research and predates the chaos engineering label.
  • Studies of production failures show error handling and partitions are rich sources of serious bugs.
  • Chaos engineering is hypothesis-driven, with limited blast radius and stop conditions.
  • Evidence that programs reduce outages is largely anecdotal; measure your own results.
  • Use incident history to choose experiments and automate those that succeed.

Research papers

The papers and primary sources behind this article.