Skip to main content
Reliability & Runtime OpsLast reviewed 2026-09-20

Chaos Engineering

Deliberately injecting failure as controlled experiments — a hypothesis, a bounded blast radius, a measurement and an abort condition — to learn how a system behaves before production teaches you for free.

Overview

Read the full Chaos Engineering guidance
WHAT IT IS Chaos Engineering is experimentation on a system to build confidence in how it behaves under adverse conditions. A real experiment has four parts: a written hypothesis about steady-state behaviour, an injected condition, a bounded blast radius, and an abort condition. Anything without those is an outage you caused on purpose. **Not this:** Chaos Engineering is not Resilience Engineering: it is the narrower experimental practice of injecting specific faults to test a stated hypothesis, not the broader discipline of how systems and the people running them absorb surprise. WHY IT EXISTS Distributed systems fail in combinations nobody designed for, and the failure modes that matter are usually emergent rather than component-level. Design reviews and tests exercise the failures you imagined; the ones that cause outages are the ones you did not. Running the experiment converts an assumption — "we fail over cleanly" — into an observation, and it does so at a time you chose, with the right people awake. WHEN TO USE IT Adopt it when the system has redundancy whose behaviour has never been observed, when failover is documented but untested, or after an incident revealed an assumption that was wrong. Do not adopt it while known reliability work is outstanding: injecting faults into a system with unowned alerts and no incident process produces incidents, not learning. WHO OWNS IT The team that owns the service owns its experiments and their consequences — chaos run on someone else's system by a central team generates resentment and little learning. A reliability function may own the tooling, the standards and the review of results. Whoever is on call at the time must know it is happening; a surprise experiment is indistinguishable from an incident, and treating it as one wastes everybody's night. WHAT GOOD LOOKS LIKE Every experiment has a written hypothesis and a defined steady-state metric, so the result is a measurement rather than an impression. Blast radius starts small — one instance, one dependency, a fraction of traffic — and widens only after the small version behaves as predicted. An abort condition is defined in advance and the stop mechanism is tested before the experiment. Results are recorded whether or not they were surprising, including the boring ones. Findings turn into changes, which is the only reason to run the experiment. HOW TO IMPLEMENT Start in a non-production environment to prove the tooling and the abort path, then move to production, because a non-production system rarely has production's failure modes. Write the hypothesis down before injecting anything; the discipline of predicting the outcome is where most of the value is. Keep the first experiments trivially small. Announce them. Record the result and the resulting change. Build the practice on top of the alerting and ownership in /observability-engineering and the response process in /incidentops — chaos without those two amplifies confusion instead of producing knowledge. HOW TO ASSESS YOURSELF Ask when your failover last actually happened, and whether anyone watched. Ask whether your last experiment had a written hypothesis and an abort condition. Ask what changed as a result. Take the scored self-assessment at /assess and sequence the findings with /roadmaps.

Capabilities

  • Abort conditions

    A stop condition defined in advance and a stop mechanism tested before the experiment runs.

  • Blast radius control

    Starting with one instance or a traffic fraction and widening only after the small version behaves as predicted.

  • Experiment hypothesis design

    Writing down the predicted steady-state behaviour before injecting anything, which is where most of the value of the practice lives.

  • Experiment result recording

    Recording every result including the unsurprising ones, and turning findings into changes.

  • Steady-state definition

    A measurable definition of normal, so an experiment produces a measurement rather than an impression.

Practices

  • Experiment review

    Reviewing results and resulting changes, so the practice produces knowledge rather than activity.

  • Game day

    A scheduled exercise where a failure is injected with the responders present and the learning captured.

Metrics

  • Experiments run

    Number of chaos experiments completed in the period, a measure of practice rather than of outcome.

    Unit: experiments per quarter. Good direction: up.

  • Hypothesis refutation rate

    Share of experiments where the system did not behave as predicted — the ones that taught you something.

    Unit: percent. Good direction: up.

  • Unplanned abort rate

    Share of experiments halted by the abort condition, read as a signal about scoping rather than failure.

    Unit: percent. Good direction: down.

Tools

  • AWS Fault Injection Service

    Managed fault injection with built-in stop conditions tied to alarms.

    Visit site ↗
  • Chaos Mesh

    CNCF-hosted chaos engineering platform for injecting controlled faults into Kubernetes.

    Visit site ↗
  • LitmusChaos

    Open-source chaos engineering framework organising fault injection into declarative experiments.

    Visit site ↗

Architecture patterns

Reference architectures and their trade-offs live in the blueprints library.

Maturity

  1. L1 ReactiveFailure behaviour is assumed, never observedrequired stage

    Redundancy and failover exist on paper and have never been watched under real conditions.

  2. L2 RepeatableExperiments run in a non-production environmentrequired stage

    The tooling and the abort path are proven somewhere safe before production is involved.

  3. L3 StandardizedEvery experiment states a hypothesis and a steady state

    The outcome is a measurement against a prediction rather than an impression of how it went.

  4. L4 MeasuredBlast radius and abort conditions are defined and tested

    Scope starts small, the stop mechanism is verified beforehand, and on-call knows the experiment is happening.

  5. L5 OptimizedResults are recorded and change the system

    Findings, including unsurprising ones, are captured and turned into fixes; experiments run in production routinely.

Maturity for chaos engineering is measured, not guessed — every score traces to your answers. See how maturity is scored.

Put it to work

Sources