What Are Internal Developer Platforms (IDP)?
Internal Developer Platforms (IDPs) are centralized self-service platforms that provide development teams with the tools, environments, and frameworks they need to build, deploy, and manage applications efficiently. Built as internal products, they are designed to streamline and standardize the software development lifecycle (SDLC), from coding to deployment, per particular company policies and objectives
IDPs serve as a bridge between the development and operations teams by abstracting infrastructure complexities and enabling developers to focus on writing code. They integrate various development and operations tools into a unified interface, allowing for a more streamlined development process.
IDPs support practices such as continuous integration/continuous deployment (CI/CD), infrastructure as code (IaC), and DevOps, making it easier for teams to adopt these methodologies.
This is part of a series of articles about platform engineering.
In this article:
- Why Is an Internal Developer Platform Important?
- Internal Developer Platform vs. Internal Developer Portal
- Components of IDPs
- Notable Internal Developer Platforms
Why Is an Internal Developer Platform Important?
An internal developer platform reduces complexity by abstracting away the underlying infrastructure and automating repetitive tasks. It boosts developer productivity and enhances job satisfaction by removing frustrating and time-consuming bottlenecks from the development process.
An IDP also helps ensure consistency. By providing a consistent development environment, IDPs manage tasks like software deployment and container orchestration, leading to faster release cycles and higher quality software.
IDPs aid in enforcing best practices and compliance across development projects. They ensure that applications are built and deployed in a consistent, secure, and scalable manner, thereby reducing the risk of errors and vulnerabilities. The use of an IDP leads to more reliable and maintainable software.
Internal Developer Platform vs. Internal Developer Portal
An internal developer platform is a toolset that streamlines the software development lifecycle by automating deployments and managing infrastructure. It’s an active platform that developers use to execute tasks and manage workflows.
An internal developer portal acts as a central repository for development resources, documentation, and tools. It’s a dynamic resource where developers can find information, access APIs, and learn about best practices. While the portal offers access to tools and services, it doesn’t automate workflows or manage infrastructure like an IDP.
Related content: Read our guide to platform engineering vs DevOps (coming soon)
Components of IDPs
An IDP typically includes the following components and capabilities. See for example the CNCF Platforms reference architecture.
Integration with Existing Tools and Services
The platform’s integration capability allows development teams to leverage their existing investments in tools for version control, continuous integration, and monitoring. It eliminates the need to switch between different tools and platforms, creating a seamless workflow.
By integrating with a wide range of tools and services, the IDP can provide a flexible environment. For example, if a team uses Kubernetes for orchestration, Jenkins for CI/CD, and Prometheus for monitoring, the platform can bring these disparate tools together in a cohesive ecosystem.
Application and Infrastructure Management
An IDP offers a unified interface for managing the application lifecycle and the underlying infrastructure, simplifying operations for developers and ops teams. This includes provisioning resources, configuring networks, managing storage, and scaling applications in response to demand. Developers can deploy applications without needing deep expertise in infrastructure.
Many IDPs incorporate infrastructure as code (IaC) principles, allowing teams to define their infrastructure through code, which can be versioned, reused, and shared. This approach enhances consistency and repeatability across environments, resulting in faster deployment, improved reliability, and greater agility.
Developer Self-Service Capabilities
The platform enables developers to perform tasks such as provisioning environments, deploying applications, and accessing resources without waiting for operations teams. This reduces bottlenecks and gives team members autonomy. Developers can experiment with new ideas, iterate quickly, and deliver features faster.
Self-service capabilities also promote a deeper understanding of the operational aspects of software development. This encourages developers to take ownership of their applications from development to production.
Collaboration and Governance
IDPs create a collaborative environment that encourages transparency, faster feedback loops, and more effective problem-solving. It also supports governance by enforcing policies, standards, and best practices across the development lifecycle. This ensures compliance with security, regulatory, and architectural requirements.
Governance features in IDPs can include role-based access control, auditing capabilities, and automated policy enforcement. These features help organizations maintain control over their development processes and infrastructure.
5 Popular Tools for Internal Developer Platforms
1. Backstage
Backstage is an open-source platform that provides a centralized system for managing software components. It serves as a developer portal, offering tools and features to enhance productivity and foster collaboration across teams. It makes it easier to manage services, documentation, and dependencies within a unified interface.
Key features:
- Service catalog: Centralizes information on all software components, including services, libraries, and documentation, allowing for easy discovery and management.
- TechDocs: Facilitates documentation creation and sharing directly within the platform, ensuring developers have access to up-to-date information.
- Software templates: Streamlines application creation by providing templates for common programming tasks and setups, reducing repetitive work.
- Plugins: Offers extensibility through a range of plugins that integrate additional tools and services into the platform, enhancing its functionality.
Backstage software catalog: Aggregates metadata from various sources into a single catalog that provides visibility over all internal software components.
2. Port
Port is an internal developer platform that aims to enhance the developer experience by improving application development and deployment processes. It integrates with existing tools and services, automating workflows and enabling self-service capabilities for developers.
Key features:
- Developer self-service: Enables developers to independently manage their projects from scaffolding to day-2 operations, fostering autonomy.
- Automation: Supports the automation of workflows, including triggering alerts or initiating predefined processes, enhancing operational responsiveness.
- Software catalog: Offers an unopinionated software catalog that consolidates all tools and services in one place for easy access and management.
- Scorecards and initiatives: Allows setting standards and tracking initiatives within the platform to ensure continuous improvement and adherence to best practices.
- Dashboards and visualizations: Provides customizable dashboards and visualizations to curate information effectively for both developers and managers.
- Role-based access control: Implements granular access controls to manage permissions precisely, ensuring security and compliance across the development lifecycle.
3. Pulumi
Pulumi is an infrastructure as code tool designed to streamline cloud software development by enabling developers to use familiar programming languages. It provides a unified solution for building, deploying, and managing cloud infrastructure across multiple providers.
Key features:
- Infrastructure as code: Allows developers to define cloud resources in popular programming languages like TypeScript, Python, Go, .NET, Java, and YAML.
- Multi-cloud support: Offers the flexibility to deploy resources across various cloud providers including AWS, Azure, Google Cloud Platform, and more.
- Policy as code: Enforces security and compliance policies using standard programming languages, ensuring infrastructure adheres to organizational standards.
- Self-service infrastructure: Provides developers with the tools to provision their own infrastructure resources directly, reducing bottlenecks in platform teams.
- Drift detection: Automatically identifies configuration drifts in deployed resources, ensuring consistency between expected states defined in code and actual states in the cloud.
4. Cortex
Cortex is an internal developer portal that improves the software development process by centralizing all necessary tools and information. By integrating with existing tools, Cortex improves visibility and collaboration, creating a central system of record for engineering teams.
Key features:
- Centralized catalog: Offers visibility into services and resources, enabling easy access and management of all software components in one place.
- Integrations: Aggregates data from various tools into a single platform, ensuring seamless workflow and eliminating the need to switch between different applications.
- Scorecards: Allows setting standards and monitoring adherence to ensure continuous improvement in quality, security, production readiness, or operational efficiency.
- Developer self-service: Provides developers with the tools to eliminate manual efforts through actions like API calls or service deployments, fostering faster innovation.
- Customizable experience: Through plugins and customization options, Cortex tailors experiences to individual developer needs.
5. OpsLevel
OpsLevel offers an internal developer platform that simplifies the process of building, deploying, and managing applications. It does this through a Developer Portal and Service Catalog, which act as central points of access to an organization’s IDP. This platform is particularly useful for streamlining interactions with microservices and enhancing service management.
Key features of OpsLevel include:
- Interactive dashboard: Provides detailed service information, including dependencies, repositories, and descriptions.
- Service filtering and sorting: Enables users to filter services by team or user ownership and sort them by various criteria such as last deployment times or custom tags.
- Technical debt visualization: Identifies which teams have the most technical debt, aiding in prioritization and management.
- ChatOps and search functionality: Supports discussions about services within the platform and includes a search function for exploring how architectural elements interact.
- External tool integrations: Includes compatibility with various CI/CD services and tools, such as Git, GitHub Actions, Slack, Jenkins, and AWS ECR.
- CLI, GraphQL API, and Terraform Provider: Offers access and management options for advanced users, facilitating integration and automation.
- Service maturity monitoring: Features tools for assessing service adoption, establishing standards, and providing best practices guidance with scorecards.
Build Your Internal Developer Platform with Spot by NetApp
Spot by NetApp’s optimization portfolio provides resource optimization solutions that can help make your IDP more impactful. Here are some examples of automated actions our users enjoy on their K8s, EKS, ECS, AKS and GKE infrastructure:
- Autoscaling: This single word encompasses multiple procedures: knowing when to scale up or down, determining what types of instances to spin up, and keeping those instances available for as long as the workload requires. EC2 ASG’s are an example for rigid, rule-based autoscaling. You might want to get acquainted with additional K8s autoscaling methods like HPA or event-driven autoscaling.
- Automated rightsizing: Recommendations based on actual memory and CPU usage can be automatically applied to certain clusters or workloads
- Default shutdown scheduling: Requested resources can be eliminated after regular office hours, unless the developer opts out a specific cluster.
- Automated bin packing: Instead of having nine servers 10% utilized, gather those small workloads in one server. Bin packing can be user-specific or not, according to your security policies.
- Dynamic storage volume: Your IDP should regularly remove idle storage. It’s also recommended to align attached volume and IOPS with node size to avoid overprovisioning in smaller nodes.
- AI-based predictive rebalancing replaces spot machines before they’re evicted involuntarily due to unavailability.
- Data, network, and application persistence for stateful workloads, either by reattachment or frequent snapshots.
- Dynamic resource blending aware of existing commitments (RIs, SPs) which must be used before purchasing any spot or on-demand machines.
- “Roly-poly” fallback moves your workload to on-demand or existing commitments if there is no spot availability. When spots are once again available, you want to hop back onto them.
To discover what key optimization capabilities your platform can enable in container infrastructures, read our blog post or visit the product page.
Learn more in our detailed guide to internal developer platforms.