Intro
Over the last 15 years, as the cloud has gained widespread adoption, companies have started to build more cloud-native applications and nowadays, many companies are entirely cloud-native themselves. Without owning any physical infrastructure, they rely on Google, Microsoft, and Amazon to provide abstracted infrastructure platforms that makes it easy and fast to build and deploy new applications.
But these platforms come with their own version of complexity. And as more companies move to the cloud and more cloud-native companies pop up, whole teams are being allocated to manage these platforms, their reliability, performance, security and more.
This has led to the rise of three roles within engineering organizations:
But these roles and functions sometimes differ from company to company and can be confusing for those who want to understand the differences. So let’s break down each of them, what they actually mean, and how to figure out which role you need for your own organization.
What is SRE vs. DevOps vs. Platform Engineering?
It’s easy to conflate an SRE vs. DevOps Engineer vs. Platform Engineer just by looking at their titles but they are remarkably different. Not just in their actions and required skill sets, but in the problems they solve for the organization.
Before we compare and contrast the three, let’s make sure we’re all clear on the roles and responsibilities of each role does. More importantly, let’s make sure we can tell them apart.
What is Site Reliability Engineering (SRE)?
Site Reliability Engineers (SREs) are responsible for maintaining the reliability and availability of an organization's applications and services while also developing standards that make it easy to monitor and operate those applications. They work closely with software engineers to design, implement, and maintain systems that can withstand high levels of traffic and usage.
SRE best practices from Google require they spend a maximum of 50% of their time on operations. The remainder should consist of building new features that make it easy to administer the system, scaling the system, and implementing automation.
Although SRE can be considered an implementation of DevOps culture, it differs in a key way: SREs typically require a development background in addition to their understanding of operations. This allows them to manage large systems through code, which is highly scalable and sustainable — especially when managing hundreds of thousands of machines. Most SREs are familiar with and use tools such as Terraform, Chef, SaltStack, Ansible, Kubernetes and more to manage their applications and environments.
What is DevOps and what do DevOps Engineers do?
DevOps is often treated like a function within an IT organization, but it’s more than that. DevOps is a specific cultural philosophy supported by certain practices and tools. The goal: automate and integrate processes for software development teams in order to make them as efficient and focused as possible.
Some of the core principles of DevOps include:
DevOps envisions that development and operations aren’t two distinct processes. Instead, they’re two ends of the same process.
The ultimate goal of DevOps is to speed up how fast engineers can write and deploy code without sacrificing quality, reliability and availability. To accomplish this end, DevOps advocates for development and operations to work in tandem.
If you're familiar with DevOps, you've probably seen the “infinity wheel”:
This is the source of the common phrase continuous integration, continuous delivery (CI/CD). The goal is to develop a culture that can constantly build, test and ship incremental code to production instead of very scheduled and rote releases. By continuing to deliver code to an end system, teams get comfortable breaking big problems down into smaller chunks and committing code. To support this culture, DevOps engineers build the tooling and automation necessary for developers to quickly build, test and deploy their code to an end system.
This tooling can take many forms but typically it’s things like infrastructure automation, CI/CD tools needed to build and deploy code and security (though everyone should be responsible for security, right?) They'll typically use tools such as Jenkins, Terraform, ArgoCD, Github, Datadog and many others.
Truthfully, the line between DevOps engineers and SREs can be a little bit blurry depending on who you’re talking to. In our experience, DevOps roles are more focused on managing and automating the software development lifecycle (SDLC) and ensuring that developers have a great developer experience that reduces their overhead. At enterprise companies, DevOps engineers can be assigned to specific products and teams and may not oversee the entire system. While SREs typically have more responsibility for the entire system that may serve many products and are writing code to administer their systems.
What is Platform Engineering and what do Platform Engineers do?
Of the three functions we’re covering in this article, Platform Engineering is the most recent development. As developers are required to handle more complex projects, they require more advanced support to abstract layers away from their system.
As a function, platform engineering involves building shared platforms that aggregate the tools, services, workflows, and data used across the engineering team & the organization. The goal is to build shared tools and platforms that make other engineer's lives easier. The biggest difference between Platform Engineers and DevOps and SREs is that platform engineering is a full time coding role while the other two lean much more towards operational roles (with DevOps more than SREs).
Platform engineers are responsible for the following:
To learn more, check out this article: What is platform engineering, and how can it benefit your IT team?
This graphic breaks down the different functions pretty well.
Pros and cons of SRE vs. DevOps vs. Platform Engineering
If you're thinking about hiring an SRE or DevOps Engineer or Platform Engineer, it’s important to know exactly what problems you need solved before you decide which function you need since they can have different skill sets and benefits. To help illustrate these differences, let’s break down the pros and cons of each.
Pros and cons of SRE
Here are the pros of hiring an SRE:
Here are the cons of hiring an SRE:
Pros and cons of DevOps Engineers
Here are the pros of hiring a DevOps engineer:
Here are the cons of hiring a DevOps engineer:
Pros and cons of Platform Engineers
Here are the pros of hiring a Platform engineer:
Here are the cons of hiring a platform engineer:
So, which role is best for your team?
Each of these roles can benefit your team and company in different ways. The question is: what are your needs, and what will make your engineering team function more efficiently?
Some questions you can ask are:
As you start to ask more questions around how your engineering teams operate and their current challenges, it’ll become clear which role can benefit your team today and which one may benefit you tomorrow. Often times, these roles are part of the journey of a growing team and there are no right or wrong answers in terms of when they should be added.
You should be focusing on understanding the challenges facing the team and in some cases it may make sense to bring on an SRE, DevOps engineer or Platform engineer.
If you want to learn more about how Nucleus helps engineering teams ship code faster with more confidence, learn more here .