What is platform engineering?
Platform engineering is a practice built up from DevOps principles that seeks to improve each development team’s security, compliance, costs, and time-to-business value through improved developer experiences and self-service within a secure, governed framework. It's both product-based mindset shift and a set of tools and systems to support it.
Lately, there's a lot of industry excitement around the term platform engineering. Gartner expects around 80 percent of engineering organizations to have a team dedicated to platform engineering by 2026. These teams focus on building what is called an internal developer platform. Regardless of domain – sales (Microsoft Dynamics, Salesforce), service fulfillment (ServiceNow), communications (Twilio) – platforms, by their inherent nature, are designed to achieve scale and reduce the time it takes to deliver business value.
Platforms that developers either use or extend have the power to eliminate toil throughout the development process with highly optimized developer experiences and simplified operations. These platforms include tools that:
- Help developers be self-sufficient (for example, starter kits, IDE plugins)
- Assist with common tasks
- Encapsulate common patterns and practices into reusable building blocks
- Provide early advice and feedback on problems or security risks
- Simplify operations by managing underlying infrastructure and tools
Microsoft's Platform Engineering Capabilities Model describes the six core capabilities that define platform engineering - investment, adoption, governance, provisioning and management, interfaces, and measurements and feedback. To figure out where your organization falls today in each capability area and set targets for future growth, see About the Platform Engineering Capabilities Model.
What is an internal developer platform?
An internal developer platform focuses on a company’s internal development practices. You define a set of recommended and supported development paths to production and incrementally "pave" a way through them with an internal platform.
To use a real-world analogy, new paths often start out as dirt trails, but as more people use them, they're paved to improve safety while maintaining velocity and throughput. Paved paths within an internal developer platform have similar goals. They're designed to guide developers through critical requirements and standards without sacrificing developer delivery velocity. This is achieved by providing dev teams with standardized, secure, and scalable self-service capabilities. At the same time, you still make it easy for operations and your IT organization to ensure that the underlying infrastructure and tools are efficient, compliant, and cost-effective. While some paths might be partially paved, a fully paved, golden path reduces cognitive load for everyone involved.
Developers are the primary consumers or customer of an internal developer platform. Automation and centralization enable efficient operations while still ensuring stakeholder requirements like compliance are met.
With platform engineering, you create this internal platform by combining a product mindset with learnings from DevOps and DevSecOps to deliver a set of tools. These tools provide sufficient automation, tracking, governance, and observability that guide development teams naturally "into the pit of success." As a platform engineering lead for a multinational mass media company put it:
Platform engineering was adopted for increasing speed or velocity in delivering products. Centralized teams eliminate the need for each team to worry about infrastructure, thus increasing efficiency… They also enhance safety and security as everything is predefined, reducing errors. - Daniel, Cloud Engineer, Fortune 500 Media Company
An internal developer platform helps you centralize and scale specialized knowledge across the entirety of your development and operations lifecycle by reducing or eliminating cognitive load and manual steps.
Build developer platforms incrementally, focusing on self-service and automation
Implementing a successful platform engineering strategy takes work—but the payoff is worth it. It isn't uncommon for teams with fewer than 20 individuals to be able to support thousands of developers and hundreds of projects.
However, creating an internal developer platform is a journey. We don't recommend a big bang approach or a top-down driven effort. A critical aspect of platform engineering is applying a product mindset where you treat developers, machine learning professionals, or data scientists as your customer. As one platform engineer at a technology company put it:
[There are] two main problems that [our] platform engineering tools were designed to solve. The first was to facilitate the provisioning of services using a self-service model. … The second was to provide automatic support systems such as performance metrics and application availability. The goal was to enable developers to work faster and more efficiently, while having all the necessary information to troubleshoot and optimize their applications. - Alex, Lead Cloud Architect, Large Technology Company
No two companies are the same, so consider the specific needs of your internal customers to plot an incremental course through this journey. By establishing a set of core building blocks that you'll assemble over time, you can ensure your internal developer platform has enough value that development teams will become advocates and will want to use it along the way. Use this information to create a thinnest viable platform, a minimum viable product for your platform) and grow from there.
The important point is that you want to think about whatever investments you make in these areas as key building blocks for your platform engineering journey. Then you can focus on creating cohesive glue with your custom investments to add unique value for your business, rather than building everything from scratch.