BOOK DEEP READ · CHAOS ENGINEERING · CH 7

LinkedIn: Being Mindful of Members

Chaos Engineering: System Resiliency in Practice · Ch 7 · LinkedIn · 2020

中文 →

What is this chapter about?

The previous three chapters were all about how to push failure into production. This one asks the question everybody steps around: production is full of real people.

You are not shaking a pile of machines. You are shaking hundreds of millions of people, some of whom are submitting a job application or talking to a recruiter right now. LinkedIn's answer is not "then don't do it in production." It is: make "who gets affected" a field you fill in.

An analogy: how a new drug is tested

No drug goes straight from the lab to everyone. First a handful of people, checked for safety; then dozens, then hundreds. And every phase is written down in advance with a stopping rule — "if this happens, halt immediately" — plus someone whose only job is watching that line.

Running failure experiments on real people follows the same three rules: start with a tiny group, widen one rung at a time, and define the automatic stop before you start. Only one thing differs: in software, "stopping the dose" takes seconds, so you can afford to be a little bolder than medicine.

Why the old way is hard

The default move is to kill a random machine. The problem with it isn't that it's risky — it's that you don't get to choose who suffers.

Who happens to be on that machine depends on how traffic was being split at that instant. It might be all idle browsing, or it might include the one person pressing "Submit application." "Only one request in a thousand" sounds small, but that one in a thousand isn't a number — it's a specific person's specific action.

And there is a sneakier layer. If the system habitually sends the same person to the same machine, then "one request in a thousand fails" really means "one person in a thousand has a broken session end to end." One person failing a hundred times and a hundred people failing once each are the same number on a dashboard and two different things in real life — the first one uninstalls the app.

The core intuition: three things

What it buys you / how to choose

The question changes from "should we take this risk?" to "how much of it?" Most defects surface at the shake-yourself rung and never touch a real user; when you genuinely need real traffic, you climb one rung at a time and can always pull back.

One honest cost: a per-request failure is simulated — it only makes that one request believe the downstream is broken. A real outage lands on every caller at once, and that kind of global congestion only shows up at scale.

Remember one thing

Measure the blast radius of production chaos in people: attach the failure to a single request and let it propagate, shake yourself first and then widen cohort by cohort, and write the automatic stop condition before you begin — an experiment with no automatic abort has no business running on real people.

Want the mechanism, the numbers and the diagrams? → switch to the deep read