Skip to content
SLIs, SLOs, and SLAs: Making Reliability Measurable and Contractual 2 min

SLIs, SLOs, and SLAs: Making Reliability Measurable and Contractual

SD
ScaleDojo
May 11, 2026
2 min read420 words
SLIs, SLOs, and SLAs: Making Reliability Measurable and Contractual

Google's Error Budget Revolution

Before Google pioneered SRE, reliability was a vague goal: 'make it as reliable as possible.' This meant the ops team always wanted more testing and fewer deployments, while the dev team always wanted to ship faster. They were in permanent conflict. Google's insight was to make reliability a finite, measurable resource - an error budget - that both teams manage together. If the budget is full, ship features. If it is depleted, fix reliability. No more arguing.

SLI, SLO, SLA: The Hierarchy

The Three Levels:

  SLI (Service Level Indicator) - the MEASUREMENT
    What: a specific metric
    Example: 'the % of requests completing in < 500ms'
    Formula: (requests < 500ms) / (total requests) * 100

  SLO (Service Level Objective) - the TARGET
    What: the goal for an SLI over a time window
    Example: 'SLI >= 99.9% over rolling 30 days'
    Internal agreement between teams

  SLA (Service Level Agreement) - the CONTRACT
    What: SLO + consequences for missing it
    Example: 'If availability < 99.9%, customer gets
             10% service credit per 0.1% below target'
    External contract with customers.
    Usually set LOWER than internal SLOs.

  Relationship:
    SLA <= SLO (external promise <= internal target)
    SLO is based on SLI (target needs a measurement)
    If internal SLO is 99.95%, external SLA might be 99.9%

Error Budgets: The Key Insight

Error Budget Calculation:

  SLO: 99.9% availability over 30 days
  Error budget: 100% - 99.9% = 0.1%

  30 days = 43,200 minutes
  0.1% of 43,200 = 43.2 minutes of allowed downtime

  Error budget tracking:
  Day 1-10:  0 incidents       -> 43.2 min remaining (100%)
  Day 11:    5 min outage      -> 38.2 min remaining (88%)
  Day 15:    20 min degradation -> 18.2 min remaining (42%)
  Day 20:    Decision: FREEZE deployments?
             Budget at 42% with 10 days left.
             risky deploy could use remaining budget.

  Budget remaining   Action
  ----------------   ----------------------------------
  > 50%              Ship features, take risks
  25-50%             Ship carefully, extra testing
  10-25%             Bug fixes only, no new features
  < 10%              All hands on reliability work
  0%                 Deployment freeze until budget resets

Choosing Good SLIs

Good SLIs by Service Type:

Service Type      SLI                    Example Target
----------------  ---------------------  ---------------
API/Web service   Availability           99.9%
                  Latency (p99)          < 500ms
                  Error rate             < 0.1%

Data pipeline     Freshness              < 5 min old
                  Correctness            99.99%
                  Coverage               > 99.5% processed

Storage system    Durability             99.999999999%
                  Availability           99.99%
                  Read latency (p99)     < 10ms

Bad SLIs (do not use):
  - CPU usage (internal metric, not user-facing)
  - Uptime in hours (too coarse)
  - 'Number of incidents' (not measurable in real-time)

The Nines Table

Availability   Downtime/year   Downtime/month   Cost
-------------  --------------  ---------------  ----------
99%   (2 9s)   3.65 days       7.3 hours        Low
99.9% (3 9s)   8.76 hours      43.2 minutes     Moderate
99.95%         4.38 hours      21.6 minutes     High
99.99%(4 9s)   52.6 minutes    4.3 minutes      Very high
99.999%(5 9s)  5.26 minutes    25.9 seconds     Extreme

Most web services: 99.9% is a good starting point.
Each additional 9 roughly 10x the engineering cost.
99.999% requires: multi-region, automated failover,
  zero-downtime deploys, chaos engineering.

Interview Tip

When discussing reliability requirements, say: 'I would define SLIs based on user-facing metrics: availability (% of successful requests), latency (p99 < 500ms), and error rate (< 0.1%). I would set internal SLOs at 99.95% and external SLAs at 99.9%, giving us a buffer. The error budget (0.05% = ~21 minutes/month) becomes the decision framework: if budget is healthy, we ship features. If it is depleted, we freeze deployments and focus on reliability. This aligns dev and ops teams with a shared, measurable target.'

<
SLIs, SLOs, and SLAs: Making Reliability Measurable and Contractual - Architecture Diagram
Architecture overview
/blockquote>

Key Takeaway

SLIs measure reliability, SLOs set targets, SLAs make it contractual. Error budgets turn reliability from an abstract goal into a finite resource that engineering teams can make rational decisions with. If your error budget is full, ship features. If it is depleted, fix reliability.

Enjoyed this article?

Share it with your network to help others level up their system design skills.

Discussion0

Join the Discussion

Sign in to leave comments, reply to others, or like insights.

Sign In to ScaleDojo

No comments yet. Be the first to start the thread!

Related Articles

Enjoyed this content?

Your support keeps us creating free resources

We put a lot of hours into researching and writing these guides. If it helped you, consider buying us a coffee. Every bit goes toward keeping ScaleDojo's content free and growing.

$

One-time payment via Stripe. ScaleDojo account required.

ScaleDojo Logo
Initializing ScaleDojo