Platform Engineering — Internal Developer Platforms: What the «Build It Like Spotify» Myth Gets Wrong

Every team that decides to "build an Internal Developer Platform" starts the same way: someone pins a Backstage screenshot in Slack, the word "Spotify" appears twice, and a working group is formed. Six months later the platform has a service catalog nobody updates, a golden-path template that only the platform team uses, and a growing queue of tickets asking the platform team to "just create the repo for me." The platform became a second ops team with extra steps.

That is the core misunderstanding. Platform Engineering is not a portal you install. It is a product whose customers are your own engineers, and the portal is only its storefront. Below is how the mechanism actually works, one real walkthrough, and the places where it breaks.

Why an IDP exists at all — the mechanism, not the slogan

A developer needs to ship a service. Without a platform, that means: request a cloud account, wait for IAM, hand-write a Dockerfile, copy a CI config from a repo that is two years old, guess at the secret-management approach, and file a ticket for a database. Each step is small; together they are days of waiting and a pile of decisions that every team makes differently.

An IDP collapses this into a contract: one declarative description of a service in, a running, observable, secured service out. The developer writes a short manifest — name, owner, language, whether it needs a database — and the platform does the rest. The value is not convenience; it is that every service now has the same shape, so security review, cost attribution, and on-call rotation stop being archaeology.

This is why the tooling splits into layers: a service catalog (Backstage, Port) holds the truth about what exists and who owns it; infrastructure orchestration (Crossplane, Terraform) turns the manifest into real cloud resources; the CI/CD and environment layer gives each branch a preview environment; observability and secret management are wired in by default rather than bolted on.

One walkthrough: a developer needs a service with a database

Imagine a 40-person engineering org. A backend developer needs a new service with a Postgres database and a staging environment.

Without a platform: cloud account request (1–3 days), manual Terraform copy-paste, a database provisioned by hand with credentials pasted into a secret store nobody documents, a CI file adapted from another repo, and a staging URL that lives in a spreadsheet. Realistically one to two weeks of calendar time, most of it waiting.

With a functioning IDP: the developer fills in a form in the catalog — service name, owner team, language, "needs Postgres: yes." The catalog creates a repo from a golden-path template, registers the service with its owner, and triggers Crossplane, which reconciles a claim into a managed database plus the connection secret. The pipeline builds, deploys to a preview environment, and links the dashboard and runbook back into the catalog entry. Time to a running staging service: under an hour, most of it the first build.

The order matters. Teams that start with the portal get a beautiful catalog of services that still require manual work behind it. Teams that start with orchestration and a golden path get working services, then add the portal as a view on top. If you invert the order, you build a directory of links and call it a platform.

Reconcile, don't script The difference between a script and a platform is idempotence. A script that creates a database runs once and drifts. A Crossplane resource or a Terraform plan reconciled continuously notices when someone deletes the database by hand and puts it back. Build the reconciling path first — it is the part that survives contact with production.

Where the mechanism itself breaks

1. The platform becomes a ticket queue. The golden path covers 60% of cases; the other 40% file tickets. The platform team becomes an ops team with a nicer UI, and the queue grows faster than the catalog. Early signal: the ratio of tickets to self-service actions climbs month over month. Fix: measure the escape rate — what share of requests bypass the golden path — and treat every escape as a missing feature, not a user error.

2. Nobody owns the catalog. The catalog is only as good as its freshness. Services get renamed, teams dissolve, owners leave. Six months in, half the entries are stale and engineers stop trusting it, which kills adoption faster than any missing feature. Early signal: search results that point to deleted repos. Fix: generate catalog entries from the repo itself (a catalog-info.yaml in the repository) so the source of truth lives where the code lives.

3. The platform is built for the platform team. The team builds what is interesting — a slick abstraction layer — rather than what developers need. Adoption stalls because the path does not match how people actually work. Early signal: the platform team's own services are the only ones on the golden path. Fix: treat internal developers as customers with a feedback loop, and ship the boring thing (a working deploy) before the clever thing.

4. Cost and blast radius arrive late. A self-service platform makes it trivially easy to create resources — including expensive ones. Without quotas and cost attribution wired in from day one, you get a surprise cloud bill and no way to trace it to a team. Early signal: unlabeled resources in the bill. Fix: FinOps is a platform feature, not a quarterly report — label by service and owner at creation time.

Which path fits you

The honest trade-off: building an IDP is a real investment — a platform team of two to four engineers, six to twelve months before it pays back, and it only pays back if you have enough services and teams to amortize it. Below roughly ten teams, a good set of templates and a documented process usually beats a platform.

Path Time and cost What you get
Self-study from docs Cheap, slow, uneven Tool knowledge, no feedback on architecture decisions
Structured course Weeks, moderate cost The full chain from catalog to FinOps, with configs to compare against
Build in-house Months, a team A platform tailored to your org — and the maintenance bill

Self-study hits a specific wall: the tools are documented individually, but the decisions between them — Backstage vs. Port, Crossplane vs. Terraform, when a preview environment is worth the cost — are exactly where nobody tells you what breaks. That is the gap a structured path closes, and it is where the course Platform Engineering — Internal Developer Platforms fits: it walks the full chain from architecture to metrics with ready configs, so you compare your design against a working one instead of guessing.

This path suits engineers moving from DevOps into platform work, and teams about to build their first IDP. It does not suit anyone hoping for a shortcut around the org change — a platform is a product, and products need customers who trust them.

Start with the smallest working path: one golden-path template, one reconciling resource, one catalog entry generated from the repo. If that survives a month of real use, you have a platform; if not, you have a very expensive screenshot.

← All posts

Ask AI about this article

Ask a question about this article — ASI Biont will answer based on its text.