Home
DevOps & Cloud Engineering / Lesson 35 — Platform Engineering

Platform Engineering

Building internal developer platforms — golden paths, self-service, and the team that scales engineering.


What Problem Platform Engineering Solves

As organizations grow, every product team rebuilds the same things:
• CI/CD pipelines
• Kubernetes manifests
• Monitoring setup
• Database provisioning
• Service-to-service auth
• Logging conventions

Each team's version is slightly different. Onboarding a new engineer means learning your team's particular setup. Knowledge silos form. Standards drift. Security audits become detective work.

The platform engineering answer: a small dedicated team builds an Internal Developer Platform (IDP) that ABSTRACTS the complexity. Product teams get golden paths: easy ways to do the right thing, without becoming Kubernetes experts.

Mature platform engineering shows up as:
• "Run pf new service to scaffold a new service with all defaults"
• "Push to main, your service is auto-deployed with monitoring, logging, certs"
• "Want a Postgres database? Submit a ticket in our Backstage portal."
• "All services automatically get tracing, metrics, structured logs"

The platform team makes the right thing the easy thing. Product teams ship faster because they're not reinventing infrastructure.


Golden Paths

A golden path is the supported, easy way to do something common. Examples:

Golden path: deploy a new microservice
1. pf new service my-api --template=node-typescript-rest
2. Tool scaffolds repo with all standards: Dockerfile, CI, K8s manifests, observability hooks
3. Push code to GitHub
4. CI builds, scans, signs, pushes image
5. ArgoCD deploys to dev automatically
6. PR to bump prod tag → review → ArgoCD deploys to prod
7. Service appears in service catalog with auto-generated docs

Golden path: provision a database
1. Open Backstage portal
2. Click "Request database"
3. Pick template: postgres-small / postgres-large / mysql-cluster
4. Submit
5. Terraform module runs, creates RDS instance, secret in Vault, monitoring setup
6. Connection details delivered via Slack message

The point: making the right thing easy. NOT making everything else impossible. Teams that need to deviate can — they just don't get the support and convenience.

Anti-pattern: "platform mandates" that block teams from doing their work. Mandates breed shadow IT. Convenience wins compliance every time.

Tools for golden paths:
• Backstage (Spotify open-source) — most popular service catalog and template engine
• Port — commercial alternative
• Custom CLIs — pf new ..., kustomize templates, etc.


Building an Internal Developer Platform

A typical IDP has these components:

Snippet
1. Service catalog — every service registered with metadata
   • Owner, on-call rotation
   • Dependencies
   • Documentation
   • Dashboards, runbooks, playbooks
   • Backstage is the standard
Snippet
2. Self-service infrastructure
   • Provision databases, queues, caches via UI or CLI
   • Backed by Terraform / Pulumi / Crossplane
   • No tickets or wait times
Snippet
3. Standardized CI/CD
   • Reusable workflows / templates
   • Built-in scanning, signing, deployment
   • Hard to deviate from
Snippet
4. Observability defaults
   • New services get dashboards, alerts, tracing automatically
   • Conventions enforced (log format, metric naming)
Snippet
5. Documentation
   • TechDocs in Backstage
   • Auto-generated where possible (OpenAPI specs → API docs)
Snippet
6. Cost and compliance dashboards
   • Per-team spend visibility
   • Per-service security posture
   • Compliance status

Crossplane — emerging tool: define cloud resources via K8s CRDs. Combined with ArgoCD, your entire cloud infra reconciles GitOps-style. Cool but requires investment.

For most companies: Backstage + Terraform modules + GitOps is the practical IDP.


Platform vs Product Mindset

The platform team isn't just operations with a new name. The mindset is different.

Operations team:
• Reactive: tickets come in, get processed
• Defines policies and enforces them
• Often a bottleneck

Platform team:
• Proactive: builds tools that prevent the need for tickets
• Defines defaults and makes deviation hard
• Builds an actual product (the platform)

Platform engineering principles:

1. Treat your platform as a product. You have users (the developers). Talk to them. Ship features they ask for. Measure satisfaction.

2. Internal NPS. Survey developers: "How likely are you to recommend our platform to a peer?" Track over time. Improvement directly translates to engineering productivity.

3. Self-service everything. If something requires a ticket, you've failed. The exceptions are things genuinely needing human review.

4. Deprecation is a real feature. Old paths must die for new ones to be adopted. Support sunsets. Communicate aggressively.

5. Document like crazy. Every feature has a quickstart. Every error has a runbook link. Discoverability matters more than feature count.

6. Measure adoption. New features that nobody uses are waste. Track usage of every part of the platform. Cut what's not adopted; double down on what is.


When to Invest in a Platform Team

Premature platforms are common and painful. Signs you're ready:

Signs you're NOT ready:
• 5 engineers (build platform later when there are teams to serve)
• You haven't even adopted basic IaC yet
• Product priorities are clear and concentrated

When you start: 2-3 platform engineers, ~5-15% of total engineering. They build the foundation. As the company grows, the platform team grows roughly in proportion.

Failure modes:
• Platform built without product team input → solving wrong problems
• Platform tries to handle everything → enormous, overcomplicated
• Platform team becomes a bottleneck → tickets pile up, not really self-service

Success looks like:
• Product teams ship faster
• Onboarding is hours, not weeks
• Compliance is automatic
• Cost and quality both visible per-team
• Platform engineers love their job because they're shipping product, not firefighting


Backstage in Practice

Backstage is Spotify's open-source developer portal — the de facto standard for service catalogs in 2026.

What Backstage gives you:
• Service catalog — every service indexed with metadata
• Software templates — scaffolding tools for new services
• Tech docs — markdown rendered as searchable docs alongside the catalog
• Plugins for everything — Kubernetes, ArgoCD, GitHub, Datadog, PagerDuty

A catalog-info.yaml in each repo:

YAML
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  name: my-api
  description: User-facing API
  annotations:
    backstage.io/techdocs-ref: dir:.
    pagerduty.com/integration-key: abc123
spec:
  type: service
  lifecycle: production
  owner: team-platform
  system: user-platform
  dependsOn:
    - resource:postgres-prod
    - component:auth-service

Backstage indexes this and provides:
• Search across all services
• "What does this service depend on?" graphs
• Direct links to dashboards, runbooks, repos
• "Who owns this?" instantly answered

Templates — Backstage software templates let users scaffold new services through the UI:
1. Click "Create Component"
2. Pick template (microservice-typescript, lambda-python, etc.)
3. Fill form (service name, owner)
4. Backstage creates the repo, opens the PR, registers in catalog

Operationally: setup is non-trivial, but the value is massive. Most teams that adopt Backstage become enthusiastic about it within a quarter.

The next lesson — the final one in the series — covers edge computing and CDNs.


⁂ Back to all modules