SLA vs SLO vs SLI: A Practical Guide for Engineering Teams
The acronyms are confusing. Here's what each one means, how they relate, and how to define yours without over-engineering it.
up0 Team
Three Acronyms, One Framework
SLA, SLO, and SLI appear together constantly in SRE and DevOps literature. They're related but distinct, and confusing them leads to poorly designed reliability targets, bad alerting, and contracts that don't reflect reality.
Here's the short version:
- SLI: what you measure
- SLO: what you target
- SLA: what you promise (and what you owe if you break the promise)
They form a hierarchy. Let's walk through each one.
SLI: The Metric
An SLI (Service Level Indicator) is a quantitative measure of some aspect of your service's behavior.
Good SLIs are:
- Measurable in real time
- Directly tied to user experience
- Consistent and reproducible
Common SLIs:
Availability: successful_requests / total_requests
Latency: p95 response time (milliseconds)
Error rate: 5xx_responses / total_responses
Throughput: requests processed per second
Freshness: age of most recent data (seconds)
SLIs are just measurements. They don't tell you whether the number is good or bad; that's what SLOs are for.
SLO: The Target
An SLO (Service Level Objective) is a target value or range for an SLI over a given time window.
SLI: availability = 99.87% (last 30 days)
SLO: availability >= 99.9% (per month)
The SLO is your internal commitment. It drives engineering priorities, deployment decisions, and on-call behavior. When your SLI crosses the SLO boundary, something needs to change.
A practical SLO for a production API:
Availability SLO: >= 99.9% over a rolling 30-day window
Latency SLO: p95 < 200ms (hourly average)
Error rate SLO: < 0.5% of requests return 5xx
One common mistake: setting SLOs too high because it "sounds good." 99.999% uptime means less than 5 minutes of downtime per year. For most teams, that level of reliability is expensive to achieve and expensive to maintain. Start with what's achievable and meaningful, then raise the bar as you improve.
SLA: The Contract
An SLA (Service Level Agreement) is a formal agreement between you and your customers that specifies what happens when you fail to meet a reliability target.
SLAs usually include:
- A defined metric and target (the SLO you're publicly committing to)
- A measurement window
- Consequences for breach (service credits, refunds, termination rights)
Example SLA:
Availability commitment: >= 99.5% per calendar month
If breached:
- 99.0% – 99.5%: 10% service credit
- 95.0% – 99.0%: 25% service credit
- Below 95.0%: 50% service credit
Notice the SLA target (99.5%) is lower than the internal SLO (99.9%). This is intentional. Your SLO gives you a buffer: if you're hitting 99.9% internally, you have headroom before you breach the customer-facing SLA.
How They Relate
SLI measures → "We served 99.87% of requests successfully"
SLO targets → "We need to hit 99.9% or we're missing our goal"
SLA commits → "We promise customers 99.5% or we owe credits"
The SLA should always be easier to meet than the SLO. If they're the same, one bad month triggers both an internal miss and a customer payout simultaneously.
Starting From Scratch
If you're defining these for the first time, keep it simple:
Step 1: Pick 1-2 SLIs that reflect user experience. For most web services, availability and p95 latency cover 90% of what users care about.
Step 2: Set an SLO based on historical data. Look at the last 90 days. What did you actually achieve? Set the SLO slightly above that as a stretch target.
Step 3: Set your SLA 0.5–1% below the SLO. This gives you a buffer.
Step 4: Track everything. An SLO you don't measure is just a number in a document.
How up0 Helps
up0 tracks availability and latency SLIs from 5 regions, letting you see whether you're on track to meet your SLO before the month ends. You can set SLO targets per monitor, watch error budget burn in real time, and configure alerts when burn rate exceeds a safe threshold, so you know about SLA risk before customers do.
Related reading
- The complete guide to SLO tracking for modern infrastructure: for the tactical, implementation-level follow-up to this explainer.
Want to monitor your services automatically? Join the waitlist →; up0 is in early access.