Building an Internal Developer Platform with Backstage
Backstage developer portal has become the industry standard for internal developer platforms, used by companies like Spotify, Netflix, and American Airlines. It provides a unified interface for service catalogs, documentation, CI/CD pipelines, and infrastructure provisioning. Therefore, developers spend less time searching for information and more time building products.
Platform engineering is about reducing cognitive load on development teams by providing self-service tools and golden paths. Moreover, Backstage’s plugin architecture allows you to integrate every tool in your ecosystem into a single portal. Consequently, new developers can onboard faster, existing teams can discover services easily, and best practices are codified as templates.
Backstage Developer Portal: Software Catalog
The software catalog is Backstage’s core feature — a centralized registry of all services, libraries, APIs, and infrastructure in your organization. Each entity is defined by a YAML descriptor file stored alongside the code it describes. Furthermore, the catalog automatically tracks ownership, dependencies, and lifecycle status.
# catalog-info.yaml — lives in each repo
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: order-service
description: Handles order lifecycle from creation to fulfillment
annotations:
github.com/project-slug: myorg/order-service
backstage.io/techdocs-ref: dir:.
pagerduty.com/service-id: P123ABC
grafana/dashboard-selector: "order-service"
tags:
- java
- spring-boot
- grpc
links:
- url: https://grafana.internal/d/orders
title: Grafana Dashboard
- url: https://confluence.internal/display/ORDERS
title: Architecture Docs
spec:
type: service
lifecycle: production
owner: team-commerce
system: e-commerce-platform
dependsOn:
- component:inventory-service
- component:payment-service
- resource:orders-database
providesApis:
- order-api
consumesApis:
- inventory-api
- payment-api
Scaffolder: Golden Path Templates
Backstage’s scaffolder enables teams to create new services, libraries, and infrastructure through standardized templates. Instead of copying an existing repo and modifying it (introducing drift), developers fill out a form and get a properly configured project with CI/CD, monitoring, and documentation already set up.
# template.yaml — Spring Boot service template
apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
name: spring-boot-service
title: Spring Boot Microservice
description: Production-ready Spring Boot service with CI/CD and observability
tags:
- java
- spring-boot
- recommended
spec:
owner: platform-team
type: service
parameters:
- title: Service Details
required: [name, owner, description]
properties:
name:
title: Service Name
type: string
pattern: '^[a-z][a-z0-9-]*