BugMojoBugMojoBugMojo
FeaturesPricingBlogHelpAbout
Add to ChromeLog inGet started
BugMojoBugMojo

Bug reports that actually help fix bugs — capture, replay, share.

A product of Softech Infra.

Product

  • Features
  • Pricing
  • Browser extension
  • Get started
  • Log in

Resources

  • Help & guides
  • Blog
  • Compare
  • Glossary

Company

  • About
  • Contact
  • Security
  • Privacy
  • Terms
  • Sitemap
© 2026 BugMojo. All rights reserved.
AllGuidesEngineeringPlaybooksCompareGlossaryAlternativesBy roleBug tracking by framework
  1. Home
  2. Blog
  3. Glossary
  4. What Is Chaos Engineering?
Glossary

What Is Chaos Engineering?

Chaos engineering is the practice of deliberately injecting failures into a system to discover its weaknesses before they cause a real outage. Here is the scientific method behind it, the experiments and tools that run it, and how to do it without breaking production.

Hrishikesh BaidyaHrishikesh Baidya·Jul 16, 2026·8 min read
Glossary
Isometric line-art hub of chaos-engineering fault injections — kill a server, drop the network, spike latency, fail a disk — around a steady-state node, lime on dark charcoal
TL;DR
  • Chaos engineering is deliberately injecting failures into a system to find its weaknesses before they cause a real outage.
  • It is a scientific method: define a steady state, hypothesize it holds, inject real failures, then try to disprove the hypothesis by comparing steady state.
  • Netflix's Chaos Monkey and the Principles of Chaos started it; Gremlin and LitmusChaos carry it forward.
  • It is not random breakage — every experiment has a hypothesis, a small blast radius, and an abort switch.
  • You need observability to see the effect, and it feeds incident response — you find the weakness before the pager does.

Definition

Chaos engineering is the practice of deliberately injecting real-world failures into a system to discover its weaknesses before they cause an outage. It is proactive experimentation — a scientific method for building justified confidence that a system will withstand turbulent, unpredictable production conditions.

Every distributed system fails eventually. A node dies, a network link drops packets, a dependency times out, a disk fills, a CPU pegs at 100%. The only question is whether you find out how your system responds on a random Tuesday at 3 a.m. — or on purpose, on a Wednesday afternoon, with the whole team watching and a rollback ready. Chaos engineering is choosing the second option. As the Principles of Chaos Engineering put it, it is 'the discipline of experimenting on a system in order to build confidence in the system's capability to withstand turbulent conditions in production.'

The key word is confidence. You cannot reason your way to certainty that a system of dozens of interacting services will behave under failure — the interactions are too complex to hold in one head. So instead of arguing about it in a design review, you run an experiment and let the system tell you. The discipline was born at Netflix around 2010, when the company moved to the cloud and needed every engineer to assume that any instance could vanish at any moment. Their answer was Chaos Monkey, a tool that randomly terminates production instances during business hours so that teams are forced to build services that survive the loss of any single node.

The scientific method behind it

What separates chaos engineering from simply unplugging a server is that it is structured as a real experiment. The Principles of Chaos describe four steps, and they map one-to-one onto the scientific method you learned in school.

1. Define the steady state. Start by picking a measurable output that indicates the system is behaving normally — requests per second successfully served, the 99th-percentile latency, the checkout conversion rate. This is your dependent variable. Crucially, the steady state is defined in terms of what users experience, not internal metrics like CPU usage. A server running hot is not itself a problem; a customer who cannot check out is.

2. Hypothesize that the steady state holds. Form the hypothesis that this normal behavior will continue in both a control group (untouched) and an experimental group (about to be attacked). You are predicting that the failure you are about to inject will make no meaningful difference — because your redundancy, retries, and failovers should absorb it.

3. Inject real-world failures. Introduce variables that reflect events that actually happen: terminate instances, sever a network connection, spike latency, drop packets, fail a disk, exhaust CPU or memory. The emphasis on real matters — you simulate the failures that genuinely occur in production, not contrived ones, because those are the ones your users will hit.

4. Try to disprove the hypothesis. Now compare the steady state of the experimental group against the control. If they still match, your confidence in the system's resilience goes up. If they diverge — errors climb in the group you attacked while the control stays healthy — you have found a weakness. That difference is the whole point: a discovered gap you can fix on your own schedule, rather than a surprise outage on the system's schedule. As the principles note, the harder it is to disrupt the steady state, the more confidence you have.

Isometric line-art hub showing a central steady-state node ringed by four fault injections — a terminated server, a severed network link, a latency spike, and a failed disk — each traced by a lime probe on dark charcoal
The steady state sits at the center; each spoke is a real-world failure injected on purpose. A weakness shows up as a measurable divergence between the attacked group and an untouched control.

Best practices and guardrails

The advanced principles add the discipline that keeps an experiment from becoming an incident. Start small. Run your first experiments in staging, with a tiny scope, and graduate toward production only as your confidence and tooling mature. Minimize the blast radius. Contain each experiment to the smallest set of traffic that can still teach you something — a single availability zone, one percent of requests, a shadow cohort — so that if the hypothesis is wrong, the damage is bounded. Run in production, carefully. The value of chaos engineering comes from testing the real system with real traffic, because staging never fully mirrors production; but you do that only with guardrails in place. Automate and run continuously, so resilience is verified on every change rather than in a one-off game day. And above all, have an abort switch: the ability to halt the experiment and roll back instantly the moment real user harm appears.

It is not random breakage

The single biggest misconception is that chaos engineering means smashing production at random. It is the opposite. Every experiment has a hypothesis (a prediction you are trying to disprove), a defined blast radius (the smallest scope that still teaches you something), and an abort switch (stop the moment users are harmed). Even Chaos Monkey runs inside business hours, within pre-set boundaries, with engineers watching. Killing production with no hypothesis and no guardrails is not chaos engineering — it is just an outage you caused.

Common experiments, tools, and where it fits

The classic experiments map directly onto the ways production actually fails: kill an instance to test redundancy, sever the network to test failover and partition tolerance, spike latency to test timeouts and retries, fail a disk to test storage failover, and exhaust CPU or memory to test back-pressure and graceful degradation. As tooling, Chaos Monkey remains the canonical starting point; commercial platforms like Gremlin provide a catalog of attacks with built-in blast-radius controls; and CNCF projects such as LitmusChaos and Chaos Mesh let Kubernetes teams declare fault-injection experiments as manifests. The discipline matters more than any single tool.

Chaos engineering does not stand alone. It is downstream of observability: you cannot detect a change in steady state you cannot measure, so good telemetry — metrics, logs, and traces — is a prerequisite, not a nice-to-have. Run an experiment without it and you are breaking things blind. It is also upstream of incident response. Every weakness you surface in a controlled experiment is one that does not become a 3 a.m. page, and the ones that do teach you something belong in your review process. Pair chaos work with a blameless incident postmortem so that findings turn into fixes, and track whether that discipline is paying off in your mean time to recovery — the faster you recover from the failures you rehearsed, the more the practice is working.

The user's-eye view of resilience

Notice how much of the definition insists on the user. The steady state is a user-facing indicator; the abort condition is real user harm; the whole point is to withstand conditions your customers experience. Resilience is not really about whether a server stays up — it is about whether the person clicking 'buy' still succeeds when a server does not. That is the gap dashboards miss: a graph can show a latency spike absorbed cleanly at the infrastructure layer while, three hops away, a specific flow quietly breaks for a subset of users.

This is where capturing real user sessions during an experiment earns its keep. When you inject a failure, an aggregate metric tells you the average held; a captured session tells you what a single real person actually saw — the spinner that never resolved, the retry that silently dropped their cart, the error toast that fired only on slow connections. BugMojo records the browser-side reality — an rrweb session replay plus the console and network state — so that the user-facing impact of a chaos experiment is visible, not inferred. The metric proves the steady state; the session shows you the human behind it. Both matter, and only one of them can be argued with in a review.

Key takeaway

Chaos engineering is proactive experimentation, not reactive firefighting: define a measurable steady state, hypothesize it holds, inject a real failure into a bounded blast radius, and try to disprove the hypothesis. Every divergence is a weakness you found on your schedule instead of the outage's. Do it with good observability to see the effect, an abort switch to stay safe, and a user's-eye view to confirm the resilience is real for the people you serve.

See what your users see when you inject failure

Chaos engineering proves the steady state held on average — but a captured session shows the real user-facing impact. BugMojo records the rrweb replay, console, and network behind each failure, so the resilience you build is resilience your users actually feel.

Install the extension

Frequently asked questions

Frequently asked questions

Sources

  1. Principles of Chaos Engineering — the steady-state hypothesis and the four-step scientific method — Principles of Chaos Engineering (2026)
  2. Chaos Monkey — randomly terminates production instances to enforce resilient services — Netflix (2026)
  3. Chaos engineering — history, definition, and practice — Wikipedia (2026)
  4. Chaos Engineering: the history, principles, and practice — Gremlin (2026)
Share:
Hrishikesh Baidya
Hrishikesh Baidya· Chief Technology Officer

Hrishikesh Baidya is the CTO at Softech Infra. He is drawn to architecture that is invisible — systems that simply work — and leads the engineering behind BugMojo.

On this page

  • Definition
  • The scientific method behind it
  • Best practices and guardrails
  • Common experiments, tools, and where it fits
  • The user's-eye view of resilience

Get bug-tracking insights, weekly.

Engineering deep-dives, QA playbooks, and honest tool comparisons. No spam — unsubscribe in one click.