SLOs, SLIs & Error Budgets

How reliable should a service be? "As reliable as possible" is the wrong answer — 100% reliability is impossible, infinitely expensive to chase, and usually unnecessary (users can't tell the difference between 99.99% and 100%). SLOs (Service Level Objectives) make reliability a deliberate, measurable target instead of a vague aspiration, and the associated error budget turns the eternal tension between "ship fast" and "stay reliable" into a clear, data-driven decision. This is a cornerstone of Site Reliability Engineering (SRE).

The framework has three linked pieces: an SLI measures something users care about (e.g. the fraction of requests served successfully and quickly), an SLO is the target for that SLI (e.g. 99.9% over 30 days), and the error budget is the allowed shortfall (the 0.1% you're permitted to fail). That budget is the key insight — it gives teams permission to fail a little, and a principled way to decide when to push features versus when to stop and fix reliability.

TL;DR

Quick Example

The three pieces connect into a budget you can spend:

The Three Concepts

Error Budgets

The error budget is 100% − SLO — the amount of unreliability you're allowed over the window. A 99.9% monthly SLO permits ~43 minutes of failure per month. This number is powerful because it reframes reliability decisions:

💡 The error budget ends the "devs want to ship, ops want stability" standoff: the budget is the agreed policy. Reliability becomes a shared, measurable currency rather than an argument.

Choosing Good SLOs

Best Practices

Common Mistakes

Chasing 100% reliability

SLIs that don't reflect user experience

FAQ

What's the difference between an SLI, an SLO, and an SLA?

An SLI is the measurement — a number reflecting service quality from the user's perspective, like the percentage of requests served successfully within 300ms. An SLO is the internal target for that SLI over a window — e.g. 99.9% over 30 days — that your team commits to. An SLA is the external contract with customers promising a (usually looser) level, with financial or contractual consequences if breached. The chain is: SLIs measure, SLOs set the goal you manage to, and SLAs are the customer-facing promise you keep comfortably inside your stricter SLO.

What is an error budget and why is it useful?

An error budget is the allowed amount of unreliability: 100% minus your SLO. A 99.9% monthly SLO gives roughly 43 minutes of permitted failure per month. It's useful because it turns reliability into a spendable currency that resolves the classic tension between shipping features and staying stable: when budget remains, the team can take risks and move fast; when it's exhausted, they pause risky changes and invest in reliability until it recovers. Instead of endless debates between developers and operations, the error budget is the agreed, data-driven policy for that tradeoff.

Why shouldn't I aim for 100% reliability?

Because it's both impossible and the wrong goal. No real system achieves 100% — dependencies, networks, and hardware all fail eventually — and the cost of each additional "nine" of reliability rises roughly tenfold while the user-perceived benefit shrinks toward zero (people genuinely can't distinguish 99.95% from 100%). Chasing perfection diverts huge effort from features users actually want and leaves no error budget to ship with. The right target is the lowest reliability at which users won't notice a difference — enough to keep them happy, not so much that you're spending fortunes on imperceptible gains.

How do SLOs relate to alerting?

SLOs make alerting smarter by tying it to user impact and your error budget rather than raw thresholds. Instead of paging on every CPU spike or transient error, you alert on burn rate — how fast you're consuming the error budget. A fast burn (you'll exhaust the month's budget in hours) warrants an urgent page; a slow burn can be a ticket. This dramatically reduces alert noise and false pages, focusing human attention on problems that actually threaten the reliability target users care about. See Alerting.

Related Topics

References