Leer en español · Lire en français · Auf Deutsch lesen
Section 10.7 of 10.8 · Intermediate · 21 min read
Platform engineering and internal developer platforms
Video lesson
5 min · narrated, with captionsListen only (audio)
Read the transcript
Teams that build a service should run it too, but the toolset in this chapter is large. In this lesson you'll see how a platform team can carry much of that load, and how to tell whether it works.
Imagine a large office where every department buys its own printers, wires its own network and hires its own cleaner. Everyone wastes time on chores, and some do them badly. A good facilities team offers ready-made services instead: book a meeting room online, or order a laptop from a short list. Nobody is forced to use them, but they're the easiest way. Platform engineering is that facilities team for software teams.
In 2006, Amazon's chief technology officer summed up its model as: you build it, you run it. It works, but today a product team may need images, Kubernetes, infrastructure code, pipelines and secrets before writing any business logic. When every team solves all this alone, effort is duplicated: ten teams write ten slightly different pipelines. Quality varies: some teams encrypt their databases and configure backups, and others forget. And time spent on infrastructure is time not spent on the product. The answer is an internal developer platform, which packages these capabilities for self-service.
Product teams, such as orders, couriers and restaurants, reach the platform through self-service, with no tickets for routine needs. They use a developer portal, a command line tool and APIs, or templates in Git. Behind those are shared capabilities: pipelines, infrastructure modules, observability, secrets and identity, and databases and queues. All of it runs within guardrails: policy as code, quotas, budgets and secure defaults. A platform team builds and runs it as a product, and learns from its users' feedback. Most of its work is choosing, integrating, documenting and supporting existing tools, not writing new ones.
The most valuable thing a young platform can offer is a golden path, which Netflix calls the paved road: a supported way to do a common task end to end, such as taking a new service to production. It's opinionated: it makes the common choices, such as language versions, logging format and deployment strategy, so teams don't have to. It's optional: teams can drive off-road for a good reason, without the road's support. That keeps the platform team honest about whether the path is really better. And it's supported and evolving: when it breaks, the platform team fixes it, and services made from last year's template still receive updates.
The key idea is that the platform is a product, and developers are its customers. It needs an owner for the roadmap, user research, documentation, and service level objectives of its own. Adoption must be earned, not mandated. If teams avoid the platform, that's market feedback, not insubordination. Self-service is kept safe by guardrails, not gates. A gate is a person who approves each request. A guardrail is an automatic check, with a clear message and a route for justified exceptions. And a portal is not a platform. Backstage, created at Spotify, offers a software catalogue, templates and documentation. But a portal in front of ticket-driven processes merely displays the queue more attractively.
Here's how the food delivery company started. It has twelve product teams, and shadowing showed that creating a new service took about three weeks and fourteen tickets to four different teams. A new platform team of four looked at the existing services. Seventy per cent were stateless HTTP services in Python or Go with a PostgreSQL database, so that became the first golden path. Two engineers from the first teams to need a new service joined the platform team for three weeks, to build the path with them, not for them. Guardrails were checked automatically: owner and cost tags, signed images only, and no public access to databases. They warned for a month before they started blocking. The result: the restaurants team created its ratings service from the portal, and reached production in five hours, against three weeks before. Tickets needed: none. Progress is measured by time to first deployment, surveys and DORA metrics, reviewed monthly. Three more teams adopted the path voluntarily within a quarter.
A platform's value shows up in other teams' outcomes. The SPACE framework warns that developer productivity can't be captured in one number: measure several dimensions, including a survey, and never judge individuals by commits. The 2024 DORA report found platform users reported about eight per cent higher individual productivity, yet delivery throughput and change stability were eight and fourteen per cent lower. Expect a dip while a platform matures. And watch for the classic traps: a platform nobody wants, an operations team renamed but still working from tickets, and abstractions that hide too much to debug during an incident.
The full section covers Backstage, cognitive load and a checklist for starting a platform. Next, in Section ten point eight, we look at cost and lock-in. See you there.
What you need to know
- Platform engineering builds an internal developer platform: self-service tools, services, knowledge and support that let product teams build and run software without tickets, reducing duplicated effort and uneven quality.
- A golden path (paved road) is an opinionated, supported, end-to-end and optional way to do a common task, such as creating a new service and deploying it to production.
- Backstage, created at Spotify and open-sourced in 2020, is a CNCF project offering a software catalogue, templates, TechDocs and plugins; a portal is the front door, not the platform itself.
- The platform is a product with internal customers: it needs a product owner, user research, documentation, its own SLOs and adoption that is earned rather than mandated (Team Topologies' X-as-a-Service and thinnest viable platform).
- Self-service is made safe by guardrails, automatic policy checks with clear messages and an exception route, instead of human approval gates.
- Success is measured by other teams' outcomes: adoption, time to first deployment, DORA metrics and developer experience, using several SPACE dimensions rather than one number.
- Typical failures are building a platform nobody wants, renaming a ticket-driven operations team, mandating adoption and abstractions that hide too much to debug.
The problem platforms solve
In 2006 Amazon's chief technology officer, Werner Vogels, summed up his company's operating model as you build it, you run it
: the team that writes a service also deploys, monitors and fixes it. The idea became central to DevOps and to microservices, and it works: teams that run their own software feel the consequences of their design choices and fix them. But the cloud-native toolset described in this chapter is large. A product team that must build, run and secure a service today may need to understand container images, Kubernetes objects, infrastructure as code, pipelines, observability, secrets management, network policies, supply-chain scanning and cost controls, before writing a line of business logic.
When every team solves all of this alone, three things happen. Effort is duplicated, as ten teams write ten slightly different pipelines. Quality varies, as some teams encrypt their databases and configure backups and others forget. And the time product teams spend on infrastructure is time not spent on the product. Platform engineering is the response: a dedicated team builds an internal developer platform (IDP) that packages these capabilities so that product teams can use them through self-service.
Evan Bottcher's 2018 article on martinfowler.com gives a widely quoted description: a digital platform is a foundation of self-service APIs, tools, services, knowledge and support, arranged as a compelling internal product. Each part of that description matters. Self-service means no tickets for routine needs. Knowledge and support means documentation and people, not only software. Compelling means teams choose to use it because it is better than doing the work themselves. Internal product means it is managed like a product, with customers, rather than like a project or a cost centre.
What an internal developer platform contains
An IDP is not one product. It is usually an integration of existing tools (a CI system, a GitOps controller, a cloud provider's managed services, an observability stack, a secret store) behind consistent interfaces and sensible defaults. The platform team's distinctive work is choosing, integrating, documenting and supporting them, and designing the experience of using them, not writing a new orchestrator.
Golden paths and paved roads
The most valuable thing a young platform can offer is a golden path: an opinionated, supported and documented way to accomplish a common task end to end, such as creating a new service and getting it into production. Spotify popularised the term (its engineering blog described its golden paths in 2020); Netflix speaks of the paved road. The metaphor is precise. A paved road is the easiest route, and it is maintained, but you may still drive off-road if you have a good reason; you just do not get the road's support.
A good golden path has five properties. It is end to end: it takes a team from an empty repository to a monitored service in production, not just through one step. It is opinionated: it makes the common choices (language versions, logging format, deployment strategy, database defaults) so that teams do not have to. It is optional: teams with unusual needs can leave it, which keeps the platform team honest about whether the path is actually better. It is supported: when it breaks, the platform team fixes it. And it is evolving: services created from last year's template receive updates, rather than being frozen at the version they started with.
What a golden path for a new service typically provides
| Element | What the product team gets | What it replaces |
|---|---|---|
| Service template | A repository with a working skeleton, tests, Dockerfile, linting and a README, generated in minutes. | Copying an old service and deleting what does not fit. |
| Pipeline | A ready CI/CD pipeline with scanning, signing and progressive deployment, as in section 10.5. | Each team writing and maintaining its own pipeline. |
| Runtime configuration | Kubernetes or managed-platform settings with sensible resource requests, probes and autoscaling. | Trial and error in production. |
| Infrastructure modules | Reviewed infrastructure-as-code modules for databases, queues and buckets, with encryption, backups and tags built in. | Tickets to an operations team, or hand-written modules of varying quality. |
| Observability | Structured logging, metrics, traces and a starter dashboard with alerts on service level objectives. | Monitoring added after the first incident. |
| Catalogue entry and docs | The service registered with its owner, dependencies and documentation. | Spreadsheets and tribal knowledge of who owns what. |
Backstage and developer portals
A developer portal is the front door of many platforms. The best-known is Backstage, built inside Spotify, open-sourced in March 2020, accepted by the Cloud Native Computing Foundation (CNCF) as a sandbox project in September 2020 and promoted to incubation in March 2022. Its core features are a software catalogue, in which every service, website, library, API and resource is registered with its owner and relationships; software templates, which generate new projects from golden-path templates; TechDocs, which publishes documentation written as Markdown next to the code; and a large ecosystem of plugins that show pipelines, Kubernetes status, costs and incidents alongside each catalogue entry.
Each component describes itself in a small file kept in its own repository, so ownership information lives with the code and is reviewed like code:
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: restaurant-ratings
description: Stores and serves customer ratings of restaurants
tags: [python, http]
spec:
type: service
lifecycle: production
owner: team-restaurants
system: restaurant-discovery
providesApis: [ratings-api]
dependsOn: [resource:ratings-db]Two cautions. Backstage is a framework that an organisation assembles and operates, typically needing engineers who know TypeScript and React, and its plugins vary in quality; managed Backstage services and commercial portals exist for teams that do not want to run it. More importantly, a portal is not a platform. A beautiful portal in front of manual, ticket-driven processes merely displays the queue more attractively. Start with the capabilities and the golden path; add a portal when there is enough behind it to be worth finding.
The platform as a product
The single most important idea in platform engineering is that the platform is a product and the developers who use it are its customers. That means a product manager or a platform lead who owns the roadmap; user research (interviews, observing a team create a service, surveys) before building; documentation and onboarding treated as features; published service level objectives for the platform itself; versioning and deprecation policies so that teams can plan; and, above all, adoption that is earned rather than mandated. If teams avoid the platform, that is market feedback, not insubordination.
Team Topologies (Matthew Skelton and Manuel Pais, 2019), covered in section 11.5, gives the organisational model. A platform team exists to reduce the load on stream-aligned teams, those aligned to a flow of business change such as ordering or courier dispatch, and interacts with them mainly in X-as-a-Service mode: a clear, self-service offering with little need for collaboration. Collaboration mode is used deliberately and briefly, for example when designing a new capability with one or two early-adopter teams. Skelton and Pais also coined the thinnest viable platform: the smallest platform that genuinely helps, which for a small organisation may be a well-written wiki page of approved services and a shared pipeline template.
This also means the platform must obey Conway's law in its favour: the platform's interfaces become the boundaries between the platform team and every product team, so they should be stable, documented and narrow, like any good abstraction.
Self-service with guardrails
Self-service removes the queue; guardrails keep it safe. The difference from traditional controls is where the check happens. A gate is a person who must approve a request, such as a change advisory board or a database administrator reviewing a ticket. A guardrail is an automatic limit that lets anything through that is within policy and blocks or flags what is not, at the moment of the request. Guardrails are usually written as policy as code (introduced in section 10.4) and enforced in pipelines, admission controllers and cloud organisation policies.
Self-service capabilities and their guardrails
| Capability | Self-service interface | Example guardrails |
|---|---|---|
| New service | Template in the portal or CLI | Must have an owner in the catalogue; must use the approved base image. |
| Database | Infrastructure module or portal form | Encryption at rest on; automated backups on; no public network access; size limited by team quota. |
| Deployment | Merge to main triggers the pipeline | Only signed images from the internal registry; resource requests and probes required; canary analysis required for tier-1 services. |
| Cloud spend | Team accounts or namespaces created on request | Mandatory cost tags; budget alerts at 80% and 100%; expensive instance types need a reason. |
| Access | Role requests through the portal | Production access is time-limited and logged; no long-lived personal keys. |
Good guardrails share three properties: they give a clear message explaining what was blocked and how to fix it; they are versioned and tested like code, with a period of warnings before a new rule starts blocking; and they come with a documented route for justified exceptions, because a guardrail with no exception path turns back into a gate the first time it is wrong.
Reducing cognitive load, not hiding everything
Team Topologies borrows the idea of cognitive load from John Sweller's educational research and distinguishes three kinds. Intrinsic load is inherent in the task, such as understanding how delivery fees work. Extraneous load comes from the environment, such as remembering the twelve steps to request a database. Germane load is the effort of learning that makes future work easier, such as understanding the domain more deeply. A platform should strip out extraneous load so that teams can spend their limited attention on intrinsic and germane load in their own domain.
That does not mean hiding everything. A team that runs its service still needs to understand how it behaves in production: its resource use, its failure modes, its latency and its costs. Abstractions that hide too much leak at the worst moment, during an incident, when the team discovers it cannot see the logs or does not know which database tier it is on. Good platforms are transparent: they provide sensible defaults and simple interfaces while letting teams look underneath and override when they need to.
Measuring whether the platform works
A platform's value shows up in other teams' outcomes, so its measures must look there. Useful measures fall into four groups, and a balanced set takes at least one from each.
Platform success measures
| Group | Example measures | Watch out for |
|---|---|---|
| Adoption | Share of services on the golden path; voluntary adoption of new capabilities; teams leaving the path and why. | Adoption that is mandated says nothing about value. |
| Delivery | DORA metrics for teams on and off the platform; time from creating a service to its first production deployment; onboarding time for a new engineer. | Comparisons between teams doing very different work. |
| Developer experience | Regular surveys of satisfaction, perceived friction and time lost to tooling; interviews. | Survey fatigue; treat results as signals, not scores. |
| Platform health | The platform's own SLOs (pipeline availability, provisioning time), support load, cost per team. | A platform that is reliable but unused is still a failure. |
The SPACE framework, published in ACM Queue in 2021 by Nicole Forsgren, Margaret-Anne Storey and colleagues from GitHub, Microsoft Research and the University of Victoria, warns that developer productivity cannot be captured by one number. It names five dimensions: satisfaction and well-being, performance, activity, communication and collaboration, and efficiency and flow. It recommends measuring several dimensions at once, including at least one perceptual measure such as a survey, and never judging individuals by activity counts such as commits or lines of code.
Evidence on platforms is encouraging but not unconditional. The 2024 DORA Accelerate State of DevOps report found that users of internal developer platforms reported about 8% higher individual productivity and 10% higher team performance, yet software delivery throughput and change stability were 8% and 14% lower. The report offers possible explanations, such as extra hand-offs and the platform layer itself adding steps, and the lesson for architects is to measure delivery outcomes as well as satisfaction, and to expect a dip while a platform matures.
Worked example
Worked example: the first golden path for a new food-delivery service
The food-delivery company has twelve product teams. A survey and a week of shadowing show that creating a new service takes about three weeks and fourteen tickets to four different teams. A platform team of four is formed. The first product teams to need a new service are the restaurants team, which wants a restaurant-ratings service, and the couriers team.
| Choose the path | Inventory of existing services: 70% are stateless HTTP services in Python or Go with a PostgreSQL database and, often, a queue subscription. That shape becomes golden path v1; everything else stays off-road for now. |
|---|---|
| Design with users | Two engineers from the restaurants and couriers teams join the platform team for three weeks (collaboration mode) to build the path with them, not for them. |
| Contents | Template repository; the standard pipeline with canary deployment; Kubernetes settings with requests, probes and autoscaling; a database module with encryption, backups and cost tags; logging, tracing and an SLO dashboard; a catalogue entry; a getting-started guide. |
| Guardrails | Owner and cost tags mandatory; signed images only; database without public access. All checked automatically; warnings for a month before blocking. |
| First result | The restaurants team creates restaurant-ratings from the portal and deploys a hello-world version to production in 5 hours, against three weeks before. Tickets needed: none. |
| Measure | Time to first production deployment, survey of the two pilot teams, and DORA metrics for services on the path, reviewed monthly. Three more teams adopt the path voluntarily within a quarter. |
| Next steps | Teams ask for event-consumer support and preview environments per pull request; the roadmap is ordered by demand. A request to support a niche language is declined for now and documented as off-road. |
The platform started with one path for the most common case, built with its first users, and was judged by their outcomes rather than by the number of features it shipped.
Most of the work was integration, defaults and documentation of existing tools, not new software.
Risks and failure modes
Platform initiatives fail in recognisable ways. The commonest is building a platform nobody wants: a team spends a year building an ambitious general-purpose platform, launches it, and finds product teams already have workable solutions and no time to migrate. Starting thin, with real users and one golden path, is the antidote. The second is the renamed operations team: an infrastructure team is relabelled as a platform team but still works from a ticket queue, so nothing changes except the job titles. If routine requests still need a ticket and a person, it is not yet a platform.
Other risks are mandating adoption, which removes the feedback that keeps a platform useful; over-abstraction, in which a home-grown layer hides the underlying tools so completely that teams cannot debug or extend it and the platform team becomes a bottleneck for every change; neglecting the long tail of services created from old templates; and the platform becoming a single point of failure whose outage stops every deployment. Conversely, a small organisation may need no platform team at all: a few shared templates maintained by volunteers can be the thinnest viable platform for years.
Checklist: starting a platform
- Evidence of painMeasure how long common tasks take today (new service, new database, first deployment) and how many tickets and teams they involve.
- A product ownerSomeone owns the roadmap, talks to users regularly and can say no.
- One golden path firstPick the most common service shape and make it excellent end to end before adding breadth.
- Self-service, not ticketsEvery routine request on the path completes without a human approval; exceptions have a documented route.
- Guardrails as codeSecurity, cost and reliability rules enforced automatically, with clear messages and a warning period.
- Transparent abstractionsTeams can see logs, metrics, costs and the underlying resources, and override defaults when justified.
- Outcome measuresAdoption, time to first deployment, DORA metrics and developer surveys reviewed regularly and published.
- Upgrade pathServices created from older templates receive improvements, and deprecations come with notice and migration help.
Check your understanding
What is the difference between a gate and a guardrail?
A gate needs a person to approve each request; a guardrail is an automatic check that lets compliant requests through immediately and blocks or flags the rest.
Why should a golden path be optional?
So that teams with unusual needs are not blocked, and so that the platform team learns from who leaves the path whether it is actually better than the alternatives.
A company installs Backstage, but creating a database still needs a ticket and a week's wait. What has it built?
A portal in front of a manual process, not a platform; self-service capabilities behind the portal are what create value.
Why does the SPACE framework advise against measuring developer productivity by commits or lines of code alone?
Activity counts capture one dimension, are easy to game and say nothing about satisfaction, collaboration, flow or the value of the outcome.
Sources and further reading
Have a question about this section? ArchitectBot, the course’s AI study assistant, answers from the course first.
Ask: “We have fifteen product teams each running their own pipelines and Terraform. How do I decide what our first golden path should be, and how will I know the platform is working?”