BOOKS DEEP-READ · SRE · CH 27

Reliable Product Launches at Scale

Site Reliability Engineering · Ch 27 · Google · 2016

中文 →

What is this chapter about?

One day an app on your phone quietly grows a new feature; or a huge website puts a brand-new product on its front page. Between "the engineers finished the code" and "hundreds of millions of people are using it" lies the stretch of road where things most often go wrong. This chapter is about how to hand something new to an enormous audience without turning it into an outage.

A strange thing first

When a launch goes badly, the cause is usually not a bug in the code. Bugs are what testing catches. What actually hurts is too many people arriving at once — not enough machines, an empty cache, and the team next door whose service you are calling having no idea you were coming. None of this reproduces in a test environment, because a test environment has no real people in it.

Why the old world was hard

Knowing how to ship safely used to live inside a few veterans' heads. Someone who has shipped twenty times knows to request machines two weeks ahead, to warn the teams downstream, to keep a one-click way back. A newcomer doesn't, and falls into the same hole. With one team that is survivable; with several hundred teams, the same hole gets dug several hundred times. Experience that can't be copied is the same as no experience.

How it actually works

The chapter offers four things.

First, keep a small squad whose whole job is helping other people ship. They don't build your product; the role is closer to a wedding planner or a moving company — they didn't cook the food, but they know exactly where each step goes wrong, because they do a hundred of these a year.

Second, a checklist, like the one a pilot reads aloud before takeoff. Every line on it is the lesson of some real past accident. The beauty of a checklist is that it doesn't test your memory — it just asks you to go down the list.

Third, don't open the gates all at once. Let one person in a hundred have it, watch for a day, then one in ten, and only then everyone. Like trying a new dish on one table before printing it in the menu.

Fourth, do a silent dry run first. Copy the real orders over to the new kitchen, let it cook them, then throw the food away — guests still eat what the old kitchen made, but you now know whether the new one panics under a rush.

What it buys you

Shipping stops being a matter of luck and of whether a veteran happens to be around, and becomes something you can follow step by step. There is a counterintuitive twist too: the checklist is supposed to get shorter — once a line is handled by the tools themselves (say, the system now throttles traffic by default), it should be crossed off. The cost is real: all of this takes effort, and a small team that copies it wholesale tends to end up shipping slower, with a checklist everyone signs without reading.

One line to remember

The risk of a launch doesn't live in the code. It lives in how many people arrive in the first minute and in the one dependency nobody told. The fix is to turn the veterans' experience into a checklist that keeps renewing itself, plus "give it to a small slice first" and "run it silently first".

Want the mechanisms, the rollout percentages and the diagrams? → Switch to the deep read