In the last few years, a new role associated with Cloud Native applications development and operations has become more prominent- Platform Engineers.
Sitting adjacent to the roles of DevOps Engineering and Site Reliability Engineers (SRE), the introduction of Platform Engineering has caused a bit of confusion around the Scope of Work (SOW) and the responsibilities of each position.
In this blog post, we will dive into what is Platform Engineering, why this role is on the rise, and what responsibilities they have compared to DevOps Engineers and SREs.
>> Read more: How to Let Your K8s Environment Flourish
Platform Engineering- So what the heck is it?
Platform engineers help end users navigate complex and siloed systems by building curated self-service layers that improve user experience, delivery speed, process agility, and business value.
The main responsibility of Platform Engineering is to make the software delivery process more efficient. They do this by:
- Giving developers an effective way to ship software. This includes best practices, tools, services, and automating developer workflows.
- Creating an Internal Developer Platform (IDP), that is consistent across distributed teams.
- Reducing redundant tools and processes that are done differently by multiple teams.
- Enforcing security, governance, and compliance standards (only in some more advanced organizations)
Platform Engineering- how popular is it and why?
One of Gartner®’s Top Strategic Technology Trends for 2023 was Platform Engineering, they believe that by 2026, 80% of software engineering organizations will establish platform teams as internal providers of reusable services, components, and tools for application delivery.
But how come this role became so popular all of a sudden? The main reason is the increased complexity of modern software architectures and the extra responsibilities that fall on the shoulders of R&D teams.
Nowadays apps are commonly formed from multiple loosely coupled components that run inside distributed environments. Provisioning and maintaining the architecture can be a multi-step procedure that requires specialist knowledge.
As part of the shift left movement, Developers today are often asked to operate an assembly of complicated services, and not just to implement and test them, but also deploy them to production and monitor that they are working at scale with the desired quality of service.
If left to their own devices, some teams may build subpar solutions — and frequently repeat work already done elsewhere, other teams may even fail their mission altogether as they lack the needed knowledge and experience to address everything from A to Z.
To help reduce this friction, while improving the overall software quality, developer productivity, and release velocity, forward-thinking companies have begun to build shared services and operating platforms for the R&D teams to use, instead of each team working on it on its own.
This allowed developers to focus on creating business and customer value by improving velocity and reducing mistakes.
The wider and more influential these services and platforms became, the more people were needed to build and maintain them.
The more success it gave to one company, other companies were eager to follow. These two forces caused the demand for this role to skyrocket.
Platform Engineering vs SRE
The focus of Site Reliability Engineering (SRE) is to make sure the applications and systems are working with the desired performance and reliability.
SREs main responsibilities include:
- Ensuring reliability - getting systems back to a steady state as quickly as possible
- Observing what matters - gaining full visibility into system health
- Being proactive - living and breathing SLOs to identify and remediate issues before SLAs are violated.
- Architecting for resiliency - Informing architectural design decisions to build more reliable systems
The focus of Platform Engineering is bigger. They look at the entire software delivery lifecycle and try to accelerate it, making it more efficient and productive.
There is some overlap between the two, as Platform Engineers must ensure that the platform they are creating is resilient. Because of that, they also use monitoring and observability tools on their platform, following the same best practices and KPIs SREs do.
>> Learn how to reduce K8s cost without increasing toil for Site Reliability Engineering (SRE) teams.
Platform Engineering vs DevOps
This comparison here is more complex as DevOps was never meant to be a title or a job position. DevOps is the combination of cultural philosophies, practices, and tools that increases an organization’s ability to deliver applications and services at high velocity.
In companies properly using the DevOps model, development and operations teams are no longer “siloed.” Sometimes, these two teams are merged into a single team where the engineers work across the entire application lifecycle, from development and test to deployment to operations, and develop a range of skills not limited to a single function.
DevOps is not limited to a single role. DevOps is a combination of people, tools, and culture. Everyone who takes part in each of the application lifecycle phases must embrace the DevOps culture and understand the entire value stream — from ideation to development, to the end-user experience. It requires breaking down silos in order to collaborate throughout the product lifecycle.
So if this is the case, why was the DevOps role created?
Using Infrastructure as Code (IaC) and microservices can offer faster development and innovation, but the increased operational workload can be challenging. It’s best to build out a strong foundation of automation, configuration management, and implementation of CI/CD pipelines and practices to help ease the load.
To address these needs, that are not directly connected to a feature a developer is responsible for, and may require different skills and knowledge, dedicated individuals had to step forward and take the lead- introducing the first DevOps engineers.
When a team has DevOps engineers as part of it, developers can focus on their core activities and responsibilities, instead of becoming experts in tools and practices that add to their cognitive load and stress.
Sounds very similar to Platform Engineering, right?
It is not a surprise since DevOps principles are often involved in the creation of centralized platforms; likewise, platform engineering is typically implemented after an organization successfully adopts DevOps practices.
DevOps teams can take on any business project and prioritize delivering the technical features of an application as fast as possible with high quality through task automation, communication, and collaboration.
Platform engineering teams, on the other hand, focus on identifying the operational needs of development teams and building platforms, toolchains, and workflows to facilitate them. In other words, platform engineering focuses on building and maintaining a platform for software development rather than the development itself.
In practice, platform engineering has become a supporting resource for DevOps establishments. Platform engineering matters because those teams specialize in providing the breadth and depth of tool knowledge that developers don't possess.
The combination of DevOps, SRE, and Platform Engineering functions can quickly become a strategic and competitive advantage for a company, enhancing the velocity, quality, stability, and scalability of its application delivery process.