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:
- Site Reliability Engineer (SRE)
- DevOps Engineer
- Platform Engineer
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:
- Team empowerment
- Cross-team collaboration
- Automation & integrations
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:
- Simplifying the way developers interact with infrastructure and internal tooling
- Developing solutions to implement across the organization that makes developers more efficient
- Educating and empowering developers on best practices and lead the team in increasing efficiency and productivity
- Centralizing systems and configurations to reduce the number of systems that developers and development teams have to access
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:
- Drive high degrees of collaboration among your teams
- Help standardize processes and how infrastructure and systems are built and managed
- Enables engineers and developers to work more efficiently by modernizing and automating operations across your entire stackEnhanced metrics and logging which can help you debug issues faster and reduce mean-time-to-resolution(MTTR)
Here are the cons of hiring an SRE:
- Often the value isn’t obvious to non-technical stakeholders, which might make it difficult to get buy-in and budget
- Requires a high investment—often an entire team—to deliver tangible benefits to developers and engineers
- External SREs aren’t solely focused on your business so using a third-party might not deliver the value you need
Pros and cons of DevOps Engineers
Here are the pros of hiring a DevOps engineer:
- Faster time to market due to the CI/CD approach
- Better SDLC by enabling short, iterative cycles
- Increased collaboration by de-siloing development and operations
- Automation and interoperability increases efficiency for the entire engineering team
Here are the cons of hiring a DevOps engineer:
- Can be expensive
- Ultimately, it’s an operational role so getting budget and buy-in might be difficult since DevOps engineers aren’t shipping new features to customers
- Metrics and measuring success aren’t always clear
- Increases the complexity in the organization since it introduces a new function that the team must interact with
Pros and cons of Platform Engineers
Here are the pros of hiring a Platform engineer:
- Builds new features that make developers more efficient
- Help standardize developer and DevOps workflows by building systems that autoamte manual tasks
- Free up developers’ cognitive loads by decreasing dev focus on infrastructure development
- Easier to find the root cause of problems by using the platform as a single source of truth
Here are the cons of hiring a platform engineer:
- Platform development takes time to build, and even longer to implement among the whole team - it’s really a culture shift
- Often smaller companies can use pre-existing tools to achieve the same results
- Expensive and requires a dedicated, competent team
- Indirect ROI means stakeholder resistance is more likely
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:
- Are my engineers complaining about too much overhead in the development process?
- Are my systems and infrastructure resilient and have we had any downtime issues lately?
- What is the gap between our current development process today and where I want it to be in a year?
- Do we have the right systems in place to troubleshoot and find the root cause of bugs?
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 .