Skip to main content

Introduction to SRE


1 - What is SRE?

1.1 Definition

"SRE is what happens when you ask a software engineer to design an operations function." - Ben Treynor, Google

Site Reliability Engineering = Applying software engineering principles to infrastructure and operations.

1.2 Origins

YearEvent
2003The first SRE team is created at Google
2004Ben Treynor defines the principles
2016Publication of the book "Site Reliability Engineering"
2018Publication of the "SRE Workbook"
2020+Widespread adoption across the industry

2 - SRE vs DevOps

2.1 Comparison

AspectDevOpsSRE
NatureCulture/MovementImplementation/Job
FocusCollaborationReliability
MetricsVariableSLIs/SLOs
BackgroundOps → DevDev → Ops
AutomationImportantFundamental

2.2 Complementarity

"Class SRE implements interface DevOps" - Google

SRE is a concrete way to implement DevOps with specific practices.


3 - Fundamental principles

3.1 The 7 SRE principles

sre_principles:
1_operations_is_software:
description: "Treat ops problems as software problems"
example: "Automate instead of doing it manually"

2_slos_not_features:
description: "Reliability is a feature"
example: "Prioritize stability over new features"

3_work_to_minimize_toil:
description: "Eliminate repetitive manual work"
example: "Automate recurring tasks"

4_automate_this_years_job_away:
description: "Automate to free up time"
example: "Scripts, tools, self-healing"

5_move_fast_by_reducing_cost_of_failure:
description: "Reducing the cost of errors lets you move faster"
example: "Canary deployments, fast rollbacks"

6_share_ownership_with_developers:
description: "Shared responsibility"
example: "Devs participate in on-call"

7_use_same_tooling:
description: "Same tools for Dev and SRE"
example: "Monitoring, deployment pipelines"

3.2 The 50% rule

Goal: Maximum 50% of time on operations, minimum 50% on engineering.


4 - The role of an SRE

4.1 Responsibilities

DomainActivities
AvailabilitySLOs, monitoring, alerting
LatencyPerformance optimization
PerformanceLoad testing, profiling
EfficiencyResource optimization
Change ManagementRelease engineering
MonitoringObservability stack
Emergency ResponseIncident management
Capacity PlanningForecasting, scaling

4.2 Required skills

skills:
technical:
- Programming (Python, Go)
- Linux/Unix systems
- Networking
- Cloud platforms
- Kubernetes
- Monitoring tools

soft:
- Problem solving
- Communication
- Collaboration
- Decision making under pressure
- Documentation

5 - SRE team structure

5.1 Models

Service typeDev:SRE ratio
Critical services6-8:1
Standard services10-12:1
Mature services20:1

6 - SRE Engagement

6.1 Production Readiness Review (PRR)

prr_checklist:
architecture:
- [ ] Design doc reviewed
- [ ] Dependencies documented
- [ ] Failure modes identified

monitoring:
- [ ] SLIs defined
- [ ] SLOs agreed
- [ ] Dashboards created
- [ ] Alerts configured

operations:
- [ ] Runbooks written
- [ ] On-call training done
- [ ] Escalation path defined

capacity:
- [ ] Load tested
- [ ] Scaling strategy defined
- [ ] Resource limits set

6.2 Engagement criteria

engagement_criteria:
minimum_requirements:
- SLOs defined and measured
- Error budget policy agreed
- Monitoring in place
- Documentation complete
- On-call rotation shared

exit_criteria:
- Service stable for 6 months
- Dev team trained
- Toil below threshold
- Error budget healthy

7 - SRE Culture

7.1 Blameless Culture

blameless_principles:
- Focus on systems, not people
- Ask "what" not "who"
- Learn from failures
- Share learnings openly
- Encourage experimentation

7.2 Psychological Safety

BehaviorEncourages
"Naive" questionsInnovation
Admitting mistakesImprovement
Asking for helpCollaboration
Challenging the status quoExcellence

Summary

In this chapter, we discovered:

  • The definition of SRE
  • The difference with DevOps
  • The 7 fundamental principles
  • The role of an SRE
  • The team structures
  • The blameless culture

Next step

In the next chapter, we will look at SLIs, SLOs, and SLAs.

→ Next chapter: SLIs, SLOs, and SLAs


← Back to table of contents