advanced 2 min answer

A live-streaming platform defines an SLO of "99.9% of API requests succeed". During a major event, the SLO is met while viewers report the product is unusable. What is wrong with the SLO?

slosliuser-journeysaggregationtwitchfailure-analysis
Show the full answer Hide the answer

What is wrong

The SLI measures the wrong thing at the wrong granularity.

Three specific defects, any one of which produces this outcome:

1. It aggregates across request types. A platform serves far more cheap, frequent requests — polling, telemetry, metadata — than critical ones. If those succeed, the overall rate stays above 99.9% even while every attempt to start a stream fails. The high-volume, low-value traffic is drowning the signal.

2. It aggregates across users. A failure concentrated on 2% of users, all of whom are completely broken, looks identical to a failure spread thinly across everyone. The first is an outage for those users; the second is imperceptible. An aggregate rate cannot distinguish them.

3. It measures requests, not journeys. The user's experience is "I opened the stream and watched it". That involves many requests, and a 99.9% per-request success rate across twenty requests gives a journey success rate of about 98% — twenty times worse than the number on the dashboard.

What the SLO should be

Defined per critical user journey, measured as close to the user as possible.

  • Stream playback starts within N seconds — measured at the client, not the server.
  • Playback continues without a rebuffer for the session — the actual product promise.
  • Chat messages appear within N seconds of being sent.

And segmented, because aggregates hide concentrated failures: by region, by device class, by network type, and — critically — by whether the user is in the small set of very large streams where the load concentrates.

The measurement point matters most

Server-side success rates measure whether the server responded, which is not the question. A response that arrives after the client gave up is a failure the server records as a success. For a platform whose users are on varied networks, client-side measurement is the only measurement that reflects the product, and its absence is why the dashboard and the users disagreed.

The SLA distinction

An SLA is a contractual promise with consequences; an SLO is an internal target, deliberately stricter, that gives room to react before the contract is breached. Setting them equal means the first breach of the internal target is already a commercial event — which removes the ability to use the SLO as a management signal, and is a common and avoidable mistake.