BOOK DEEP-READ · SRE · CHAPTER 4

Service Level Objectives: pick the right thing to measure, then argue about the nines

Site Reliability Engineering · Ch 4 · Google (Chris Jones, John Wilkes, Niall Murphy, Cody Smith) · 2016

中文 →

What is this chapter about?

Whenever you order food, hail a ride or open a video app, you carry a private line in your head: what counts as "fine" and what counts as "unacceptable." The companies behind those services need that line written down too — otherwise "how are we doing today?" is settled by whoever talks loudest. Chapter 4 of Google's SRE book is about turning that line into a number everyone accepts.

An analogy first

A takeout shop wants to promise "fast delivery." That sentence is useless until it is split into three separate things: what you measure (minutes from order to doorbell), where you draw the line (95% of orders inside 30 minutes this month), and what you owe if you miss (a coupon). The book calls these SLI, SLO and SLA, and they get blurred together constantly. The trick to telling them apart is simple: ask "what happens if we miss it?" — only the one with a stated penalty is a contract.

Now the strange part

The hardest of the three is the first one: what to measure. Plenty of teams have dashboards glowing green while users write one-star reviews. The reason is mundane: they measure "did the server answer," while users care about "did I get what I came for." Google published one such comparison: for the same search service, counting "the server returned a normal response" gave a respectable 99.7%; counting "the user actually saw results within five seconds" left about 80%.

The core idea: reason backwards from the user

This chapter flips the order: first ask what users care about, then find a way to measure it — rather than surveying the metrics you already collect and picking a flattering one. Two more traps come with it.

First, don't look only at the average. "Average delivery: 25 minutes" can mean half the orders arrive in 15 and half in 35 — and the half that leaves bad reviews has been averaged away. Line the orders up fastest to slowest and look at the miserable tail. Second, write the number out in full. "95% of orders within 30 minutes" isn't enough; you have to say 95% over what period, and which end the clock stops at — when the courier taps "delivered," or when you actually open the door. Leave that unwritten and two departments will each compute their own "we hit it."

The most counterintuitive part: being too good is also a problem

Promise 30 minutes, deliver in 12 for years, and that sounds like pure upside. But over time everyone reorganizes their life around 12 minutes and nobody keeps a buffer; the day traffic makes it 28 minutes — still within the promise — lunch collapses for the whole building. An internal Google component that half the company depended on hit exactly this: it was so steady that everyone assumed it could never break, so nobody wrote a fallback. The fix was blunt: when it runs too well, deliberately take it down for a while. The honest cost: almost all the effort sits up front — translating "what users care about" into a number that is both measurable and agreed on is usually harder than watching it afterwards.

One line to remember

Don't open with an argument about how many nines. First work out what users actually care about, turn it into a number that states where it is measured and over what window, watch the worst-off sliver rather than the average, and pick a target few enough that you dare settle an argument with it. Too bad needs fixing — and too good needs people reminded that you can break.

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