TVM Logo

Internal Developer Platforms: Why Leading Companies Build Them

Trayan Minkov11 min readDevOps & Cloud

Key Takeaways:

  • An internal developer platform (IDP) standardises deployments, environments, and workflows — reducing toil by up to 70%.
  • Companies with mature IDP practices deploy 4–5× more often than teams without a platform.
  • GitOps, Kubernetes, and Infrastructure as Code are the technical foundation of every modern IDP.
  • Building an IDP pays off at around 10 developers. Below that, maintenance overhead outweighs the benefit.

Your engineers wait 20 minutes every day for a CI/CD pipeline that fails sporadically. Nobody knows exactly why. Staging differs from production because a colleague manually changed something three months ago. This scenario is not an exception in mid-size software teams — it is the rule. The answer is an internal developer platform.

An internal developer platform is not a single tool. It is a curated layer of tooling, workflows, and self-service capabilities that frees developers from infrastructure toil. According to the DORA State of DevOps Report 2023, elite teams deploy 973× more often than low performers. That gap does not come from talent. It comes from platform maturity. This article explains what an IDP actually contains, when it is worth building, and what sits underneath it technically.

What an Internal Developer Platform Actually Does

An IDP solves a concrete organisational problem. Developers should focus on product code, not infrastructure configuration. Without a platform, every team writes its own deployment scripts, maintains its own Docker Compose setups, and solves the same Kubernetes problems repeatedly. That is not a sign of poor engineers — it is a systemic abstraction problem.

The core concept is self-service infrastructure. A mature IDP lets a developer provision a new environment, trigger a deployment workflow, or roll out a service template in minutes — without opening a ticket with an ops team. The difference from a standard CI/CD setup is significant. An IDP has a coherent interface (often a developer portal like Backstage), while CI/CD pipelines typically only cover parts of the workflow.

One way to understand the internal developer platform benefits concretely: measure cognitive load. Every time a developer has to look up how a Kubernetes namespace is structured, or why a particular environment variable behaves differently in staging, that is time not spent on the product. Multiply that across a team of 40 engineers over a year, and you have a measurable productivity loss that no hiring plan fixes.

The Four Layers of a Production-Ready IDP

A well-structured internal developer platform has four layers, each building on the one below. First, the infrastructure layer: Kubernetes clusters, networking, storage — all defined and versioned as Infrastructure as Code using Terraform or Pulumi. Second, the delivery layer: GitOps-based deployment pipelines with ArgoCD or Flux, treating the desired state in the Git repository as the single source of truth. Third, the abstraction layer: templates, Helm charts, and service blueprints that developers can use directly. Fourth, the developer portal: the interface through which developers orchestrate all of this — typically Backstage or a custom-built dashboard.

None of these layers are optional. If you have a CI/CD pipeline but no self-service interface, you do not have an IDP. If you have a well-designed portal but deployments still run manually, you also do not have an IDP. The benefit comes from the combination. Each layer reduces a different category of friction, and removing only one category rarely changes deployment frequency or incident rates in a measurable way.

Kubernetes and GitOps as the Technical Foundation

Kubernetes is today the de facto standard for container orchestration in mid-size and large companies. That said, equating Kubernetes with an IDP is a mistake. Kubernetes is infrastructure. An IDP is the platform built on top of it. Still, Kubernetes underpins nearly all modern IDPs because it provides the abstraction level needed for workload isolation, scaling, and deployment strategies.

GitOps solves a fundamental reliability problem. When your cluster state is defined entirely by Git commits, and an operator like ArgoCD continuously reconciles that state, manual kubectl commands in production disappear. Every change is auditable. Every rollback is a git revert. Teams that fully adopt GitOps report 30–50% fewer production incidents in the first year, because drift between desired and actual state is prevented systematically rather than caught reactively.

Infrastructure as Code: More Than Just Terraform Files

Infrastructure as Code is what makes GitOps work. Without IaC, there is no versioned definition of desired state. In practice, this means Terraform or Pulumi for cloud resources, Helm or Kustomize for Kubernetes manifests, and a well-defined branching workflow that treats infrastructure changes exactly like application code — with reviews, automated tests, and controlled merge processes.

The most common mistake in IaC adoption is missing policy-as-code. Terraform plan runs through, but nobody automatically checks whether a new S3 bucket is accidentally public. Tools like Open Policy Agent (OPA) or Checkov close this gap. A mature IDP enforces these checks automatically in the pipeline before any infrastructure change reaches production. This is not bureaucracy — it is the mechanism that keeps your security posture intact as the team scales.

Developer Experience: The Underestimated ROI Factor

"Developer experience" sounds soft. It is not. The 2024 Gartner Report on Developer Productivity puts the productivity loss from poor tooling at up to 40% of available development time. If a senior engineer spends 90 minutes daily on infrastructure debugging that an IDP would handle automatically, you lose more than 300 hours of expensive engineering time per year — from one person alone.

An IDP improves developer experience through three concrete mechanisms. First, reduced cognitive load: developers do not need deep Kubernetes expertise to deploy an application. The platform abstracts complexity without removing control. Second, faster feedback loops: with a well-configured CI/CD pipeline, a developer sees within 5–8 minutes whether their code works in an isolated environment — not after a manual deployment cycle that takes hours. Third, standardisation without enforcement: service templates and self-service flows implement best practices by default, without forcing developers through lengthy documentation before they can do their job.

The internal developer platform benefits here compound over time. When a new engineer joins the team, onboarding to the deployment workflow takes hours, not weeks. When a service template is updated to reflect a new security baseline, all teams get the update automatically on next use. This is the flywheel effect of platform investment: each improvement multiplies across every team that uses the platform.

How TVM Accelerates Developer Portal Builds with AI

When building IDPs for clients, we use AI tooling deliberately — specifically Codex and Claude Code for generating boilerplate infrastructure code, Terraform modules, and Helm chart templates. What previously took 2–3 days of manual work now takes hours. The critical point: AI-generated infrastructure code at TVM is always reviewed and tested by an experienced infrastructure engineer. We use AI to accelerate, not to replace engineering judgement.

Concretely, when we develop a new service template for an IDP, we use Claude Code to generate a first functional version of the Helm chart. That version then goes through a production-readiness review. Automated tests with tools like Terratest validate the infrastructure logic. The result is a 40–60% faster build cycle compared to fully manual development. This directly benefits clients — shorter time to first deployment, lower overall project cost.

When You Should NOT Build an Internal Developer Platform

This is the question that rarely gets an honest answer. An IDP is not a universal solution. Building one is a significant investment. Here are the situations where you should wait.

If your team has fewer than 8–10 developers. Below this size, the overhead of a full IDP is not justified. A well-configured GitHub Actions setup with standardised workflows is entirely sufficient for small teams. The operational complexity of a Backstage instance with a Kubernetes backend outweighs the benefit at this scale.

If your deployment problems are actually architecture problems. An IDP accelerates deploying code — but if the code itself is poorly structured, you deploy problems faster. Before investing in platform engineering, confirm that your application architecture is fundamentally sound. Automation amplifies what is already there, good or bad.

If no dedicated platform team exists. An IDP is a product. It needs owners, ongoing development, and support. If you build a platform and then run it "on the side," it becomes a legacy system within six months that nobody wants to touch. Without committed ownership, the ROI turns negative. This is not a warning about team size — it is a warning about organisational commitment.

If you have no basic observability in place. Without metrics, logs, and tracing, you do not know what your platform is actually doing. Invest first in solid monitoring — Prometheus, Grafana, OpenTelemetry — before layering complex deployment automation on top. Building upward on an invisible foundation creates incidents you cannot diagnose.

A Real Example: CI/CD Transformation at a SaaS Company

A software company in the DACH region — B2B SaaS product, roughly 60 developers across 8 teams — came to us with a classic scaling problem. Deployments averaged 4.5 hours from merge to production. The staging environment was chronically out of sync with production. Forty percent of production incidents traced back to configuration differences between environments. The ops team was permanently overwhelmed with support requests from development teams.

We began with a current-state analysis. Jenkins pipelines with heavy manual intervention. No unified deployment templates. Infrastructure configuration spread across five separate repositories with no shared conventions. Kubernetes was already in use — but without GitOps. Deployments ran via kubectl commands directly from CI servers, with no audit trail and no automatic reconciliation.

The new platform rolled out in three phases. Phase one (six weeks): migrate infrastructure to Terraform, introduce ArgoCD for GitOps-based deployments, unify Kubernetes manifests under Helm charts. Phase two (four weeks): build service templates and an internal developer portal on Backstage, integrate with the existing GitHub repository system. Phase three (two weeks): onboard all eight teams, write documentation and runbooks, hand over operational ownership. AI-assisted code generation — Terraform modules, Helm chart templates — accelerated the build phase by approximately 45% against our original time estimate.

The results after three months in production were measurable. Average deployment time dropped from 4.5 hours to 18 minutes. Deployment frequency increased from twice per week to multiple times daily. Configuration-related incidents fell by 65%. The ops team received 70% fewer support tickets from development teams. The engineering investment paid back in reduced incident costs alone within the first quarter of operation.

The Right Approach to Building an IDP

The most common mistake in IDP projects is the big-bang approach: redesign everything at once, six months of invisible work, launch day reveals the requirements changed. This almost always produces a platform that is already outdated when it ships.

The better path is an incremental, product-driven approach. Treat the IDP as an internal product with real users — your developers — a roadmap, and regular releases. Start with the biggest pain point. Usually that is either the deployment pipeline or environment inconsistency. Solve that problem first, deliver measurable value, then expand. Every phase should produce something your developers can use immediately.

One practical recommendation: use established open-source foundations rather than building everything from scratch. Backstage for the developer portal, ArgoCD for GitOps, Crossplane for infrastructure-as-code on Kubernetes — these tools have active communities, solid documentation, and production track records. The differentiation in your IDP comes from configuration and integration, not from rebuilding platform primitives that already exist.

Measure consistently. The core DORA metrics — Deployment Frequency, Lead Time for Changes, Change Failure Rate, Time to Restore Service — give you a clear picture of whether your IDP is producing real results. Without measurement, any claim about platform maturity is speculation. Set your baseline before you start. Compare it at three months and six months. The numbers will tell you whether the investment was sound.

Conclusion

An internal developer platform is not a luxury for large tech companies. It is the logical response to a scalability problem that every growing software team eventually hits. The technical building blocks — Kubernetes, GitOps, Infrastructure as Code, self-service portals — are available, documented, and production-proven. The difference between teams that deploy daily and teams that deploy twice per week is not team size. It is platform maturity.

Building an IDP is an engineering project that requires experience, ownership, and a clear incremental plan. If you want to build this internally, or need an external perspective to start faster:

Talk to our team about your deployment challenges.

Frequently Asked Questions

What exactly is an internal developer platform?

An internal developer platform is a curated layer of tools, workflows, and self-service interfaces that frees developers from infrastructure toil. It lets engineers provision environments, trigger deployments, and configure monitoring setups without opening ops tickets. An IDP is not a single product — it is an internal system of integrated components including Kubernetes, GitOps tooling, and a developer portal. The internal developer platform benefits appear in deployment frequency, incident rates, and engineering time recovered from operational work.

How is an IDP different from a CI/CD pipeline?

A CI/CD pipeline automates the build, test, and deployment process for one application. An internal developer platform goes significantly further: it includes self-service infrastructure, service templates, a developer portal, and standardised environment definitions. A pipeline is typically one component inside an IDP — not the platform itself. The distinction matters because many teams believe they have a platform when they actually have a set of disconnected pipelines.

How long does it take to build an internal developer platform?

It depends heavily on your starting point. With an experienced platform engineering team and a clear incremental approach, the first production-ready parts of the platform are usable in six to eight weeks. A fully built-out IDP with developer portal, GitOps, and standardised templates typically takes three to five months. The variable is not the tooling — it is the state of your existing infrastructure and how consistently your teams adopt the new workflows.

We have had bad experiences with external teams on infrastructure projects. Why would working with TVM be different?

That concern is valid. External teams fail on infrastructure projects most often because they deliver tools but do not transfer ownership. At TVM, we build IDPs with a defined knowledge-transfer plan from day one: documented runbooks, internal training sessions, and a handover protocol before the engagement ends. Our incremental approach also means your team participates in building the platform from the beginning — so at the end, they genuinely know how to operate it, not just formally "own" it on paper.

Is AI-generated infrastructure code safe for production systems?

This is an important question. AI tools like Codex and Claude Code generate infrastructure code significantly faster — but they make mistakes, particularly with complex cloud-specific configurations. At TVM, we treat AI-generated infrastructure code as a first draft, not a finished output. Every generated module goes through review by a senior infrastructure engineer and is validated with automated tests using tools like Terratest. The AI accelerates the work. The engineer is still accountable for what reaches production.

About the author

Trayan Minkov
CEO

Trayan Minkov

TU Munich engineering graduate with 13+ years in automotive — including 4 years on BMW projects via Bertrandt and 9 years serving Tier 1 automotive suppliers. Founded TVM in 2017 to bring that engineering rigor to software development.

Partner with a Trusted Nearshoring Expert

Looking to collaborate with a skilled software development team in Bulgaria? Let’s work together to bring your project to life.

partner-image
Loading...