Articles

Platform Engineering: Why Internal Developer Platforms Won

Platform engineering transforms DevOps into a product mindset, giving developers self-service golden paths so they can ship without becoming Kubernetes experts.

The Lycoris Team The Lycoris Team · · 5 min read
A CI/CD pipeline of connected stages

Somewhere between the promise of “you build it, you run it” and the reality of every developer team maintaining its own bespoke CI/CD pipelines, Terraform modules, and secrets-rotation scripts, something went wrong. Engineers hired to write product features are spending their mornings debugging container registries and their afternoons waiting on infra tickets. Platform engineering is the organized response to that problem.

What platform engineering actually is

Platform engineering applies a product mindset to internal infrastructure. Instead of each product team cobbling together their own delivery machinery, a dedicated platform team builds and maintains an Internal Developer Platform (IDP) — a curated set of tools, workflows, and self-service interfaces that any team can use to build, test, and ship software.

The distinction from traditional DevOps is subtle but important. DevOps is a philosophy: dev and ops share ownership. Platform engineering is an organizational model: a specialized team owns the platform so that other developers don’t have to. DevOps said “tear down the wall between dev and ops.” Platform engineering says “build a better surface so devs can operate without needing to become ops experts.”

It also differs from SRE. Site Reliability Engineers focus on production reliability — error budgets, SLOs, incident response. Platform engineers focus on the developer experience before code hits production: how fast can a new service get from git init to deployed?

The problem it solves: cognitive overload at scale

“You build it, you run it” is healthy in moderation. Developers who own production services make better decisions. But taken too far, it creates a hidden tax. Every team learns Kubernetes from scratch. Every team writes its own deploy.sh. Every team discovers, painfully, that their secret rotation script breaks during rolling restarts.

This is, at its core, a cognitive load problem — the mental overhead of operating infrastructure pulls attention away from the work that actually differentiates the product. At small scale it’s manageable. At dozens of teams, it compounds into real velocity loss.

An IDP doesn’t eliminate operational responsibility; it packages the hard parts so developers can consume them without needing a deep background in every underlying technology.

Golden paths: self-service without lock-in

The centerpiece of a good IDP is the golden path (also called the “paved road”): an opinionated, well-maintained template for how to build and ship a service at your organization. Golden paths cover things like:

  • Service scaffolding — generate a new service with CI, logging, and tracing wired in by default
  • Environment provisioning — spin up an isolated preview environment for a PR without filing a ticket
  • Secrets management — a standard way to access credentials that doesn’t involve hardcoding them
  • Release workflows — canary deploys, rollback, and feature flags that work the same way across services

The “golden” part is important. These paths aren’t mandated. Teams can go off-road when they have a good reason. But the path is so much easier than the alternative that most teams take it. That’s the design goal: attract, don’t mandate.

Platform as a product

The most common reason platform engineering projects fail is treating the platform as infrastructure rather than as a product. The developers consuming the platform are your customers. If they don’t use it, it failed — regardless of how clever the implementation is.

That means doing user research. Interview developers. Find out where they’re spending time they’d rather not. Build what they need, not what’s architecturally elegant. Measure adoption, not just availability.

Colorful source code on a dark editor screen

Key building blocks

ComponentRole
Developer portal (e.g. Backstage)Single pane of glass: service catalog, docs, self-service actions
Paved-road templatesScaffold new services with sane defaults
Self-service environmentsPR environments, staging, ephemeral test infra
Opinionated CI/CDPre-built pipelines teams can adopt wholesale
Observability defaultsLogging, tracing, and alerting included out of the box

Backstage, the open-source developer portal originally built at Spotify, has become the most widely adopted foundation for IDPs. It provides a plugin-based architecture where teams can expose a service catalog, runbooks, deployment status, and self-service workflows through a unified interface. It’s not lightweight to operate, but it solves a real coordination problem at scale.

For CI/CD, most platforms settle on a shared GitHub Actions workflow library that product teams reference rather than maintain. This means a security fix in the shared workflow propagates everywhere, instead of requiring every team to update their own pipelines.

DIY DevOps vs. an internal developer platform

DimensionDIY DevOpsPlatform / IDP
Infra knowledge requiredHigh — every team learns itLow — platform team absorbs it
ConsistencyLow — N teams, N patternsHigh — golden paths
Onboarding timeSlow — new hires learn each team’s setupFast — one platform, one mental model
Maintenance burdenDistributed across all teamsConcentrated in platform team
Risk of divergenceHighLow
FlexibilityTotalHigh, with guardrails

Common pitfalls

Building what nobody asked for. The surest way to waste a year of engineering is to build a polished platform that solves problems developers don’t actually have. Talk to the teams you’re serving before writing a line of code.

Mandating adoption. Forcing teams onto the platform breeds resentment and workarounds. If your golden path is good, teams will choose it. If they’re not, that’s product feedback.

Under-resourcing the platform team. An IDP is a product with real customers. It needs engineering capacity, product management, and proper support. A half-staffed platform team creates more problems than it solves — developers hit sharp edges with no one to fix them.

Skipping documentation. A platform nobody understands is a platform nobody uses. Good docs, runbooks, and a searchable service catalog are non-negotiable.

How to start small

You don’t need a dedicated platform team and a full Backstage deployment to get started. Start with the highest-friction problem your developers actually complain about. Usually that’s one of:

  1. New service setup takes too long — build a template repository
  2. CI/CD is inconsistent — standardize on shared workflow definitions (a containerized build step helps here)
  3. Deploying to staging requires a ticket — add a self-service button

Ship something real to one team, get feedback, iterate. Platform engineering is not a big-bang migration. It’s a product practice that compounds over time.

The takeaway

Platform engineering is what DevOps looks like when it matures into an organizational structure. The goal is simple: developers should be able to take an idea from code to running service without becoming infrastructure experts. An IDP, built with the same product rigor you’d apply to customer-facing software, is how you get there.

For teams already on Cloudflare, the deployment side of a golden path is well-served by Cloudflare Pages and Workers — zero-config deploys with global distribution make a sensible paved road for web workloads, letting the platform team focus their energy on the higher-friction problems.

Chisato Chisato · · 5 min read

Logs vs Metrics vs Traces: The Three Pillars

Logs, metrics, and traces each answer a different question about a running system — what each captures, and how they work together.

#DevOps #Cloud #Developer Tools
Chisato Chisato · · 4 min read

Monorepo vs Polyrepo: Which Should You Choose

A monorepo holds all projects in one repository; a polyrepo splits them apart. Trade-offs in tooling, ownership, and CI/CD for each approach.

#DevOps #Developer Tools #Cloud