Organizations that have successfully established a devops culture for speedy, stable software releases often rely on an internal developer platform to deploy code. But what is an ‘IDP’ and how do you get one?
As cloud computing, containerization, devops, and microservice architectures have established themselves as the building blocks for modern application development, the need for a simple way to manage those resources for internal software developer teams has become more and more important.
At many elite engineering organizations—think Google, Netflix, and Amazon—internal developer platforms (IDPs) ease the operations load on their DevOps teams, while abstracting away unnecessary decisions for software developers.
What is an internal developer platform (IDP)?
Internal developer platforms are like snowflakes, in that no two are the same. Each platform varies from organization to organization depending on their stack, culture, code base, and tool set—which makes finding an agreed-upon definition somewhat difficult.
As Evan Bottcher, head of engineering at ThoughtWorks, wrote, “Words are hard, it seems. ‘Platform’ is just about the most ambiguous term we could use for an approach that is super important for increasing delivery speed and efficiency at scale.”
Bottcher’s own definition—although he prefers the term “digital platform” to “internal platform”—is “a foundation of self-service APIs, tools, services, knowledge, and support that are arranged as a compelling internal product.”
For Camille Fournier, head of platform engineering at the hedge fund Two Sigma, it comes down to the software side of the infrastructure. “Compute platforms like Kubernetes, storage systems, software development tools, and frameworks for services are part of the mandate,” she wrote in a 2020 blog post on the topic.
A good internal developer platform should abstract away infrastructure decisions, enable self-service environment builds, integrate with existing continuous integration and delivery (CI/CD) and deployment processes, and assign role-based access controls, all without a developer ever having to learn YAML.
“At its core, an effective internal developer platform compartmentalizes complexity. Each person has their own little area of complexity that they are expert at dealing with, and that everyone else can safely ignore,” Chris Stephenson, CTO at Humanitec who previously built internal platforms at Google, wrote in a blog post.
Stephen O’Grady, a principal analyst at Redmonk, says he has seen a “definite appetite for taking the requisite pieces in a tool chain and putting them together into a platform where the developer can come in and write an app, and all of the underlying complexity is abstracted,” over the past calendar year.