Running a Service That Stays Up
The Service Was Fine Until Somebody Changed It
Last timeWhy It Falls Over All at Once
Steady systems do not spontaneously break. Most incidents begin with a change, which makes how changes are released the most productive place to spend reliability effort.
Leave a service completely alone and it will mostly keep running. That is an
uncomfortable observation, because it means the main source of unreliability is
the same activity that makes the service worth having.
Expected damage
Releasing is a gamble with three terms, and only one of them is easy to change.
- the chance this release is bad
- the share of traffic exposed to it
- how long it runs before it is caught and undone
| percent of traffic expos | minutes before rollback | user-minutes lost, relat | |
|---|---|---|---|
| straight to everyone | 100.00 | 45.00 | 45.00 |
| staged, checked by a per | 10.00 | 12.00 | 1.20 |
| staged, checked automati | 1.00 | 6.00 | 0.06 |
The canary only counts if something reads it
The common failure is to build the staged rollout and then compare the stages by
eye. That leaves the slowest component of the loop in place. The comparison
wants to be an automatic one against the unchanged traffic, on a small number of
signals: error rate, latency at the tail, and one or two things specific to the
service. If those differ beyond a threshold, the rollout reverses itself without
asking.
The lesson stops here
3 more paragraphs to go
You have read the opening. The rest of the argument, the problems that check whether it landed, and the lines worth keeping at the end all come with a plan.
The first lesson of every course in the library reads the whole way through, free, so you can see exactly what the rest of them are.
See the planThe contentsThis is the reading half
Starting the course gives you your own copy of it. Every idea on every page has problems standing under it, marked with a reason rather than a tick, and any sentence you do not believe can be opened and argued with. None of that can happen on a page nobody owns.
The contents