DevOps · Guide

Chaos Engineering

Breaking things deliberately, in daylight, with a hypothesis — because they will break anyway.

— min read DevOps

Failure Is Already Scheduled

Chaos engineering is not breaking production for fun. It is the experimental method applied to a distributed system: state what you believe will happen, inject a realistic failure, and find out whether you were right — while you are watching, in working hours.

The premise is that a system of any size is continuously partly broken: an instance dies, a zone degrades, a dependency slows down. Those events are certain. The only choice is whether you first meet them at 3am with a customer on the phone, or at 2pm with the team assembled.

What it usually finds is not that a component failed — that was the point — but that the response to failure was wrong: a retry storm, a missing timeout, an alert that never fired, a runbook naming someone who left last year.

Designing An Experiment

StepDetail
1. Define steady stateA measurable normal — checkout success rate, not CPU
2. State a hypothesis"Losing one replica will not change checkout success"
3. Bound the blast radiusOne instance, one zone, 1% of traffic
4. Know how to stopAn abort condition and a way to undo it instantly
5. Inject and observeWatch the steady-state metric, not the injected thing
6. Fix, then widenRepeat larger only once the finding is closed
An experiment with no hypothesis is an outage you caused. If you cannot say what should happen, you are not testing a belief — you are discovering your system in front of users.

Start in staging to shake out the obvious, but understand its limit: staging has different data volumes, different traffic and different scale, so it cannot tell you how production behaves. The valuable experiments are the small, well-bounded ones in production.

What To Inject

InjectionQuestion it answers
Kill an instance or podDoes traffic move without errors
Add latency to a dependencyDo timeouts fire, or do threads pile up
Return errors from a dependencyDoes the circuit breaker open, is there a fallback
Exhaust CPU, memory or diskDoes it degrade or fall over
Sever a zoneDoes failover work, and is capacity sufficient
Expire a certificateThe most common self-inflicted outage there is
Latency is more revealing than failure. Systems generally handle a dependency that is down; a dependency that answers in eight seconds exhausts connection pools and thread pools, and takes the caller down with it.

Game Days & Culture

A game day is a scheduled exercise where a team injects a failure and works the response as if it were real. It tests the parts an automated experiment cannot: whether the alert reached a human, whether the runbook was correct, whether anyone knew who was in charge.

RevealsTypically
Alerting gapsThe failure produced no page at all
Stale runbooksCommands referencing systems that no longer exist
Access problemsNobody on call could reach the dashboard
CoordinationNo clear incident lead, three people editing the same thing
Recovery timeFar longer than anyone estimated
This only works in a blameless culture. If a failed experiment becomes a performance conversation, nobody proposes another one — and the organisation goes back to discovering its weaknesses during incidents.

The output is a list of fixes with owners, and the discipline is closing them before running the same experiment larger. Chaos engineering that generates findings nobody actions is theatre with extra risk.

Interview Questions

What is chaos engineering actually testing?

Not whether a component can fail — that is assumed — but whether the system's response is correct: timeouts, fallbacks, failover, alerting and the humans on call.

What must an experiment have?

A measurable steady state, a stated hypothesis, a bounded blast radius, and an abort condition with a way to undo it instantly.

Why inject latency rather than only failure?

Systems usually cope with a dependency that is down. A dependency that responds slowly exhausts connection and thread pools and takes the caller with it.

Why run experiments in production?

Staging has different data volumes, traffic and scale, so it cannot tell you how production behaves. Production experiments are made safe by bounding them, not by avoiding them.

What does a game day add over automated chaos?

It tests the human path: whether the alert paged someone, whether the runbook was accurate, whether anyone was clearly in charge, and how long recovery actually took.

What makes chaos engineering fail as a practice?

Findings that nobody closes, and a culture where a failed experiment becomes a blame conversation — after which nobody proposes another one.

Quick Quiz

1. A chaos experiment must begin with…
2. The most revealing injection is usually…
3. Blast radius should be…
4. A game day primarily tests…
5. Chaos engineering fails as a practice when…