In software development, one of the driving forces is speed. The marketplace simply demands it, to the extent that many companies make several releases a day. This pressure to deliver and improve on services and features has reshaped the priorities and practices of digitally-driven companies, and this, in turn, has created its own set of problems.
Traditionally, development teams created code before handing it over to operations staff to deal with implementation. There was little communication between teams, and as developers started to push to release code faster and faster, operations struggled to keep up. This created a bottleneck effect across numerous companies: a balancing act between releasing code quickly and guaranteeing its quality.
DevOps and Site Reliability Engineering (SRE) both offer solutions to this issue. Each discipline has proved highly popular, leading many potential students and practitioners to wonder which of the two is better.
The thing is, DevOps and SRE actually have more similarities than differences. Both focus on bridging the gap between development and operations, automating manual tasks wherever possible, and optimizing software pipelines in terms of efficiency, reliability, quality, and adaptability.
That is not to say they are identical, of course. While they may share similar goals, they also have a fair few distinctions. It is mostly a matter of perspective and prioritization, and in many cases, companies will adopt both without issue.
So, what are the benefits of choosing either DevOps or SRE? What are the potential perks of choosing one, the other, or both? Let’s take a look.
DevOps’ main focus is to reduce the silos between development and operations teams (hence the name ‘DevOps’). It makes ‘Dev’ and ‘Ops’ mutually responsible for meeting targets and encourages different teams to share ideas, skills, and insight to enable improvements across the pipeline. Developers are encouraged to solve operational issues, just as operations staff share their understanding of how code will be used in practice so that developers can take it into consideration.
This focus on collaboration and breaking down silos even applies to the term ‘DevOps engineer’. It is actually an umbrella term, with DevOps teams being a cross-functional mix of staff with different skills and backgrounds. Each will be called a ‘DevOps engineer’, with their understanding of DevOps itself being what unites them.
However, DevOps is not all about teamwork. It also encourages the automation of manual processes wherever possible, optimizing speed and reliability. It also has staff focus on finding and resolving flaws earlier on in the pipeline. DevOps engineers will utilize a variety of tools to help with this, and given the popularity of DevOps, there is never any shortage of choice.
Another key aspect of DevOps is failure. In a DevOps culture, failure is regarded as being inevitable. Staff are encouraged to experiment, and whenever failure does occur, it is simply regarded as a learning opportunity.
Another key aspect of DevOps is measurement. DevOps engineers will specify performance metrics and assess results constantly. This helps to highlight potential flaws as well as areas for improvement and will facilitate the creation of iterative targets while also giving senior engineers the clarity they need to communicate progress to stakeholders.
However, what DevOps lacks is a prescriptive approach. It is more of a cultural framework, if it could even be called a framework at all, and can take different shapes depending on the practitioner organization in question. Nonetheless, adopting DevOps requires a significant cultural shift that must be championed by managers and senior DevOps engineers.
Site Reliability Engineering is a concept that originated at Google before DevOps existed. It, too, envisions an improved relationship between development and operations but takes more of a distinct and well-structured approach.
A site reliability engineer focuses on the reliability of services. Customers must be able to enjoy a specified level of quality and availability or, regardless of how quickly code is released, the company is failing.
To guarantee reliability, SRE engineers utilize several tools, including:
- Service Level Agreements (SLAs) – An agreement regarding what customers should expect
- Service Level Objectives (SLOs) – Goals that must be reached in order to satisfy SLAs
- Service Level Indicators (SLIs) – Measurements that indicate compliance with SLOs
The development team is held accountable based on these targets and metrics. If the SLAs are not being met, work on new developments will cease until the standard has been rectified. Once targets have been hit, however, engineers can begin operating outside of this scope and creating new features and improvements.
SRE engineers themselves have a mixture of responsibilities. They are largely responsible for operations work but approach it with an engineer’s mindset. They also split time with development teams to make sure that systems and software are sufficiently focused on reliability and performance.
It is within this area of focus that SRE applies automation. SRE engineers will source or even build tools to help with this, to the extent that many of them will switch jobs every few years simply because there is too little left for them to do. That being said, this drive for automation can also free up a significant amount of time to be used for experimentation.
Like DevOps, SRE also focuses on performance metrics. All teams, managers, and stakeholders will agree on relevant metrics for both technical performance and progress towards strategic goals. If necessary, an SRE engineer can also act as a go-between for IT and business stakeholders.
Overall, SRE is more distinct and prescriptive than DevOps. However, it is also more specialized. Because of this, it can be harder for businesses to find SRE candidates capable of delivering what they need. SRE also requires strong support from management for successful implementation, as suddenly having to switch over to an SRE model can be quite jarring for those involved.
And so, we return to the all-important question. There are far more similarities than differences between DevOps and SRE and, arguably, a company could achieve the same goals by choosing either.
SRE is the more prescriptive choice. It takes a top-down approach, setting a solid framework to guide elements like experimentation while also holding teams accountable for a service’s quality and availability. An SRE engineer is someone with the skills to approach operations tasks with an engineer’s mindset while simultaneously guiding developers on how to make code more suitable for deployment.
Should I choose DevOps or SRE?
DevOps, on the other hand, is more about collaboration and alignment. It spreads the responsibility for tasks and deliverables, placing operations on the same level of importance as development (rather than having the latter take the lead, as is the case with SRE).
However, the two have a shared focus on:
- Removing silos
- Encouraging automation
- Creating a more collaborative culture
- Defining and regularly measuring key metrics
- Making changes incrementally while enabling permanent cultural changes
The control offered by SRE does not automatically make it the best choice. Teams can struggle to work according to SRE-driven targets, especially if previous goals for reliability, speed, and so on were already being achieved. At the same time, the lack of a consistent structure in DevOps cultures can put companies off. Because DevOps is not as restrictive with experimentation and failure, there is also a danger of teams becoming too complacent if they do not have a senior engineer to guide them.
In many ways, the choice should come down to your current setup. DevOps can show you what you need to achieve and suggest methods for doing so. If you have the capacity to pursue these goals and can create a cross-functional team to facilitate this, then DevOps could be the choice for you. This is doubly true if you need to optimize your entire pipeline as part of a continuous process, as is the case for many organizations that need every advantage possible to compete.
SRE offers more guidance on how to achieve the goals outlined in DevOps. It is often the better choice for organizations that need to refine and replace how they do things. It could definitely be the right choice if the reliability and availability of services is crucial for your business’s success.
Combining DevOps and SRE
Ultimately, however, the two do not clash in their goals; they simply go about them a little differently. DevOps is a cultural approach that emphasizes making improvements wherever possible throughout the pipeline, while DevOps prioritizes reliability and guides improvements based on this.
In many ways, SRE is a way of doing things, and DevOps is a way of finding out what needs to be done. It is not uncommon for businesses to have separate teams for DevOps and SRE, with the former focused on new services and the latter on guaranteeing their quality. It is also likely that, regardless of an organization’s setup, there will always be someone acting as a go-between for different teams and fulfilling at least some of the role of a site reliability engineer.
Choosing DevOps and SRE can be an excellent choice if you need to optimize both the performance and direction of your software pipeline. Regardless of your choice, you will need highly knowledgeable and experienced practitioners to facilitate the cultural changes that will ensue. This process can be greatly eased by investing in training for the teams that will be affected.
Studying DevOps and SRE with Good e-Learning
Good e-Learning is an award-winning online training provider, as well as a Trusted Education Partner for the DevOps Institute. We offer a range of fully-accredited online training courses in DevOps, DevSecOps, SRE, and more!
Each of our courses comes with a variety of online training assets, including instructor-led videos, practice exams, and regular knowledge checks. We also regularly produce free downloadable resources, as well as webinars and videos, on our course topics. Students can even enjoy FREE certification exam vouchers along with free resits via Exam Pledge.