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-apiScaffolder: 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-]*$'
owner:
title: Owner Team
type: string
ui:field: OwnerPicker
description:
title: Description
type: string
javaVersion:
title: Java Version
type: string
enum: ['21', '23']
default: '23'
steps:
- id: fetch
name: Fetch Template
action: fetch:template
input:
url: ./skeleton
values:
name: "{{ parameters.name }}"
owner: "{{ parameters.owner }}"
javaVersion: "{{ parameters.javaVersion }}"
- id: publish
name: Publish to GitHub
action: publish:github
input:
repoUrl: github.com?owner=myorg&repo={{ parameters.name }}
defaultBranch: main
- id: register
name: Register in Catalog
action: catalog:register
input:
repoContentsUrl: "{{ steps.publish.output.repoContentsUrl }}"
catalogInfoPath: /catalog-info.yamlPlugin Development
Backstage’s power comes from its plugin ecosystem. You can integrate any internal tool — CI/CD systems, monitoring dashboards, cost trackers, incident management — into the portal. Additionally, plugins can add pages, cards, tabs, and sidebar items to create a cohesive developer experience.
Production Deployment
Deploy Backstage as a containerized application with a PostgreSQL backend. Use Kubernetes for production deployments with proper health checks, autoscaling, and ingress configuration. Furthermore, integrate with your SSO provider for authentication and implement RBAC for authorization. See the Backstage deployment documentation for detailed instructions.
Key Takeaways
- Start with a solid foundation and build incrementally based on your requirements
- Test thoroughly in staging before deploying to production environments
- Monitor performance metrics and iterate based on real-world data
- Follow security best practices and keep dependencies up to date
- Document architectural decisions for future team members
In conclusion, a Backstage developer portal transforms how engineering teams discover services, create new projects, and access operational tooling. Start with the software catalog, add scaffolder templates for your golden paths, and gradually integrate your existing tools through plugins. The investment in platform engineering pays dividends through faster onboarding, reduced cognitive load, and consistent engineering practices.