The events of 2020 accelerated the trend of organizations shifting to cloud-native technologies in response to the dramatic increase in demand for online services. Cloud-native environments bring speed and agility to software development and operations (DevOps) practices. But with that speed and agility comes new complications and complexity, all while maintaining performance and reliability with less than 1% down-time per year. That’s where SRE comes in.
So which is it: SRE vs DevOps, or SRE and DevOps? DevOps is focused on optimizing software development and delivery, and SRE is focused on operations processes. Both practices live by the same overarching tenets. Here we’ll cover the purpose of each and explore how they interact.
DevOps as a philosophy
DevOps has been around longer than SRE, so let’s start there. DevOps is not a specific process, but rather a general collection of flexible software creation and delivery practices that looks to close the gap between software development and IT operations. Its goal is to develop and deliver better software faster by using agile processes, automating as much as possible, and horizontally aligning service-oriented teams instead of siloed by organization.
That’s not always easy. Teams can get entrenched and siloed in familiar manual processes and piecemeal solutions as they roll out new applications. If this is the case, leaders should support their DevOps teams to develop and adopt methods to streamline and automate as many processes as possible.
DevOps is more than processes and automation—it’s a mindset to align teams on a common set of objectives. Organizations often need to do some team building to synthesize the objectives of developers and operations. In general, developers want to create with greater agility, while operations teams want to maintain stability and predictability. The goal is to align teams on this cultural convergence with some reassurance they can both get what they need by joining forces.
SRE as an application of DevOps
DevOps is best thought of as a practical approach to speeding up new software development and delivery. SRE is the transformation of traditional operations practices by using software engineering and DevOps principles to improve the availability, performance, and scalability of releases by building resiliency into apps and infrastructure. As Google’s Ben Treynor explains, “Fundamentally, it’s what happens when you ask a software engineer to design an operations function.”
Site reliability engineers carry forth the DevOps mission by following core practices, such as:
- Using software engineering to solve the operations problem
- Designating and managing Service Level Objectives (SLOs) as availability targets for a service
- Investing in automation and tooling to avoid toil
- Encouraging a shift-left approach, testing earlier in the development lifecycle
SRE vs DevOps?
If SRE applies software engineering principles to the operations side of DevOps, then it’s reasonable to expect the two will share a lot in common. As Google explains, both SRE and DevOps require teams to:
- Understand that change is necessary for improvement
- Share values that extend across single teams
- Adopt an “everything as code” philosophy using APIs and version-controlled artifacts
- Value measurability as critical to doing their jobs
- Aim to achieve better velocity through the software delivery pipeline
SRE and DevOps don’t compete so much as operate with different scopes in different areas. DevOps doesn’t concern itself with how to run operations at a detailed level. Yes, it’s a broad philosophy whose tenets can be applied in other areas (e.g. in Security for DevSecOps or in software delivery to make CI/CD), but in its purest form, it’s associated more with software development and delivery.
SRE’s purpose, on the other hand, is to apply DevOps principles to enhance operational processes specifically:
- Reduced latency
- Streamlined change management
- Robust emergency response
- Accurate capacity planning
Knowing where to start
Many organizations that have already started a DevOps journey are now turning to SRE to optimize operations. If you haven’t implemented either, a best practice to get started is to develop a strategy that incorporates both DevOps and SRE practices.
Adopting these practices is a culture shift. Success requires executive vision and buy-in, internal discussion, and management coordination to support a more integrated way of developing and delivering applications.
At Dynatrace, we believe in advancing customers’ and the industry’s movement toward highly automated, AI-driven DevOps so teams can automate mundane tasks and deliver innovation faster and with less risk. The Dynatrace Software Intelligence Platform helps organizations transform how they develop and manage cloud-native applications, enabling DevOps teams to automate the CI/CD pipeline, and SRE teams to automate testing and remediation. This enables DevOps and SRE teams to identify quality issues earlier in the software life cycle, automate more processes, and build resilience into code on its way to production.