Platform engineering is rapidly emerging as a transformative trend in software development. As cloud technologies have matured, the sheer cognitive load required to keep abreast of the latest capabilities and tools has become overwhelming. Businesses have a duty to filter the noise, vet impactful solutions, weigh the pros and cons of their use, and provide implementation guidance.
Therein lies the rationale for platform engineering and why industry analysts such as Forrester and Gartner predict its significant impact on development practices. Gartner forecasts that by 2026, 80% of software engineering organizations will establish dedicated platform teams to provide reusable services, components, and tools for faster and more efficient application delivery.
This primer aims to equip business leaders with a fundamental understanding of platform engineering and its potential benefits for your organization. We will address key topics, including:
- What is platform engineering and how it came to be?
- How can platform engineering positively impact your business?
- How can you supercharge the results of your own platform engineering initiatives?
An Origin Story That Takes to the Clouds
The standard definition of platform engineering looks something like this: process for designing and maintaining a set of tools, services, and workflows to support the rapid development, deployment, and operation of software applications. This discipline creates reusable components and standardized processes to streamline the software development lifecycle, enabling development teams to deliver high-quality software efficiently and consistently.
To fully understand what this means and to answer the age-old question of “why now?”, it’s essential to understand how we got here. For that, let’s take a look at a simplified chronology of IT infrastructure.
The early days – 1993-2005
In the early days of the internet, websites were simple HTML pages hosted on individual, on-premise servers. Managing this infrastructure was the job of the System Administrator (SysAdmin), a jack-of-all-trades responsible for servers, network configuration, software installation, et al. This role thrived in a slower-paced environment where infrequent changes were the status quo and hands-on troubleshooting was the go-to remediation process.
Another key figure was the Webmaster, responsible for a website's functionality, content, and performance. In smaller organizations, the Webmaster often took on SysAdmin duties, as managing a few servers and a simple website didn't require specialized roles.
A shift to the cloud and a rapid acceleration of innovation – 2006
The arrival of cloud platforms like Amazon Web Services (AWS), Azure, and Google Cloud (GCP) revolutionized IT infrastructure by making it scalable, elastic, and accessible. This innovation led to exponential growth in cloud offerings, toolchains, and subsequent best practices utilized in support of these newfound capabilities.
The role of DevOps engineer emerged to bridge the gap between software development and operations within an increasingly complex technical ecosystem. DevOps engineers focus on automating tasks and provisioning infrastructure so that software engineers can focus on shipping features and products. A few years later, Site Reliability Engineers (SREs) came onto the scene with a specialized focus on system monitoring and incident response, ensuring products and their infrastructure remain resilient in the face of adversity.
Enabling rapid execution at global scale – present day
Platform engineering emerged as a strategic response to the challenge of managing engineering operations at scale. In lieu of an organization filtering the noise created by a newly chaotic cloud, software engineers are commonly called away from their primary duties (feature development) in order to make these selections in haste. Unfortunately, these decisions made in isolation have wide-ranging implications on the business.
A natural evolution of developer operations, platform engineering teams are typically composed of DevOps engineers, SREs, software engineers, and engineering managers who are tasked with developing resources and composable infrastructure to be leveraged by downstream product teams.
The Rise of Platform Engineering and the Internal Developer Portal
As platform engineers define and coalesce a standardized set of composable building blocks, we must now determine how to reference this invaluable information. This single source of truth is called an Internal Developer Platform (IDP). Ultimately an IDP provides developers with self-service tools and pre-configured resources to automate tasks, standardize configurations, and deploy applications efficiently, all while providing observability (metrics, logs, traces) into the underlying services.
There are a handful of leaders and products in the IDP space such as Backstage, Cortex, Atlassian Compass, and Humanitec Portal. Keep in mind that every platform build is a unique reflection of the needs of a given organization. Unfortunately, it’s not as simple as selecting a one-size-fits-all, turnkey solution, though IDPs typically cover these five categories of functionality: application configuration management, infrastructure orchestration, environment management, deployment management, and role-based access control (RBAC).
Key features of an IDP:
- Service Catalog: A curated library of pre-approved and pre-configured infrastructure services that developers can readily leverage to build applications, eliminating the need to manually provision resources.
- Observability: The IDP integrates comprehensive monitoring and logging capabilities, providing developers with deep insights into application and infrastructure health.
- Automated Testing: Frameworks and tools for unit, integration, and performance testing are integrated into the IDP, enabling developers to catch issues early and ensure application quality.
- Team Topography: The IDP fosters clear ownership and accountability throughout the development process by defining roles and responsibilities for different stages.
- Incident Management & Response: The IDP provides standardized processes and tools to efficiently identify, troubleshoot, and resolve technical issues.
- Templates and UI Components: Pre-configured templates and web components used to accelerate development lifecycles by providing developers with a jumpstart on new projects.
- Productivity Management: Issue tracking, code review, and collaboration tools are integrated within the IDP, streamlining development workflows.