The internal developer platform (IDP) is a multi-layered ecosystem designed to provide a framework and set of tools to support software development within an organization. Its core components and capabilities include:
- application configuration management
- infrastructure orchestration
- environment management
- deployment management
- role-based access control
These components are necessary to optimize the software development process, enhance collaboration, and accelerate the delivery of high-quality applications.
Why do we want an IDP?
The main goal of platform engineering is to drive developer autonomy and to make things simple. If a developer needs a database, there should be a mechanism to get it easily regardless of the person's level of database-related skills. If a developer needs to manage an application in Kubernetes, there should be no need to know everything about how Kubernetes works.
The High-Level Design of an IDP (7 Core Elements)
An internal developer platform needs several parts to become fully operational:
- A control plane that will be in charge of managing all the resources
- A control plane interface to enable everyone to interact with the control
- Git to store the desired states
- Database and schema management
- Secrets manager for any confidential information
- An internal developer portal/ GUI in case users don’t want to push manifests directly to git
- CI/CD pipelines to execute one-shot actions
The final setup may require some additional tools, but the ones listed above are mandatory.