Difference between DevOps and SRE
One of the most significant differences between how most organisations approach software delivery and management today, compared to around 2010, is that the roles of development and application management have become blurred. While in the past developers and IT operations teams rarely worked together, over time more collaborative work practices are emerging.
However, the way organisations achieve this collaboration can vary. Some focus on DevOps, a philosophy that encourages close coordination between developers and IT operations teams. Others turn to Site Reliability Engineering, or SRE, which also combines software development and IT operations functions in some aspects but not in the same way as DevOps. And some organisations use both practices, SRE and DevOps, simultaneously.
How similar are DevOps and SRE and what is the difference? Why would a company choose to adopt one practice over the other? Should SRE and DevOps be used at the same time? Let’s find out!
SRE vs DevOps, what are they?
DevOps is a philosophy that essentially encourages developers and IT operations teams to collaborate closely. The underlying idea of DevOps is that when developers have visibility into the issues that IT operations teams experience, and IT operations teams have visibility into what developers are building as they release new versions of applications, the end result is greater efficiency, greater cohesion, and fewer problems for everyone.
Separately, the IT operations team will ensure that their work is as non-disruptive as possible, while the development team will want to push more and more features into production. But if they contextualise each other, gain visibility and understanding of each other’s work, they can value it and understand it as an extension of their own. At that moment, a third team is born, a hybrid of both, which will look after the interests of the whole. Sometimes this team will include professionals from development and professionals from operations, and there may even be profiles of professionals who have extensive knowledge of both fields equally.
As far as it is concerned, SRE stands for “Site Reliability Engineering” and, essentially, it is a strategy that uses principles grounded in software engineering to make systems as stable as possible. To achieve this, SRE teams are responsible for solving operational issues (like DevOps), scalability, or reliability, and once they achieve the main goal of reliability, they then focus on adding new features or building new products. Due to this versatility, SRE teams are often composed of developers with IT operations knowledge, or IT operators with development skills. In addition to these two main facets, Observability, Automation, and Software Architecture are added.
SRE facilitates acquiring a mindset and tools, such as Observability, QA, or automation, that will be shared between software development and IT operations with the aim of optimising the entire organisational mechanism as well as systems and applications.
SRE vs DevOps, how are they related
SRE and DevOps are not adversaries; in fact, SRE provides a practical approach to solving most of the problems in DevOps and enhances them with proactive, preventative concepts.
SRE vs DevOps: Use of tools and automation:
Both SRE and DevOps use automation to enhance processes and service delivery. While DevOps encourages the adoption of automation tools, SRE ensures that each team member has access to updated automation tools and technologies.
SRE vs DevOps: Implementation of incremental changes:
DevOps involves slow, incremental changes to ensure continuous improvement. SRE supports this by enabling teams to make small, frequent updates that reduce the impact of changes on availability and stability.
SRE vs DevOps: Implementation of incremental changes
The task of DevOps ensures that different departments or software development teams work harmoniously towards a common goal. SRE achieves this by sharing project ownership among teams. With SRE, each team uses the same tools and methods to support uniformity and smooth cooperation.
Why do we hear more about DevOps than SRE?
In general, it is common to hear more about DevOps than SRE nowadays. While the reasons could be debated, there are likely two main factors at play. Firstly, SRE is a concept closely associated with Google, where its role originated. In contrast, DevOps is not tied to any specific company or organisation. This makes DevOps somewhat less “controversial,” so to speak. Companies that do not use Google can more easily adopt DevOps than SRE.
The second reason why DevOps tends to be more popular than SRE is that the term “DevOps” is sometimes used as a substitute to refer to any type of modern software development or management operation. Although DevOps has a specific definition that focuses on collaboration between developers and IT operations, tools or products that do not specifically address this collaboration may still be labeled as “DevOps.” Some critics argue that DevOps is overused, or that “DevOps means everything and nothing.”
So far, SRE has not been subject to the same widespread use. The term is closely associated with specific practices.
How do DevOps and SRE differ?
The key similarity between SRE and DevOps is that both help reduce the gap that traditionally separated development teams from operations teams. By extension, they help organisations as a whole work more efficiently and deliver better experiences for end users. However, when delving into the details, clear distinctions can be appreciated between them:
Nature:
SRE was conceived with a purpose: to build a set of methods and metrics to improve reliability, cooperation, and service delivery. In contrast, DevOps is truly a philosophy that fosters collaborative thinking among disparate teams.
Focus:
The main goal of SRE is to optimize the reliability and performance of systems and applications through observability. In DevOps, reliability is not a priority; rather, it can be achieved by carrying out its practices in a healthy manner, as its focus lies on the speed of development and delivery, always in a continuous manner.
Conclusion: When to use DevOps and when to use SRE
Regardless of misconceptions, one thing is certain: SRE and DevOps are not opposing factions, but rather two relatives working towards the same goal with the same tools, but with slightly different approaches.
While SRE culture values reliability over speed in transformation, DevOps emphasises scalability throughout the product development cycle. However, both approaches aim to find a balance between the two poles and can complement each other in terms of methods, practices, and solutions.
DevOps culture and cross-functional teams benefit any company operating in a highly competitive environment, where even a slightly shorter time to market provides a significant advantage. Furthermore, DevOps teams can be reinforced with SRE engineers to monitor system performance and ensure stability. This is why some companies have two teams, one for SRE and one for DevOps. The former is responsible for supporting and maintaining the current service, while the latter builds and delivers new applications.
In fact, in many companies, there may already be individuals unknowingly performing SRE tasks, facilitating DevOps collaboration between developers and IT technicians or creating scripts to automate tedious tasks. Identifying these individuals and formally recognising their work can form the basis of a functional SRE or DevOps team.