Introduction
Developers spend 40% of their time on infrastructure — provisioning environments, debugging CI pipelines, configuring YAML, waiting for DNS to propagate. Platform Engineering solves this by building an Internal Developer Platform (IDP) that abstracts infrastructure complexity behind self-service interfaces.
This guide covers the three pillars of a production IDP in 2026: Backstage for the developer portal, Crossplane for infrastructure provisioning, and Golden Paths for standardization without gatekeeping.
The Three Pillars of an IDP
Developer Portal (Backstage). A single interface where developers discover services, access documentation, create environments, and view deployment status. Backstage integrates with 100+ plugins — Kubernetes, ArgoCD, PagerDuty, Datadog, GitHub.
Infrastructure Orchestration (Crossplane). Crossplane lets developers provision cloud resources (RDS databases, S3 buckets, SQS queues) via Kubernetes CRDs. Instead of opening 12 AWS console tabs, a developer writes:
apiVersion: database.aws.crossplane.io/v1beta1
kind: RDSInstance
metadata:
name: orders-db
spec:
forProvider:
region: us-east-1
dbInstanceClass: db.t3.medium
engine: postgres
engineVersion: "16"
publiclyAccessible: false
Deployment Engine (ArgoCD). As covered in our ArgoCD GitOps guide, ArgoCD is the engine that deploys code after the platform provisions infrastructure. Together, Backstage + Crossplane + ArgoCD create a complete self-service deployment pipeline.
Golden Paths: Standardization Without Gatekeeping
Golden Paths are pre-built, supported templates that developers can use — or ignore. The key insight: Golden Paths are optional. If a team's needs fit the Golden Path (which covers 80% of use cases), they get a turnkey deployment pipeline. If they need something custom, they build their own — but they own the maintenance.
A Golden Path template in Backstage (Software Template):
apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
name: go-microservice
spec:
type: service
parameters:
- title: Service Details
properties:
name:
type: string
description: Service name
deployEnv:
type: string
enum: [staging, production]
steps:
- id: fetch-base
action: fetch:template
input:
url: https://github.com/platform/go-service-template
- id: provision-db
action: crossplane:create
input:
claim: database-claim
- id: deploy
action: argocd:create-app
input:
name: ${{ parameters.name }}
repo: ${{ steps.publish.output.repoUrl }}
A developer fills in a name, clicks "Create," and gets a Go service with CI/CD, database, and deployment — in under 5 minutes. No ticket to infra team. No PR to platform repo. Self-service.
Measuring Platform Success: DevEx Metrics
Platform engineering succeeds when developers spend less time on infrastructure. Measure:
- Time to 10th PR. How long from new hire to their 10th merged PR? Before IDP: 14 days. After IDP: 2 days.
- Deployment frequency. Before: once per sprint. After: multiple times per day.
- Mean time to environment. Before: file a ticket, wait 3 days. After:
tilt upor a Backstage click — 30 seconds. - Ticket volume to SRE/infra. Before: 200 tickets/month for environment setup. After: 15 tickets/month (mostly edge cases).
These are the metrics that justify platform engineering to leadership — not "we deployed Backstage," but "developers ship 4x faster."
Crossplane Compositions: Platform APIs
Crossplane Compositions define your platform's API — the resources developers can claim without understanding the underlying infrastructure:
apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
name: postgres-micro.aws.database.example.org
spec:
compositeTypeRef:
apiVersion: database.example.org/v1alpha1
kind: XPostgresInstance
resources:
- base:
apiVersion: database.aws.crossplane.io/v1beta1
kind: RDSInstance
spec:
forProvider:
dbInstanceClass: db.t3.micro
engine: postgres
allocatedStorage: 20
A developer creates a PostgresInstance claim. The platform team's Composition provisions the actual RDS instance, security group, subnet group, and parameter group — all from a single developer-facing CRD.
For the complete picture of platform engineering in 2026 — including Backstage plugin development, Dagger for CI/CD, and the economics of developer platforms — see our Platform Engineering 2.0 guide.
Platform engineering is not about building tools. It is about reducing the cognitive load your developers carry every day.