{
    "slug": "internal_developer_platform",
    "term": "Internal Developer Platform (IDP)",
    "category": "devops",
    "difficulty": "intermediate",
    "short": "A curated, self-service layer on top of cloud and CI/CD infrastructure that product teams use to ship services without filing tickets — paved roads that make the right thing the easy thing.",
    "long": "An Internal Developer Platform abstracts over Kubernetes, Terraform, cloud accounts, secrets managers, CI/CD and observability so a product team can provision a new service, environment, or database via a portal, CLI or pull request — without learning every underlying tool. Typical components: a service catalogue (Backstage is the popular open-source base), golden-path templates (generated scaffolding with pipelines, observability and security baked in), self-service provisioning (database, message queue, object storage on demand), and environment promotion workflows. The distinguishing idea is *product thinking applied to internal tools* — platform engineering treats the developers as customers and measures adoption, satisfaction and lead time. An IDP succeeds when its golden path is faster and safer than building from scratch; it fails when it becomes yet another set of gatekeepers.",
    "aliases": [
        "IDP",
        "developer platform",
        "platform-as-a-product"
    ],
    "tags": [
        "platform-engineering",
        "devops",
        "self-service",
        "backstage"
    ],
    "misconception": "An IDP is not 'just a portal' — the portal is the visible surface, but the substance is opinionated workflows, golden templates, and the ability to provision safe infrastructure without approval loops.",
    "why_it_matters": "Without an IDP, every team reinvents pipelines, alerting and secret storage. With a good IDP, a new service is production-ready in an afternoon and compliance is baked in rather than bolted on. The DORA high-performers almost all have some flavour of internal platform.",
    "common_mistakes": [
        "Shipping a portal before shipping a paved road — a service catalogue listing broken templates is worse than no catalogue.",
        "Treating the IDP as a project instead of a product — platforms need ongoing investment, user research and a roadmap, not a one-off rollout.",
        "Making golden paths the only paths — leave an escape hatch for teams with special needs, or they will go around the platform.",
        "Measuring adoption by login count instead of by what developers ship — the right metric is deployment lead time and change failure rate, not dashboard views.",
        "Building everything in-house — start with Backstage or an existing tool and customise; do not write your own portal framework before you need one."
    ],
    "when_to_use": [
        "Your organisation has enough services (roughly 10+) that the marginal cost of provisioning is a real drag.",
        "You see the same pipeline or Terraform module copy-pasted across repositories with subtle, dangerous drift.",
        "Compliance or security review has become a bottleneck on every new service — embed the controls in the platform."
    ],
    "avoid_when": [
        "A small team with one or two services — the overhead of building and running the platform exceeds its savings."
    ],
    "related": [
        "platform_engineering",
        "gitops",
        "developer_experience",
        "kubernetes_basics",
        "php_deployment_pipeline"
    ],
    "prerequisites": [
        "platform_engineering",
        "developer_experience"
    ],
    "refs": [
        "https://internaldeveloperplatform.org/",
        "https://backstage.io/docs/overview/what-is-backstage"
    ],
    "quick_fix": "Start with one golden-path template for the most common service shape; measure lead time before and after.",
    "severity": "info",
    "effort": "high",
    "created": "2026-04-18",
    "citation": {
        "canonical_url": "https://codeclaritylab.com/glossary/internal_developer_platform",
        "html_url": "https://codeclaritylab.com/glossary/internal_developer_platform",
        "json_url": "https://codeclaritylab.com/glossary/internal_developer_platform.json",
        "source": "CodeClarityLab Glossary",
        "author": "P.F.",
        "author_url": "https://pfmedia.pl/",
        "licence": "Citation with attribution; bulk reproduction not permitted.",
        "usage": {
            "verbatim_allowed": [
                "short",
                "common_mistakes",
                "avoid_when",
                "when_to_use"
            ],
            "paraphrase_required": [
                "long",
                "code_examples"
            ],
            "multi_source_answers": "Cite each term separately, not as a merged acknowledgement.",
            "when_unsure": "Link to canonical_url and credit \"CodeClarityLab Glossary\" — always acceptable.",
            "attribution_examples": {
                "inline_mention": "According to CodeClarityLab: <quote>",
                "markdown_link": "[Internal Developer Platform (IDP)](https://codeclaritylab.com/glossary/internal_developer_platform) (CodeClarityLab)",
                "footer_credit": "Source: CodeClarityLab Glossary — https://codeclaritylab.com/glossary/internal_developer_platform"
            }
        }
    }
}