SRE vs. DevOps vs. Platform Engineering
Over the last few years, many technology companies have been working on a common set of best practices — leveraging cloud technology by creating and deploying applications on the platform. These best practices can be categorized into three segments such as compartmentalization or containerization, consistent and continuous delivery, and develop observable systems.
Organizations that are cloud native have changed dramatically from having large departments to nuclear development teams. Two new functions give these developments support:
- Site Reliability Engineering
- Platform Engineering
One can say that SRE and platform engineering teams are successors of the typical and traditional operation teams. It can be said that SRE brings more discipline to the field of software engineering.
What Is Site Reliability Engineering (SRE)?
Site reliability engineering is where engineers create systems that can operate applications in a reliable manner. The initiation of SRE concept started in Google, and this has been very neatly documented in Google SRE Book.
With the help of SRE, engineers can define objectives at a service level. Once the objectives are defined, then systems are developed to achieve these objectives. Finally, these systems further expand into platforms, which address areas such as incident management, failure mitigation, and even removing the single points of failure.
A very critical aspect of the SRE approach is that every failure is considered a failure and a detailed root cause analysis is done to find the reason for failure. Furthermore, corrective measures are introduced at a system level for continuous progress in the reliability aspect.
What Is Platform Engineering?
Here, platform engineers monitor the entire lifecycle of a software development process, right from the source to production. As a part of this process, platform engineers develop workflows that help software developers quickly code and deploy the software. If we look at a basic-level workflow system, it comprises a source system, which is further connected to an integration system.
Due to the rise in the number of application developers, we can expect platform engineers to evolve accordingly. Platform engineers do spend lot of time guiding application developers on various best practices and how they can leverage the power of the platform.
What Is DevOps?
In the last decade, DevOps has gained significant popularity. Another term that has been recently picking up is GitOps. Technically both DevOps and GitOps are a set of principles that are loosely codified. These principles are used to monitor and manage different elements of infrastructure.
DevOps started with a broader agenda to eliminate the traditional silos that existed between the operation team and the development team. Thus, there has been a wider acceptance of strategies such as the automation of infrastructure, and engineering applications.
SRE vs. DevOps
While the focus of DevOps is primarily on the what aspect of the automation, SRE is more on the how part. Here are three differences to help you gain better insights on both:
- New Features: DevOps is responsible for creating the new features, while SRE has to ensure that there is no further failure because of these new features.
- Process Flow: The perspective of a DevOps team is to take the application from development to production so they are aware of the process involved. Whereas SRE teams only look at from the production point of view.
- Focus Area: DevOps teams focus mainly on speed and continuity of development of product. However, an SRE team focuses on reliability, scalability, and availability.
SRE and Platforming Engineering Differences
In an SRE role, the most commonly used tools Prometheus and Grafana used mainly for collecting different metrics such as memory consumption, and processor usage. However, a platform engineer uses tools such as Crossplane for the management of infrastructure, Qovery to help them get a preview of the production environment and GitLab CI, which is used for the continuous development of applications.
A key factor behind having separate teams for SRE, and platform engineering is because of the variance in the roles. While both SREs and platform engineers need strong systems engineering skills over and above the programming knowledge, the roles actually are different. SREs thrive more in crisis management and have some sort of an adrenaline rush in case of troubleshooting. On the contrary, platform engineers are more of a typical software engineer. They prefer to work on large complex problems and don’t like to be interrupted.
While it may sound similar, but the goal of an SRE team is to deliver infrastructure for applications that are extremely reliable. The goal of a platform engineer is to create and deliver infrastructure purely for rapid application development.
Common Tools for DevOps and SRE Teams
If we talk about SREs, the most common tools used among them are Prometheus and Grafana. These two are used for collecting and visualizing various metrics. These metrics include CPU usage, memory, and disk space. Over and above SREs also use incident reporting tools such as OP5, PagerDuty, xMatters, and so on.
However, if we look at the role of a DevOps engineer, the most widely used tools include Integrated Development Environment, Jenkins for constant integration and development, JIRA for change management, SVN, and GitHub.
How Site Reliability Engineering, DevOps, and Platform Engineering Work Together
If we closely observe the work of each of these teams, SRE teams are majorly focused on building applications that can operate reliably. Platform engineers ensure that the infrastructure on which these applications are going to function is operating seamlessly. DevOps is a set of processes that helps in expediting the above two processes. Hence, it is imperative that the three function together, through which reliable software applications can be delivered.
Platform Engineering vs. DevOps
While some people say that DevOps is just another fancy name given to Platform Engineering, there are few areas that distinguish between the two. As we are aware that DevOps is all about harnessing tools to streamline the process of deployment and further manage and monitor applications through automation and visualization.
Platform engineering consumes these tools, best practices, and processes to create reusable services and tools that can be used by different teams across an organization.
While the three technology methods have their independent functions to perform, and organizations can opt for either of them; however, in an ideal situation, it is better to have all three to ensure your technology-driven automation projects are delivered at rapid speed, with great reliability, after having gone through an array of processes and best practices.