What Is Platform Engineering? A Getting Started Guide
What Is Platform Engineering? A Getting Started Guide
What Is Platform Engineering? A Getting Started Guide
Table of contents
- What Is Platform Engineering?
- How Does Platform Engineering Work?
- Platform Engineering vs DevOps
- Platform Engineering Best Practices
Modern software development can often feel like orchestrated chaos, and with good reason. The processes, tools, and SaaS services are caught up in a blur of continuous deployment, the need for speed, and an increasingly hard-to-please customer base.
The solution to this swirl is platform engineering. Here’s a look at how platform engineering can change the way software is developed while also easing teams into improved observability, security, and compliance.
What Is Platform Engineering?
Put simply, platform engineering makes it easier for developers to do their jobs by creating or curating (or both) the best tools, processes, and practices for the organization. Thanks to platform engineering, developers are empowered to create and own their code, speeding up delivery and creating more customer value.
If it sounds like a lot, it is—because platform engineering is a response to the incredibly complicated world of modern software development. Today’s developers juggle all of the things—cloud-native, microservices, containers, Kubernetes, security, and incident response—and that’s often set against a backdrop of rapidly growing companies, intense competition, and pressure to simply move faster.
With so many platforms, technologies, tools, and services, choices must be made, and that’s where platform engineering comes in. By establishing a dedicated team of experts who treat the process of code creation and deployment as their sole “product,” platform engineers can take a clear-eyed view of what makes the most sense for the engineering team, the business side, and any overarching organizational goals.
In a DevOps context, it’s important to remember that a platform engineering team isn’t simply the “ops” side, and in many cases will be a separate entity focused exclusively on the totality of the code development journey (however, we’ve been known to say platform engineering is the future of ops.) Platform engineers prioritize infrastructure automation with a heavy emphasis on developer self-service. In some organizations, platform engineering creates and maintains an automated Internal Developer Platform (or IDP) that offers developers what they need to get the job done efficiently; in other companies, platform engineering may more closely resemble a roadmap of best practices and tools.
Although platform engineering is a relatively new concept, it is gaining significant traction. Gartner predicts that 80% of companies developing software will have implemented platform engineering by 2026. And Puppet’s 2023 State of DevOps Report found 51% of respondents had embraced platform engineering over the last three years and 93% said it was a “step in the right direction.”
What Is A Platform Engineer?
Platform engineers are the folks who make the magic happen. Consider the following list of platform engineer skills:
- Deep understanding and experience developing code and/or deep understanding of code development and operations experience
- Experience scripting, writing tests, and doing code reviews
- Equally deep understanding of the business, its objectives, goals, and customers
- End-to-end knowledge of the entire software lifecycle toolchain
- Demonstrated expertise working in cloud-native environments
- Expertise in DevOps processes and tools
- Ability to understand, integrate, and negotiate with third-party service providers, including those offering cloud, K8s, IaC, and more
- Expert-level communication skills from stakeholders to the C-Suite
- Ability to embrace change
- Comfortable working as part of a team
- Able to both be hands on with the code and take the 10k foot view
- Able to think outside the box
We could go on, but it’s clear that platform engineers need a broad range of skills and experience in order to create a streamlined internal platform that supports both developer self-service and the goals of the business. Not every platform engineer needs all of those skills, but when creating a team, it’s important to keep a balanced perspective. Just hiring developers or just hiring operations pros won’t bring a sufficiently broad view or thought process to a platform engineering team.
And, “team” really is the operative word here. Perhaps more than in any other part of software development, platform engineering has to be a well-functioning team because there are so many different aspects to bring together. Platform engineers have to assemble the disparate parts of development and delivery into one easy-to-use platform and process that won’t require any hands held, but will need to be endlessly flexible in response to changing business needs.
What Is A Platform Team?
A platform team is primarily concerned with streamlining developer access to the best tools and processes to get code out the door as safely and as quickly as possible. It is completely internally-facing, but also deals with third-party tools and services used in code development.
At any given time, a platform team might:
- Oversee cloud providers, evaluating any new cloud offerings and weighing in on how, when and why cloud resources might best be used
- Deal with infrastructure issues of all kinds, including Kubernetes
- Keep a watchful eye on development environments and make any needed changes or updates
- Evaluate tool vendors
- Consult with the C-Suite, product managers, engineering leaders, and other stakeholders about customer value, business priorities, and upcoming investments
- Create and manage testing frameworks
- Gather consensus on potentially impactful issues including load impacts, security, and tool choices
- Build/integrate tools as needed
How Does Platform Engineering Work?
In complex modern software development organizations, platform engineering provides a way to both support and supercharge code development and deployment while also aligning it to the business side and customers.
A platform engineering team is completely focused on what’s best for the developer, the development process, and the business. As such, it can cut through the noise by creating a well thought out process and plan to smooth out challenges. Platform engineers pick the right tools for the job, manage and negotiate with third-party service providers, and collaborate with internal stakeholders. They aren’t above rolling up their sleeves to create scripts, test frameworks, or even tools.
Platform engineering offers concrete benefits to organizations willing to embrace it:
- Developers have a team of people dedicated to their success and to bettering their work lives.
- It can make sense of cloud resources and spending.
- The carefully curated toolchain and thoughtfully-created roadmap that they create not only streamlines development and deployment, but also improves business understanding and buy-in.
- It will also make sure no wheels are being reinvented.
- Having a team of people focused solely on the software development life cycle will make it far easier to spot gaps in security, observability, automation, and more.
A successful platform engineering effort is judged by a simple question: is it easy for developers to self service and own their code? If the answer is yes, the platform engineering team has done its job.
Platform Engineering vs DevOps
Platform engineering and DevOps aren’t an “either or” situation. In most organizations, they happily coexist. In fact, platform engineering evolved out of a need to make it easier to do DevOps at scale.
DevOps and platform engineering share a number of important similarities, including beliefs that automation, continuous integration, and continuous delivery are fundamental to modern software development. Platform engineering teams need a thorough understanding of DevOps in order to create the right roadmaps.
The main difference between platform engineering and DevOps is one branch builds software products (the DevOps team) while the other makes it easier for products to be built (platform engineering). Platform engineers are like hospital administrators: they don’t do the surgery, but they provide the right spaces, people, tools, and processes for doctors and nurses to do what they do best.
They also have very different ways to measure success. A DevOps team is meeting its goals if an application is working well and customers are satisfied, while a platform engineering team is proving its worth if the developers can easily access tools and services they require.
Platform Engineering Best Practices
To get the most out of a platform engineering investment, organizations need to keep the following steps in mind:
What’s the goal?
Broadly speaking, most organizations pursue platform engineering to make their existing development teams self-sufficient and faster-moving, but there are a number of other goals that might be important.
- Are teams experiencing toolchain sprawl?
- Is there too much rogue adoption of new tech?
- Is cloud spending out of control?
- Are development teams insufficiently aligned with business priorities?
By answering those questions, and more, the platform team can start to get an idea of the most troublesome pain points, and start to pull together a broad plan to get everyone moving more efficiently in the same direction.
Understand the existing toolchain
Toolchain sprawl is a real thing that takes time, energy, and resources away from creating new features. Platform teams need to look at all of the toolchains and map them to the bigger goals. This should not be done in a vacuum: involve the developers in this process.
ID and evaluate all third-party service providers
A somewhat underappreciated bonus of platform engineering is that someone will finally “own” all of the services necessary to build software, from Kubernetes, to the cloud, to containers, IaC, and more. This exercise should generate a hefty list, which should be useful in determining if the right tools and services are in play. Again, get developer stakeholders’ input in this process.
Don’t forget observability, security, and compliance
While evaluating other moving pieces, platform teams need to remember that this is an ideal time to make big changes in the software development life cycle. Observability, security, and compliance are all critical to fast, safe software development, but are often afterthoughts bolted on later. Having a dedicated platform engineering team is an ideal opportunity to build in these solutions.
Adopt a DX mindset
Developers are the primary clients for the platform engineering team, so embracing and leveraging the idea of developer experience (or DX) is critical to keep both sides happy. Adopting a DX mindset shouldn’t be too much of a stretch, as most platform engineering teams will include current and former developers and DevOps experts.
Build tight communication/feedback loops
The importance of communication and collaboration in software development is widely understood today, but it bears repeating that platform engineering teams and their stakeholders need to communicate regularly and work together to solve challenges. There can never be too much feedback—in either direction.
Avoid the “help desk” trap
Finally, it’s vital that platform engineering teams see themselves as creators of a product—an Internal Developer Platform or other combination of processes, roadmaps, and services—that provides tremendous value to the organization. Don’t get sucked into IT problems. Stay focused on the very complex and valuable goal.
Organizations wanting a swift, cohesive, and secure process for creating cutting-edge software need to adopt the concept of platform engineering. A platform team can right-size development and bring much needed attention to third-party services and toolchain sprawl, emphasize often overlooked processes including observability and security, and better align the team with business priorities.
With careful planning, clear goals, and tight feedback loops, a platform engineering team can dramatically remake even the most modern software development teams.
Booking.com adopted a Reliability Collaboration Model
See how platform engineering teams can learn from this experience.