What is platform engineering and why it matters?
Tags: devops, cloud, cloudnative, cloudcomputing
Published: 2023-09-01 11:13:23

Introducing cloud computing and a wide range of different services (PaaS, SaaS, IaaS) to the public was a significant technological advancement that enabled many small and large companies to evolve their application portfolios. Simultaneously, system and infrastructure complexity began to grow significantly, causing engineers who transitioned from the old-school development process to cloud-native applications to grapple with the overwhelming array of tools needed to deliver applications across various environments, especially in production.

The establishment of the concept of cloud computing marked the end of the "golden" era of single-script or MSI installations and, as a natural evolutionary step, introduced the new DevOps concept. DevOps quickly gained traction and established a new engineering standard among engineering teams.

The practice of shifting responsibility between Ops and Dev teams came to an end. People started working together to conceive, build, and deliver secure software at a rapid pace. DevOps practices enabled software development and operations teams to accelerate delivery through automation, collaboration, a fast iterative improvement and feedback loop.

The "You build it, you run it" approach posed a significant challenge for many engineering teams. While the DevOps culture worked well for highly organized and well-structured companies like Google or Amazon, it didn't for most other teams and organizations. The main reason was that most companies couldn't invest the same level of resources in optimizing workflows or hiring talented experts.

Instead, what happened was that many organizations introduced numerous anti-patterns that escalated rapidly. Senior engineers became responsible for managing infrastructure, environments, and deployment pipelines. This led to a phenomenon known as "shadow operating" among engineers, slowing down the implementation of new features or updates to existing ones, with more complex work being shifted to junior colleagues. This anti-pattern was widely introduced by inexperienced managers who couldn't fully grasp the DevOps concept. 

To further shorten time-to-market and improve performance, more mature companies along DevOps began to introduce the concept of Internal Development Platforms (IDPs) as the next complementary evolution step for DevOps. Teams consisting of Ops and Dev engineers started building an overlapping skillsets that could deliver the necessary tools and provide a friendly abstraction layer for running applications purely by development teams. Using IDPs and setting up teams to build IDPs significantly shortens the time to market and enables the true "You build it, you run it" concept. Thanks to IDPs, developers can take care of their app from end to end by quickly and efficiently provisioning infrastructure and implementing CI/CD pipelines without headaches.

The IDP provides the right level of abstractions for building and deploying applications, sparing developers the need to worry about deploying different cloud services and performing complex configurations, as everything works for them "out of the box." Even less experienced junior engineers can provision fully configured and security-compliant Kubernetes clusters in a matter of minutes. This is just one of many examples of how IDP empowers development teams throughout the organization. As you can see, platform engineering is about building and integrating everything into a well-structured delivery process rather than letting everybody handle everything and forcing people to understand the entire complex toolchain. As Evan Bottcher (Thoughtworks) nicely put it, platforms are "a foundation of self-service APIs, tools, services, knowledge, and support, which are organized as a compelling internal product. Autonomous delivery teams can make use of the platform to deliver product features at a higher pace, with reduced coordination."

Start building your DevOps culture and IDP as soon as possible, regardless of the size of your company! You will thank me later when the only person who knows how to "DevOps" leaves, and you won't be able to deploy your app for days or weeks.