Site reliability engineering

Short description: Use of software engineering practices for IT

Site reliability engineering (SRE) is a discipline in the field of software engineering and IT infrastructure support that monitors and improves the availability and performance of deployed software systems and large software services (which are expected to deliver reliable response times across events such as new software deployments, hardware failures, and cybersecurity attacks).[1] There is typically a focus on automation and an infrastructure as code methodology. SRE uses elements of software engineering, IT infrastructure, web development, and operations[2] to assist with reliability. It is similar to DevOps as they both aim to improve the reliability and availability of deployed software systems.

## Contents

* 1 History
* 2 Definition
* 3 Principles and practices
* 4 Deployment
* 4.1 Kitchen Sink
* 4.2 Infrastructure
* 4.3 Tools
* 4.4 Product or Application
* 4.5 Embedded
* 4.6 Consulting
* 5 Industry
* 6 See also
* 7 References
* 8 Further reading
* 9 External links

## History

Site Reliability Engineering originated at Google with Benjamin Treynor Sloss,[3][4] who founded SRE team in 2003.[5] The concept expanded within the software development industry, leading various companies to employ site reliability engineers.[6] By March 2016, Google had more than 1,000 site reliability engineers on staff.[7] Dedicated SRE teams are common at larger web development companies.[8] In middle-sized and smaller companies, DevOps teams sometimes perform SRE, as well.[6] Organizations that have adopted the concept include Airbnb, Dropbox, IBM,[9] LinkedIn,[10] Netflix,[7] and Wikimedia.[11]

## Definition

Site reliability engineers (SREs) are responsible for a combination of system availability, latency, performance, efficiency, change management, monitoring, emergency response, and capacity planning.[12] SREs often have backgrounds in software engineering, systems engineering, and/or system administration.[13] The focuses of SRE include automation, system design, and improvements to system resilience.[13]

SRE is considered a specific implementation of DevOps;[14] focusing specifically on building reliable systems, whereas DevOps covers a broader scope of operations.[15][16][17] Despite having different focuses, some companies have rebranded their operations teams to SRE teams.[6]

## Principles and practices

Common definitions of the practices include (but are not limited to):[2][18]

* Automation of repetitive tasks for cost-effectiveness.
* Defining reliability goals to prevent endless effort.
* Design of systems with a goal to reduce risks to availability, latency, and efficiency.
* Observability, the ability to ask arbitrary questions about a system without having to know ahead of time what to ask.

Common definitions of the principles include (but are not limited to):

* Toil management, toil refers to manual, repetitive, automatable operational work.[19]
* Defining and measuring reliability goals—SLIs, SLOs, and error budgets.
* Non-Abstract Large Scale Systems Design (NALSD[20]) with a focus on reliability.
* Designing for and implementing observability.
* Defining, testing, and running an incident management process.
* Capacity planning.
* Change and release management, including CI/CD.
* Chaos engineering.

## Deployment

SRE teams collaborate with other departments within organizations to guide the implementation of the mentioned principles. Below is an overview of common practices:[21]

### Kitchen Sink

Kitchen Sink[22] refers to the expansive and often unbounded scope of services and workflows that SRE teams oversee. Unlike traditional roles with clearly defined boundaries, SREs are tasked with various responsibilities, including system performance optimization, incident management, and automation. This approach allows SREs to address multiple challenges, ensuring that systems run efficiently and evolve in response to changing demands and complexities.

### Infrastructure

Infrastructure SRE teams focus on maintaining and improving the reliability of systems that support other teams' workflows. While they sometimes collaborate with platform engineering teams, their primary responsibility is ensuring up-time, performance, and efficiency. Platform teams, on the other hand, primarily develop the software and systems used across the organization. While reliability is a goal for both, platform teams prioritize creating and maintaining the tools and services used by internal stakeholders, whereas Infrastructure SRE teams are tasked with ensuring those systems run smoothly and meet reliability standards.

### Tools

SRE teams utilize a variety of tools with the aim of measuring, maintaining, and enhancing system reliability. These tools play a role in monitoring performance, identifying issues, and facilitating proactive maintenance. For instance, Nagios Core is commonly employed for system monitoring and alerting, while Prometheus is frequently used for collecting and querying metrics in cloud-native environments.

### Product or Application

SRE teams dedicated to specific products or applications are common in large organizations.[21] These teams are responsible for ensuring the reliability, scalability, and performance of key services. In larger companies, it's typical to have multiple SRE teams, each focusing on different products or applications, ensuring that each area receives specialized attention to meet performance and availability targets.

### Embedded

In an embedded model, individual SREs or small SRE pairs are integrated within software engineering teams. These SREs collaborate with developers, applying core SRE principles—such as automation, monitoring, and incident response—directly to the software development lifecycle. This approach aims to enhance reliability, performance, and collaboration between SREs and developers.

### Consulting

Consulting SRE teams specialize in advising organizations on the implementation of SRE principles and practices. Typically composed of seasoned SREs with a history across various implementations, these teams provide insights and guidance for specific organizational needs. When working directly with clients, these SREs are often referred to as 'Customer Reliability Engineers[23].'

In large organizations that have adopted SRE, a hybrid model is common . This model includes various implementations, such as multiple Product/Application SRE teams dedicated to addressing the specific reliability needs of different products. An Infrastructure SRE team may collaborate with a Platform engineering group to achieve shared reliability goals for a unified platform that supports all products and applications.

## Industry

Since 2014, the USENIX organization has hosted the annual SREcon conference, bringing together site reliability engineers from various industries. This conference is a platform for professionals to share knowledge, explore effective practices, and discuss trends in site reliability engineering.[24]

## See also

* Chaos engineering
* Cloud computing
* Data center
* Disaster recovery
* High availability software
* Infrastructure as code
* Operations, administration and management
* Operations management
* Reliability engineering
* System administration
* Backup site

## References

1. ↑ "What is SRE? - Site Reliability Engineering Explained - AWS" (in en-US). https://aws.amazon.com/what-is/sre/.
2. ↑ 2.0 2.1 "Evaluating where your team lies on the SRE spectrum" (in en). https://cloud.google.com/blog/products/devops-sre/evaluating-where-your-team-lies-on-the-sre-spectrum/.
3. ↑ Hill, Patrick. "Love DevOps? Wait until you meet SRE" (in en). https://www.atlassian.com/incident-management/devops/sre.
4. ↑ "What is SRE?" (in en). https://www.redhat.com/en/topics/devops/what-is-sre.
5. ↑ Treynor, Ben (2014). "Keys to SRE". https://www.usenix.org/conference/srecon14/technical-sessions/presentation/keys-sre.
6. ↑ 6.0 6.1 6.2 Gossett, Stephen (June 1, 2020). "What Is a Site Reliability Engineer? What Does an SRE Do?" (in en). https://builtin.com/software-engineering-perspectives/site-reliability-engineer.
7. ↑ 7.0 7.1 Fischer, Donald (March 2, 2016). "Are site reliability engineers the next data scientists?" (in en-US). https://techcrunch.com/2016/03/02/are-site-reliability-engineers-the-next-data-scientists/.
8. ↑ Beres, Cristi (October 9, 2024). "SRE & DevOps: Striking the Perfect IT Match". https://synergogroup.net/sre-devops/.
9. ↑ "Site Reliability Engineering" (in en). IBM. November 12, 2020. https://www.ibm.com/cloud/learn/site-reliability-engineering.
10. ↑ "Site Reliability Engineering (SRE)". https://engineering.linkedin.com/india-engineering/site-reliability-engineers.
11. ↑ "SRE - Wikitech" (in en). https://wikitech.wikimedia.org/wiki/SRE.
12. ↑ Treynor, Ben. "In Conversation" (Interview). Interviewed by Niall Murphy. Google Site Reliability Engineering.
13. ↑ 13.0 13.1 Jones, Chris; Underwood, Todd; Nukala, Shylaja (June 2015). "Hiring Site Reliability Engineers". ;login: 40 (3): 35–39. https://www.usenix.org/system/files/login/articles/login_june_07_jones.pdf. Retrieved June 17, 2021.
14. ↑ Dave Harrison (9 Oct 2018). "Interview with Betsy Beyer, Stephen Thorne of Google". https://driftboatdave.com/2018/10/09/interview-with-betsy-beyer-stephen-thorne-of-google/.
15. ↑ Beyer, Betsy, ed (2016). Site Reliability Engineering: How Google Runs Production Systems. Sebastopol, CA: O'Reilly Media. ISBN 978-1-4919-5118-7. OCLC 945577030. https://sre.google/sre-book/table-of-contents/.
16. ↑ Vargo, Seth; Fong-Jones, Liz (March 1, 2018). What's the Difference Between DevOps and SRE? (class SRE implements DevOps) (Video). Google. Archived from the original on December 3, 2019. Retrieved March 8, 2018.
17. ↑ "What is SRE? - SRE Explained - AWS" (in en-US). https://aws.amazon.com/what-is/sre/.
18. ↑ "Google SRE Principles: SRE Operations and How SRE Teams Work". https://sre.google/sre-book/part-II-principles/.
19. ↑ "Google SRE - What is Toil in SRE: Understanding Its Impact". https://sre.google/sre-book/eliminating-toil/.
20. ↑ "Google SRE - System Design: Non-Abstract Large System Design". https://sre.google/workbook/non-abstract-design/.
21. ↑ 21.0 21.1 "SRE at Google: How to structure your SRE team" (in en). https://cloud.google.com/blog/products/devops-sre/how-sre-teams-are-organized-and-how-to-get-started/.
22. ↑ "SRE at Google: How to structure your SRE team" (in en-US). https://cloud.google.com/blog/products/devops-sre/how-sre-teams-are-organized-and-how-to-get-started.
23. ↑ "Introducing Google Customer Reliability Engineering" (in en-US). https://cloud.google.com/blog/products/devops-sre/introducing-a-new-era-of-customer-support-google-customer-reliability-engineering.
24. ↑ "Usenix SREcon". 2021. https://www.usenix.org/srecon.

## Further reading

* Limoncelli, Tom; Chalup, Strata R.; Hogan, Christina J. (September 2014). The Practice of Cloud System Administration: DevOps and SRE Practices for Web Services. 2. Upper Saddle River, NJ: Addison-Wesley. ISBN 978-0133478549. OCLC 891786231.
* Site Reliability Engineering: How Google Runs Production Systems. O'Reilly. 2016. ISBN 978-1491929124. https://archive.org/details/sitereliabilitye0000unse.
* Blank-Edelman, David N., ed (2018). Seeking SRE: Conversations About Running Production Systems at Scale (1 ed.). Sebastopol, CA: O'Reilly. ISBN 978-1491978863. OCLC 1052565720.
* Beyer, Betsy; Murphy, Niall; Kawahara, Kent; Rensin, David; Thorne, Stephen (2018). The Site Reliability Workbook: Practical Ways to Implement SRE. O'Reilly. ISBN 978-1492029502.
* Welch, Nat (2018). Real-World SRE: The Survival Guide for Responding to a System Outage and Maximizing Uptime. Packt. ISBN 978-1788628884.
* Adkins, Heather; Beyer, Betsy; Blankinship, Paul; Lewandowski, Piotr; Oprea, Ana; Stubblefield, Adam (2020). Building Secure and Reliable Systems: Best Practices for Designing, Implementing, and Maintaining Systems. O'Reilly. ISBN 978-1-4920-8312-2. OCLC 1129470292.
* Rosenthal, Casey; Jones, Nora (2020). Chaos Engineering: System Resiliency in Practice. O'Reilly. ISBN 978-1492043867.

## External links

* Awesome Site Reliability Engineering resources list
* How they SRE resources list
* SRE Weekly weekly newsletter devoted to SRE
* SRE at Google landing page for learning more about SRE in Google

* v
* t
* e

Software engineering

Fields|

* Computer programming
* Requirements engineering
* Software deployment
* Software design
* Software maintenance
* Software testing
* Systems analysis
* Formal methods

Concepts|

* Data modeling
* Enterprise architecture
* Functional specification
* Modeling language
* Orthogonality
* Programming paradigm
* Software
* Software archaeology
* Software architecture
* Software configuration management
* Software development methodology
* Software development process
* Software quality
* Software quality assurance
* Software verification and validation
* Structured analysis

Orientations|

* Agile
* Aspect-oriented
* Object orientation
* Ontology
* Service orientation
* SDLC

Models|

| Developmental|

* Agile
* EUP
* Executable UML
* Incremental model
* Iterative model
* Prototype model
* RAD
* UP
* Scrum
* Spiral model
* V-Model
* Waterfall model
* XP

|

Other|

* SPICE
* CMMI
* Data model
* ER model
* Function model
* Information model
* Metamodeling
* Object model
* Systems model
* View model

Languages|

* IDEF
* UML
* USL
* SysML

Software
engineers

* Victor Basili
* Kent Beck
* Grady Booch
* Fred Brooks
* Barry Boehm
* Peter Chen
* Danese Cooper
* Ward Cunningham
* Tom DeMarco
* Edsger W. Dijkstra
* Delores M. Etter
* Martin Fowler
* Adele Goldstine
* Margaret Hamilton
* C. A. R. Hoare
* Lois Haibt
* Mary Jean Harrold
* Grace Hopper
* Watts Humphrey
* Michael A. Jackson
* Ivar Jacobson
* Alan Kay
* Nancy Leveson
* Stephen J. Mellor
* Bertrand Meyer
* David Parnas
* Trygve Reenskaug
* Winston W. Royce
* James Rumbaugh
* Mary Shaw
* Peri Tarr
* Elaine Weyuker
* Niklaus Wirth
* Edward Yourdon

Related fields|

* Computer science
* Computer engineering
* Project management
* Risk management
* Systems engineering

* Category
* Commons

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Site reliability engineering. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Site_reliability_engineering&oldid=4568827"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template