Site Reliability Engineering (SRE) Guide: SRE vs DevOps, SLOs, and Error Budgets

Posted: | Last updated: | 4 minute read

Site Reliability Engineering Guide

Site Reliability Engineering (SRE) is what happens when you ask a software engineer to design an operations function. Coined by Google in 2003, SRE applies software engineering principles — automation, measurement, iterative improvement — to infrastructure and operations. It is not a rebranding of DevOps. It is a specific implementation of DevOps principles with concrete practices, metrics, and organizational structures.

SRE vs DevOps

Aspect DevOps SRE
Origin Cultural movement Google engineering practice
Focus Breaking silos, collaboration Reliability as a feature
Measurement Deployment frequency, lead time SLOs, error budgets
Key practice CI/CD, IaC, monitoring Error budgets, toil reduction
Team structure Embedded in dev teams Dedicated SRE team
Philosophy “Everyone is responsible for ops” “Software engineers do ops, using software”

They are complementary. DevOps is the philosophy. SRE is one way to implement it.

SLIs, SLOs, and SLAs

SLI — Service Level Indicator

A quantitative measure of a service’s behavior. The raw metric.

SLI Type Formula Example
Availability successful_requests / total_requests 99.95% of requests return non-5xx
Latency requests_under_threshold / total_requests 95% of requests complete in < 300ms
Throughput requests_processed / time_period 10,000 requests per second
Error rate error_requests / total_requests < 0.1% of requests return errors

SLO — Service Level Objective

The target for an SLI. This is the reliability target your team commits to.

SLO: 99.9% of requests to the payment API will return
successfully (non-5xx) over a 30-day rolling window.

SLA — Service Level Agreement

A contract with consequences (usually financial) for missing the SLO. SLAs are for customers. SLOs are for internal engineering.

Key insight: Your SLO should be stricter than your SLA. If your SLA is 99.9%, your SLO should be 99.95%. This gives you a buffer.

Error Budgets

The error budget is the amount of unreliability you can tolerate.

Error Budget = 1 - SLO

If SLO = 99.9%:
Error Budget = 0.1% = 43.8 minutes of downtime per month
                     = 8.76 hours per year

How Error Budgets Work

  1. Budget remaining: Ship features. Deploy aggressively. Take risks.
  2. Budget exhausted: Freeze feature releases. Focus on reliability work only.

This creates a self-regulating system:

  • Developers want to ship features → they need error budget → they care about reliability
  • SREs want reliability → they allow feature releases when budget is available → they support velocity

Error Budget Policy

When error budget is:
  > 50% remaining → Ship freely, deploy daily
  25-50% remaining → Deploy with extra testing, no risky changes
  < 25% remaining → Deploy only reliability fixes
  0% remaining → Feature freeze until budget replenishes

Toil: The Enemy of SRE

Toil is manual, repetitive, automatable work that scales linearly with service growth and has no enduring value.

Examples of toil:

  • Manually restarting pods that crash weekly
  • Hand-creating user accounts
  • Copy-pasting the same Terraform for every new environment
  • Manually checking certificate expiration dates

Not toil:

  • Incident response (unpredictable, requires judgment)
  • Writing automation (enduring value)
  • Architecture reviews (strategic value)

The 50% rule: SREs should spend no more than 50% of their time on toil. The rest goes to engineering work that reduces future toil.

Measuring Toil

Track time spent on toil weekly:

Week Toil Hours Engineering Hours Toil %
1 25 15 63% ⚠️
4 20 20 50%
8 12 28 30% ✅
12 8 32 20% ✅

Incident Management

Incident Lifecycle

Detection → Triage → Mitigation → Resolution → Post-mortem

Severity Levels

Level Impact Response
SEV1 Service down, revenue impact All hands, 15-min response
SEV2 Degraded performance, partial outage On-call + backup, 30-min response
SEV3 Minor impact, workaround available On-call, next business day
SEV4 No user impact, internal only Track in backlog

Blameless Post-Mortems

Every SEV1 and SEV2 incident gets a post-mortem within 48 hours.

Template:

  1. Summary: What happened, when, impact.
  2. Timeline: Minute-by-minute events.
  3. Root cause: The underlying issue (not “human error”).
  4. Contributing factors: What made it worse.
  5. Action items: Concrete fixes with owners and deadlines.
  6. Lessons learned: What we will do differently.

Critical rule: No blame. If a human made a mistake, the question is “Why did our system allow this mistake to happen?” — not “Who made the mistake?”

On-Call

Sustainable On-Call

  • Minimum 2 people in rotation. No single point of failure.
  • 8-12 hour shifts, not 24-hour shifts.
  • Compensation: Time off after on-call shifts, or additional pay.
  • Escalation path: If the on-call engineer cannot resolve in 30 minutes, escalate.
  • Runbooks: Every alert has a runbook with diagnosis steps and resolution procedures.
  • Target: < 2 pages per 12-hour shift. More than that means your system needs reliability work.

Building an SRE Practice

Start Small

You do not need a dedicated SRE team to start. Adopt SRE practices incrementally.

Month 1-2: Define SLIs and SLOs for your most critical service.

Month 3-4: Implement error budget tracking. Dashboard the error budget burn rate.

Month 5-6: Introduce blameless post-mortems for all incidents.

Month 7-8: Measure toil. Set a target to reduce it by 20%.

Month 9-12: Formalize on-call rotation. Create runbooks for every alert.

SRE Team Models

Model Structure Best For
Embedded SRE sits within a dev team Small org, 1-3 SREs
Dedicated Separate SRE team Medium org, 4-10 SREs
Consulting SRE reviews and advises Large org, SRE expertise as a service

Conclusion

SRE is not about preventing all failures — it is about measuring reliability, setting targets, and making data-driven trade-offs between reliability and velocity. Error budgets give teams a shared language: “We have budget, so let us ship.” Or “We are out of budget, so let us fix reliability.” Start by defining SLOs for your most important service, track the error budget, and run blameless post-mortems. The rest follows naturally.


Related posts: