SLA vs SLO vs SLI: Which Service Quality Metrics Do You Need?
Understand the differences between SLAs, SLOs, and SLIs — when to use each, how to define them, and how they work together for reliable systems.
SLA, SLO, SLI — three acronyms that get thrown around interchangeably but mean very different things. Mixing them up leads to broken promises, wasted engineering effort, and unreliable services. Think of it like a car's dashboard: the speedometer tells you how fast you're going (SLI), the speed limit sign tells you the target (SLO), and the traffic ticket is the consequence if you blow past it (SLA). Each serves a distinct purpose, and knowing which is which is foundational to running reliable systems. If you're new to reliability engineering, our guide to tracking service level objectives covers the basics of SLO implementation.
What Is an SLI (Service Level Indicator)?
An SLI is a quantitative measurement of a specific aspect of your service's behavior. It's the raw data — what's actually happening right now.
SLIs answer the question: "How is the service performing right now?"
Common SLI Types
- Availability SLI:
successful_requests / total_requests - Latency SLI:
requests_under_threshold / total_requests - Error rate SLI:
error_requests / total_requests - Throughput SLI:
requests_processed / second
What Makes a Good SLI
A good SLI reflects the user experience, not your internal comfort metrics. "CPU at 40%" tells you nothing about whether users are happy. "99.2% of requests completing under 200ms" tells you everything.
Principle: Measure what users care about, not what engineers find interesting.
What Is an SLO (Service Level Objective)?
An SLO is the target reliability level you set for a given SLI. It's the promise you make to yourself (or your team) about how reliable the service should be.
SLOs answer the question: "How reliable does this service need to be?"
Example SLOs
- 99.9% of requests succeed (availability)
- 99.5% of requests complete under 200ms (latency)
- Error rate stays below 0.1% (errors)
The Math Behind SLOs
Every SLO implies an error budget:
| SLO | Error Budget | Downtime per Month |
|---|---|---|
| 99.9% | 0.1% | 43.8 minutes |
| 99.95% | 0.05% | 21.9 minutes |
| 99.99% | 0.01% | 4.38 minutes |
| 99.999% | 0.001% | 26.3 seconds |
The error budget is your fuel for shipping changes. Spend it on risky deployments and new features. Conserve it when approaching limits. The Google SRE Handbook provides the authoritative framework for SLO design and error budget policy.
What Is an SLA (Service Level Agreement)?
An SLA is a formal contract between your organization and your customers. It defines the minimum acceptable performance level and the consequences when you fail to meet it.
SLAs answer the question: "What happens when we fail?"
SLA Components
- Commitment: The specific SLO threshold you guarantee
- Measurement window: Rolling 30 days, calendar month, quarterly
- Consequences: Service credits, refunds, or termination rights
- Exclusions: Planned maintenance, force majeure, third-party failures
Real-World SLA Example
"Provider guarantees 99.9% monthly availability. If availability drops below 99.9%, customer receives a service credit of 10% per 0.1% below the threshold, up to a maximum of 30% of the monthly fee."
Side-by-Side Comparison
| Aspect | SLI | SLO | SLA |
|---|---|---|---|
| What it is | A measurement | A target | A contract |
| Purpose | Quantify behavior | Set reliability goal | Define consequences |
| Audience | Internal teams | Internal teams + leadership | Customers + legal |
| Enforcement | Technical | Organizational | Legal + financial |
| Frequency | Real-time / continuous | Monthly / quarterly review | Per contract term |
| Consequence of failure | Alerts, dashboards | Error budget exhaustion | Service credits, churn |
| Example | 99.97% uptime this month | 99.9% monthly uptime target | "Below 99.9% = 10% credit" |
Start monitoring your SLIs in 5 minutes. Track availability, latency, and error rates with real-time dashboards. No credit card required.
How They Work Together: SLI → SLO → SLA
The three concepts form a pipeline from measurement to action:
SLI (measure) → SLO (target) → SLA (contract)
Step 1: Define your SLIs — what metrics reflect user experience?
Step 2: Set your SLOs — what reliability targets are realistic and necessary?
Step 3: Write your SLAs — what guarantees do you make to customers, and what happens if you break them?
The Relationship in Practice
- Your SLI tells you: "We're at 99.95% this month"
- Your SLO tells you: "We need 99.9%, so we're good"
- Your SLA tells you: "We're above the contractual threshold, so no credits owed"
If your SLI drops below your SLO, you've burned through error budget. If it drops below your SLA threshold, you owe your customers money. This is why SLOs should always be tighter than SLAs — you want internal alarms before external consequences.
Pros and Cons of Each
SLI — Service Level Indicator
Pros:
- Gives you objective, real-time visibility into service health
- Enables data-driven decision making instead of gut feelings
- Foundation for alerting and incident response
- Helps identify trends before they become outages
Cons:
- Without an SLO, SLIs are just numbers with no context
- Too many SLIs create noise and dilute focus
- Poorly chosen SLIs can mislead — measuring the wrong thing is worse than measuring nothing
- Requires ongoing maintenance as services evolve
SLO — Service Level Objective
Pros:
- Turns reliability into a measurable, manageable metric
- Error budgets balance reliability with feature velocity
- Creates shared language across engineering and business teams
- Enables burn-rate alerting for smarter incident detection
Cons:
- Setting targets too high creates a culture of fear; too low creates complacency
- Requires discipline to actually act on error budget data
- Teams may game the metric instead of improving the service
- Takes time to calibrate — initial targets are often wrong
SLA — Service Level Agreement
Pros:
- Provides contractual clarity for customer expectations
- Creates financial incentive for reliability investment
- Protects both provider and customer with defined terms
- Forces organizations to take reliability seriously
Cons:
- Legal complexity — poorly written SLAs create loopholes
- Can encourage minimum-viable reliability instead of excellence
- Consequences may not align with actual customer impact
- Expensive to honor — service credits add up quickly during outages
How to Define SLIs for Your System
Step 1: Identify User Journeys
List the critical paths your users take:
- Login / authentication
- Core product action (search, checkout, upload)
- Data retrieval (dashboard, reports)
- Background processing (emails, webhooks)
Step 2: Choose the Right Metric Type
For each journey, pick the SLI that reflects user experience:
- Availability: Is it working at all? (binary success/failure)
- Latency: How fast is it responding? (time-based)
- Correctness: Is the response accurate? (quality-based)
- Throughput: Can it handle the load? (capacity-based)
Step 3: Set Up Measurement
Implement SLI collection with your monitoring stack. For uptime and availability monitoring, our website uptime monitoring best practices guide covers the technical setup in detail.
Step 4: Validate Against Reality
Run your SLIs against historical incident data. If your SLI didn't degrade during a known outage, it's not measuring the right thing.
Error Budgets and Why They Matter
Error budgets are the bridge between reliability and velocity. Without them, teams either become paralyzed by risk aversion or ship recklessly and break things.
Error Budget Policy
Define what happens at each budget level:
| Budget Remaining | Action |
|---|---|
| > 50% | Normal development velocity, green-light risky changes |
| 25–50% | Increase caution, require additional testing |
| 10–25% | Freeze non-critical deployments, focus on reliability |
| < 10% | All hands on reliability, no feature work |
| Exhausted | Incident review, root cause analysis, process changes |
Burn Rate Alerts
Alerting on error budget burn rate is more actionable than static threshold alerts. A burn rate of 2x means you'll exhaust your budget in 15 days at the current rate. This approach significantly reduces alert fatigue by focusing on meaningful signals.
Common Mistakes
Measuring infrastructure instead of user experience. CPU utilization is not an SLI. "99.5% of API responses under 200ms" is. Your SLIs should reflect what users feel, not what servers report.
Setting SLAs without SLOs. Writing a contract without internal targets is reckless. Your SLA should be a subset of your SLO, not the other way around.
Ignoring error budgets. If you never spend your error budget, your SLO is too conservative. If you always spend it, your service needs investment. Either way, the data should drive decisions.
Too many SLIs/SLOs. Five to ten SLIs per team is plenty. More than that and you're measuring everything and understanding nothing.
Treating SLAs as engineering goals. SLAs are for customers. SLOs are for engineers. Conflating them creates misaligned incentives.
No action on violations. An SLO violation without a response is just a number. Build processes around error budget exhaustion — incident management best practices provide the framework for structured response.
Setting and forgetting. SLIs and SLOs should evolve as your service, user expectations, and traffic patterns change. Review quarterly, adjust as needed.
Getting Started
- Pick your three most critical user journeys
- Define one SLI for each (availability, latency, error rate)
- Set initial SLOs based on current performance (start with 99.9%)
- Calculate your error budgets
- Build dashboards showing SLI trends and budget status
- Set up burn-rate alerts for budget consumption
- Document your SLA terms if you sell to customers
The goal isn't perfection on day one. It's building a system where reliability is measurable, manageable, and improving over time.