Skip to content
atlas

Service level objective (SLO)

Also known as: SLO

An internal target for how well a service should work, such as 99.9% of requests answered within a second over 30 days.

Draft - this entry has not been reviewed yet.

Formal

A target value for a measured sign of service quality, such as the share of requests that succeed or answer fast enough, over a set time window; the gap between the target and 100% is the error budget the team may spend.

In plain English

Like a bus company aiming for 98% of buses on time; the timetable it prints for passengers promises less, so it has room to spare before it owes anyone money.

In practice

The team behind a school communication portal allows itself 43 minutes out of service a month; after a bad release uses 40 of them, it pauses new features and spends the rest of the month on stability.

Why it matters

It turns availability from a vague wish into a number that guides the choice between speed and stability, and warns the team before it breaks the SLA it has given its own customers.

Technical deep dive

An SLO has three parts: a service level indicator (SLI), a target and a compliance window. The SRE Workbook recommends expressing every SLI as a ratio of good events to valid events, so it ranges from 0 to 100% and has a uniform meaning: for availability, successful responses divided by all valid requests, excluding for example 4xx responses caused by clients; for latency, the share of requests served faster than a threshold such as 300 ms; and for pipelines, freshness, correctness or coverage. Latency SLOs are usually stated as a percentile target (99% of requests under 300 ms) rather than an average, which hides the tail. Time-based SLIs, which count good minutes instead of good requests, weight a quiet night the same as peak hour and so tend to misrepresent user impact.

The error budget is 1 minus the target applied to the window. At 99.9% over 30 days a service may fail 0.1% of valid requests, which is 1,000 failures per million requests or, for a time-based SLI, 43.2 minutes. Rolling windows (the last 28 or 30 days) reflect what users recently experienced and avoid the budget suddenly resetting on the first of the month; calendar windows align with business reporting and SLAs. Alerting should be driven by the burn rate, the speed at which the budget is being consumed, rather than by the instantaneous SLI.

The budget becomes a management tool through an error budget policy agreed in advance between product, development and operations: for example, when the budget is exhausted, feature releases pause except for reliability fixes and security patches until the service is back within target, and any single incident consuming more than a set share of the budget requires a postmortem. Without such a policy an SLO is just a dashboard. The corollary is that a large remaining budget is permission to take risk, such as faster rollouts or chaos experiments.

Targets should be set from user expectations and historical performance, not aspiration. 100% is the wrong target because users cannot distinguish it from very high availability behind their own imperfect networks, and pursuing it freezes change. An SLO also cannot realistically exceed the combined availability of hard dependencies, including third-party SLAs, without redundancy. Too many SLOs dilute attention; a few per critical user journey is typical. SLOs are best measured as close to the user as practical, at the load balancer or with client-side telemetry, because server-side metrics miss requests that never arrive. Specifications such as OpenSLO allow SLOs to be declared as code alongside services, and the SLO is then set stricter than any external SLA so that internal reaction precedes contractual breach.

What to learn first

Everything this builds on, foundations first.

  1. Metrics
  2. →Availability
  3. →Service level objective (SLO)

Relationships

Sources & further reading

Where this data comes from

This entry was drafted by an AI from the sources above and has not yet been checked by a person. Treat it as a starting point, and check anything important against the sources.

See the review queueSuggest a correction on GitHubThis term as JSON

Check yourself

Loading…

Atlas is in beta.