Learning objectives
By the end of this module, you should be able to:
- Explain how SRE differs from traditional operations without treating the two as opposites.
- Describe reliability as a product property with an explicit tolerance for failure.
- Identify toil and prioritize engineering work that removes repetitive operational load.
Reliability is a user outcome, not a server state
A service is reliable when users can successfully complete the interactions that matter within agreed expectations. Host uptime can contribute to that outcome, but it is not the outcome itself.
SRE therefore starts with user-visible behaviour, measurable service objectives and explicit ownership rather than with a list of infrastructure components.
Risk is managed, not eliminated
Perfect reliability is usually neither achievable nor economically sensible. Engineering teams need a documented target that reflects user expectations and business consequences, then they can spend reliability effort where it changes outcomes.
This creates a disciplined conversation between delivery velocity and operational risk instead of a permanent “stability versus features” argument.
Toil consumes reliability capacity
Toil is recurring operational work that is manual, repetitive, automatable, reactive and tends to scale with service growth. It is not simply any work that feels tedious.
Measure high-volume toil, estimate its cost and engineer it out when the return justifies the change.
- manual or repetitive intervention
- alert triage with no durable fix
- routine restarts or cleanup
- copy/paste provisioning
- ticket work that scales linearly with demand
Availability targets translate into different failure allowances
For a time-based availability objective, each additional nine sharply reduces the allowed unavailable time. Use the table as intuition, not as a substitute for choosing a user-relevant SLO.
A request-based SLO should normally be budgeted in valid events rather than converted mechanically into downtime; the two models answer different questions.
Worked example
Reliability decision loop
User expectation → reliability objective → observed risk → engineering decision → measurement
- The objective anchors the discussion in a user-visible need.
- The engineering decision can be feature work, reliability work, automation or acceptance of measured risk.
Thirty-day availability intuition
99% ≈ 7 h 12 min unavailable / 30 days
99.9% ≈ 43 min 12 s
99.95% ≈ 21 min 36 s
99.99% ≈ 4 min 19 s
99.999% ≈ 25.9 s
- These are approximate time-based budgets for a 30-day window.
- More nines can require disproportionately more engineering, redundancy and operational discipline; choose them from user/business need rather than prestige.
SRE and traditional operations overlap
Operations discipline: ownership · change control · recovery · capacity
SRE emphasis: software engineering · SLOs/error budgets · automation · toil reduction
- SRE does not make operational fundamentals obsolete.
- The distinction is the explicit use of engineering, automation and reliability objectives to manage operational work and risk.
Core lab · account-free
Lab 01 — Build a reliability and toil inventory
Goal: Classify recurring operational work and select one reliability-improvement candidate.
Before you start
- No cloud account required.
- Core lab uses bash/Python 3 and local files only.
- Running case study: use the same checkout journey throughout the course unless the lab explicitly says otherwise.
STEP 1Create a small operations inventory
cat > /tmp/sre-toil.json <<'EOF'
[{"task":"restart-worker","minutes":20,"per_week":8,"manual":true,"repeatable":true,"automatable":true},
{"task":"incident-review","minutes":60,"per_week":1,"manual":true,"repeatable":false,"automatable":false},
{"task":"capacity-review","minutes":45,"per_week":1,"manual":true,"repeatable":true,"automatable":false},
{"task":"clear-temp","minutes":10,"per_week":12,"manual":true,"repeatable":true,"automatable":true}]
EOF
STEP 2Score toil hours
python3 - <<'PY2'
import json
rows=json.load(open('/tmp/sre-toil.json'))
for r in rows:
r['weekly_minutes']=r['minutes']*r['per_week']
r['toil']=r['manual'] and r['repeatable'] and r['automatable']
for r in sorted(rows,key=lambda x:x['weekly_minutes'],reverse=True):print(r['task'],r['weekly_minutes'],r['toil'])
PY2
STEP 3Choose an engineering response
Choose one candidate and defend whether it is truly toil. Then estimate both weekly time recovered and reliability risk reduced; the highest-time task is not automatically the best automation target.
Verify
- The selected task is repetitive and automatable rather than simply unpleasant work.
- The proposed change removes or bounds repeated human intervention.
Expected outcome
- A quantified weekly toil inventory and one engineering-improvement hypothesis.
Diagnose / troubleshoot
- If every task is labelled toil, revisit whether it is repetitive and scales with service demand.
- If the proposal is “document the manual step,” ask whether the system can remove the need for the step.
Real-world connectionSRE teams protect engineering capacity by converting recurring operations into durable system improvements.
Real-tool practicum · optional but recommended
Optional practicum — inspect local operational churn
Use shell history or a lab repository to identify repeated operational commands without exposing secrets.
Prerequisites
- Use only your own lab shell history or a sanitized training repository.
Resources created
- No services are started; only terminal output from a local lab shell history or training repository is inspected.
Cost / risk
- No cloud cost. Main risk is accidentally exposing credentials or customer identifiers from shell history.
TOOL 1history | tail -100 | sed 's/[0-9][0-9]*/N/g' | sort | uniq -c | sort -nr | head
Verify
- You can identify repeated command patterns that deserve investigation.
Cleanup
- Remove only resources created for the disposable lab.
Warnings
- Do not copy/export history containing tokens, passwords, customer IDs or confidential paths.
- Repeated commands are a signal to investigate, not automatic proof of toil.
Avoid these traps
Common mistakes
- Equating reliability with 100% uptime.
- Calling every operational task toil.
- Automating a bad process without measuring whether the automation reduces risk or work.
Knowledge check
Can you connect the reliability objective to an engineering decision?
Three concept checks plus one scenario check.
1What makes SRE primarily an engineering discipline?
It uses software engineering, measurement and automation to improve the operation and reliability of production systems.
2Scenario: product wants a feature launch that adds measurable risk, while the service still has most of its error budget. What is the SRE contribution?
Expose the reliability evidence, expected risk and agreed error-budget policy so product and engineering can make a risk-informed decision rather than treating SRE as an automatic veto.
3Which characteristic helps distinguish toil from ordinary project work?
Toil is repetitive operational work that tends to scale with service growth and is amenable to automation.
4Scenario: engineers restart the same worker eight times each week using a runbook. What is the strongest SRE response?
Measure the failure pattern and engineer the restart trigger or underlying failure out of the system rather than normalizing repeated manual intervention.