What is Platform Engineering?
As consumers demand more capabilities from their software platforms, developers' jobs are becoming more complex. Rather than code every new feature from scratch, developers now rely on sophisticated internal platforms to work more efficiently and productively.
Companies such as Linkedin, PayPal, Netflix and others led the way in developing these platforms. Some companies, such as Spotify, have open-sourced some of their internal tools for others to use.
The need for these internal, developer-facing platforms has led to the rise of a new role in engineering organizations: the Platform Engineer. In fact, Gartner predicts that by 2026, 80% of software engineering organizations will have at least one Platform Engineer on their team.
So what is platform engineering? Should your organization consider investing in this new role? What are the benefits to your development team? Read on to learn more about this emerging trend in IT and software engineering.
What is Platform engineering?
In a sentence, platform engineering is the function of designing and building platforms, toolchains, and workflows for internal developer use.
Generally, these platforms are self-service, enabling developers to quickly access the functionality they need to build the customer-facing platforms. The goal is to reduce the bottleneck that many developers in organizations face when they have to request infrastructure or tooling from infrastructure of DevOps teams.
As companies adopt cloud native architectures like Amazon Web Services (AWS), Google Cloud Platform (GPC), or Azure, platform engineers provide a necessary layer of abstraction for developers to move faster and build software more efficiently.
Historically, this function has been rolled up within DevOps, with a broad focus on providing automations and workflows that support the maintenance and running of the application. As we'll discuss in more detail below, the changing state of software development requires a new, distinct role whose sole purpose is to support the developer.
How does Platform Engineering work?
The core product that platform engineers provide to the organization is the Internal Developer Platform (IDP). This integrated product helps developers move quickly throughout the entire software development lifecycle (SDLC).
A platform engineering team operates much like a standard product team. They conduct user research, create a product roadmap, solicit feedback, iterate, and market the IDE. The only difference is the end customers:
For traditional product teams, the end customer is the consumer or business user
For platform engineers, the end customer is the developer within the organization
Some of the key functions of platform engineering teams include:
Optimizing iteration speed by simplifying the way developers interact with infrastructure
Solving common challenges shared across multiple teams and developing solutions that are easily implemented across the organization
Educating and empower 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, further increasing the visibility to internal tooling
How has Platform Engineering developed and evolved?
So what's changed? Why is platform engineering on the rise in the industry? Here's a summary of the three major changes that have brought us to this point.
The first is the introduction of the cloud and the subsequent explosion in cloud-based services. Thousands of companies have used platforms like AWS and GPC to build their own cloud and cloud native applications.
As developers spent more time building new features and functionalities, there needed to be someone within Amazon or Google who could monitor these various platforms and ensure they're functioning properly for their developer clients.
This change led to the rise of a specific role: a site reliability engineer (SRE). These people came on board to manage the various building blocks and platforms that engineers use. The SRE role then gave rise to the DevOps engineer. We'll talk later about the difference between SRE and DevOps.
SREs' core function morphed into not only monitoring and maintaining these functions, but building various platforms, codes, programs, and other components for the developers to use directly. This enabled their developer clients to move faster with less overhead and fewer dependencies.
As a result, the SRE and DevOps role is evolving into what we call platform engineering. Rather than support the end user, platform engineers support the developers directly. They build, monitor, and manage the features that developers in the company use, ensuring that they're able to move fast with fewer bottlenecks and overhead.
Because of the increasing complexity of even basic technologies, these internal tools and resources are absolutely essential. In order to work faster and maintain productivity and efficiency, developers need to have these platforms that enable them to manage this complexity more effectively.
How does Platform Engineering benefit the organization?
Although it provides a number of tangible benefits to developers, platform engineering comes with costs. Those costs require justification. Here are some of the key benefits that development teams and organizations receive when they invest in platform engineering.
Higher velocity of development
Instead of developers building repeatable functionality from scratch, platform engineers replicate and distribute those base components. Developers can then access those platforms, programs, code templates, and other building blocks and plug them into their existing projects, tweaking when necessary.
This increased scalability enables developers to work faster, be more productive, and drive more results for the organization.
Reduced developer cognitive load
Software development, coding, and programming are creative skills. It takes brainpower not only to build code from scratch, but also edit code, debug, and fix issues when they arise.
By building necessary components in advance and providing developers self-serve access, platform engineers reduce their cognitive load. Rather than engaging in rote tasks, developers can devote their brain power to innovation and creative problem solving.
Improved development culture
The efficiency of your development team is based not only on what your developers are working on, but how they work. Just like any organization, your culture sets the tone for the entire team.
Platform engineers open the door for developers to take ownership over configuration, deployment, and roll-back processes without needing to involve operations. Internal platforms can also increase visibility, improving collaboration within teams. The result: developers are free to be creative without the fear of breaking everything.
Improved MTTR & Change Failure Rates
There is a strong correlation between the use of Internal Developer Platforms and an organization's degree of DevOps evolution. By providing proven, tested platforms for developers to use, platform engineers reduce the risk of bugs cropping up in the system.
Additionally, when the occasional problem does arise, platform engineers have the documentation necessary to quickly and easily track down the issue. This is much more difficult to achieve when each developer is building their own code, especially in a distributed microservices architecture.
Final thoughts on Platform Engineering
As technological capabilities become infinitely more complex, the need for platform engineering is only going to become larger. Developers will no longer be able to do their jobs on their own---they'll need the support and abstraction that comes with platforms tailored to increasing their efficiency and productivity.
By adopting platform engineering practices within your software development organization, you can enhance your ability to develop and deliver quality software in an efficient, scalable manner.