Platform Engineering — Internal Developer Platforms Explained
Platform engineering is the discipline of building and maintaining self-service toolchains and workflows that enable developers to ship software faster without filing tickets or waiting on ops teams. If DevOps was about breaking down silos, platform engineering is about building the roads that make the journey smooth.
What Is Platform Engineering?
Platform engineering emerged because "you build it, you run it" doesn't scale. When every team has to configure their own CI/CD pipelines, Kubernetes manifests, observability stacks, and security policies, cognitive load explodes. Platform engineering solves this by creating a curated, self-service layer — an Internal Developer Platform (IDP) — on top of your infrastructure.
┌──────────────────────────────────────────────┐
│ Developer Self-Service UI │
│ (Portal / CLI / API / GitOps) │
├──────────────────────────────────────────────┤
│ Internal Developer Platform │
│ ┌──────────┐ ┌───────────┐ ┌─────────────┐ │
│ │ Templates │ │ Workflows │ │ Policies │ │
│ └──────────┘ └───────────┘ └─────────────┘ │
├──────────────────────────────────────────────┤
│ Infrastructure & Services │
│ Kubernetes · Cloud · Databases · Queues │
└──────────────────────────────────────────────┘
The platform team doesn't replace DevOps — it productizes the best DevOps practices into reusable building blocks.
Platform Engineering vs DevOps vs SRE
These three disciplines overlap but serve distinct purposes:
| Aspect | DevOps | SRE | Platform Engineering |
|---|---|---|---|
| Focus | Culture & collaboration | Reliability & SLOs | Developer experience & self-service |
| Primary user | Dev + Ops teams | Production systems | Application developers |
| Key metric | Deployment frequency | Error budget / SLOs | Developer satisfaction, onboarding time |
| Approach | Break silos, automate | Software engineering for ops | Build internal products |
| Output | Practices & pipelines | Runbooks, SLIs, toil reduction | Internal Developer Platform |
| Team structure | Embedded or cross-functional | Dedicated SRE team | Dedicated platform team |
| Failure mode | "Everyone does ops" burnout | Alert fatigue | Over-engineering unused features |
Platform engineering treats developers as customers and the platform as a product. You measure success by adoption, not enforcement.
Components of an Internal Developer Platform
A mature IDP has five core layers:
# IDP Component Architecture
idp_layers:
developer_interface:
- service_catalog # Backstage, Port, Cortex
- cli_tools # Custom CLI, Scaffolding
- self_service_portal # Templates, One-click environments
integration_and_delivery:
- ci_cd_pipelines # GitHub Actions, ArgoCD
- gitops_workflows # Flux, ArgoCD
- artifact_management # Container registry, Helm charts
resource_management:
- infrastructure_orchestration # Terraform, Crossplane
- environment_management # Namespaces, accounts
- database_provisioning # Operators, managed services
security_and_governance:
- rbac_policies # OPA, Kyverno
- secret_management # Vault, External Secrets
- compliance_checks # Automated audits
observability:
- monitoring_stack # Prometheus, Grafana
- logging_pipeline # ELK, Loki
- tracing # Jaeger, Tempo
Golden Paths: Opinionated but Not Mandatory
A golden path is the recommended, pre-paved way to accomplish a task. It's not a wall — developers can go off-path, but the golden path is so good that they rarely want to.
# Example: Golden path CLI to create a new microservice
$ platform create service \
--name payment-api \
--language go \
--template microservice-grpc \
--team payments
✓ Repository created: github.com/acme/payment-api
✓ CI/CD pipeline configured (GitHub Actions)
✓ Kubernetes namespace: payments-payment-api
✓ Monitoring dashboards provisioned
✓ Service registered in Backstage catalog
✓ Security scanning enabled (Trivy + Snyk)
✓ README and ADR templates added
Your service is ready at: https://payment-api.dev.acme.internal
One command replaces dozens of manual steps, tickets, and context-switching. The developer gets a production-ready service in minutes.
Self-Service Infrastructure with Backstage
Backstage, originally built at Spotify, is the most popular open-source developer portal. It provides a unified UI for your entire IDP.
# backstage/catalog-info.yaml — Service registration
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: payment-api
description: Payment processing service
annotations:
github.com/project-slug: acme/payment-api
backstage.io/techdocs-ref: dir:.
prometheus.io/alert: payment-api-alerts
pagerduty.com/service-id: P1234ABC
tags:
- go
- grpc
- payments
spec:
type: service
lifecycle: production
owner: team-payments
system: payment-system
dependsOn:
- resource:payments-db
- component:auth-service
providesApis:
- payment-api
Backstage gives you a software catalog (who owns what), TechDocs (docs as code), scaffolder (service templates), and a plugin ecosystem with 100+ community plugins for Kubernetes, CI/CD, cost tracking, and more.
Platform Team Structure
A platform team typically operates as an enabling team (per Team Topologies):
┌─────────────────────────────────────────┐
│ Stream-Aligned Teams │
│ (Payments, Search, Checkout, etc.) │
│ ↕ Self-Service ↕ │
├─────────────────────────────────────────┤
