Skip to content
matthewcm.dev

    ↑ ↓ move · ↵ open · tab scopeopen graph →

    SLA vs SLO vs SLI

    The SLI is what you measure, the SLO is your target for it, the SLA is the promise with consequences — and the error budget turns all three into release decisions.

    Growingtended planted 2 min read
    On this page

    Three acronyms that get used interchangeably and shouldn’t be. Once they click, they turn reliability from a feeling into a decision you can make together.

    The three

    • SLI — Service Level Indicator. What you actually measure. “The proportion of requests served in under 300 ms.”
    • SLO — Service Level Objective. Your internal target for that indicator. “99.9% of requests under 300 ms, over a rolling 30 days.”
    • SLA — Service Level Agreement. The external promise, with consequences (usually service credits) if you miss it. “99.5% availability per month, or the customer gets money back.”

    The SLA is normally looser than the SLO. The SLO is your early warning; you want to know you’re slipping long before you owe anyone anything.

    Error budgets

    The clever part is the error budget: 1 − SLO. A 99.9% SLO means 0.1% of requests are allowed to fail. That’s a budget, and you get to spend it:

    • Budget left? Ship faster, run experiments, do the risky migration.
    • Budget gone? Slow down, freeze risky changes and spend the time on reliability.

    It ends the eternal argument between “move fast” and “keep it stable”, because both sides agreed the number in advance.

    Back-of-envelope numbers

    SLODowntime allowed per 30 days
    99%~7.2 hours
    99.9%~43 minutes
    99.99%~4.3 minutes

    Every extra nine costs roughly an order of magnitude more effort. Most user-facing products don’t need four.

    Choosing good SLIs

    Pick indicators users would notice: availability, latency (percentiles, not averages), correctness and freshness. For a streaming or real-time UI, freshness is often the one that matters — a price that’s two seconds stale is technically “available” and practically wrong.

    In practice

    Working on video apps for broadcasters, I saw how much weight sits on a handful of user-felt indicators like start-up time and rebuffering: a CDN can be “up” while viewers stare at a spinner. On platform work since, the most useful conversations I’ve had with stakeholders started with “what number would tell us this is working for users?” — and the answer became an SLI. The plumbing behind those numbers is Observability.

    • #sre
    • #reliability
    • #slo
    • #error-budgets
    • #observability

    ↪ Links to (1)