🎉 DevOps Interview Prep Bundle is live — 1000+ Q&A across 20 topicsGet it →
All Articles

Port Review — Is This Backstage Alternative Actually Easier to Run?

Backstage gives you full control but demands real engineering investment to operate. Port promises the same developer portal value as a managed, no-code-first product. I tried it on a real service catalog — here's the verdict.

DevOpsBoysJun 18, 20264 min read
Share:Tweet

Backstage's biggest complaint isn't its feature set — it's that running it well requires a dedicated platform engineer (sometimes a whole team) just to maintain the portal itself. Port positions itself as the answer: the same software catalog, scorecards, and self-service actions, but managed, and configured through a UI/YAML model instead of writing React plugins.

I set up a service catalog with scorecards and a self-service action in both to see if Port's "easier" pitch actually holds.

Getting Started

yaml
# Port — define your data model as YAML blueprints, no React/TypeScript required
identifier: service
title: Service
schema:
  properties:
    language:
      type: string
      enum: ["Python", "Go", "TypeScript", "Java"]
    has_readme:
      type: boolean
    on_call_owner:
      type: string
relations:
  team:
    target: team
    required: true

Compare this to Backstage, where defining a custom entity kind and its catalog processor involves writing TypeScript plugin code, registering it in the backend, and understanding Backstage's catalog model in some depth before you can even get a basic custom entity working.

bash
# Port — ingesting data from existing sources is largely UI-driven integration setup
# (connect GitHub, Kubernetes, PagerDuty — Port pulls and maps data automatically)
typescript
// Backstage — the equivalent requires writing an actual catalog processor
export class GithubServiceProcessor implements CatalogProcessor {
  getProcessorName(): string {
    return 'GithubServiceProcessor';
  }
  async postProcessEntity(entity: Entity): Promise<Entity> {
    // custom logic to enrich entity data from GitHub
    return entity;
  }
}

Scorecards — Where Port Genuinely Shines

yaml
# Port scorecard — defined declaratively, evaluated automatically against live data
identifier: production-readiness
title: Production Readiness
rules:
  - identifier: has_readme
    title: Has README
    level: Bronze
    query:
      condition: has_readme == true
  - identifier: has_oncall
    title: Has On-Call Owner Defined
    level: Silver
    query:
      condition: on_call_owner != null
  - identifier: slo_defined
    title: SLO Configured
    level: Gold

Scorecards in Port render automatically as a clean visual badge system across the whole service catalog — engineers can see at a glance which services are "Gold" production-ready and which are missing basics. Backstage has scorecard plugins too, but they require more setup and the visual polish is noticeably rougher out of the box.

Self-Service Actions

yaml
# Port self-service action — provisioning workflow defined in YAML, 
# triggers a webhook/GitHub Action/Terraform run behind the scenes
identifier: create_new_service
title: Create New Service
trigger:
  type: self-service
  operation: CREATE
userInputs:
  properties:
    service_name:
      type: string
    team:
      type: string
invocationMethod:
  type: GITHUB
  org: myorg
  repo: service-templates
  workflow: scaffold-new-service.yml

This is functionally similar to Backstage's Software Templates, but configuring it took noticeably less time — no plugin scaffolding, just a YAML action definition pointing at an existing GitHub Actions workflow you likely already have.

What I Liked

Time to first working catalog is dramatically shorter. A team without a dedicated platform engineer can have a working service catalog with real data in days, not the weeks-to-months timeline that's common for a from-scratch Backstage rollout.

Visual polish out of the box. Dashboards, scorecards, and the catalog UI look production-ready immediately — Backstage's default UI is more utilitarian and usually needs custom theming work to feel "done."

Lower maintenance burden. No upgrades to manage, no plugin compatibility breakage between Backstage releases, no infrastructure to run yourself (it's SaaS, with a self-hosted option for some tiers).

What I Didn't Like

You're paying for what Backstage gives away. Port is a commercial product with usage-based pricing that scales with your catalog size — for a large organization with thousands of services, this can become a meaningful recurring cost compared to Backstage's "just infrastructure cost" model.

Less ultimate flexibility. Backstage's plugin architecture means if you need genuinely custom behavior — a bespoke visualization, an unusual data integration, deep customization of the catalog UI itself — you can build it, because it's open source and extensible at the code level. Port's YAML-and-UI model covers the common cases very well but has a ceiling once your needs get unusual enough.

Vendor dependency. Your service catalog — often a fairly central piece of your developer experience — now lives on a third party's roadmap and pricing decisions, not your own infrastructure.

Honest Positioning

PortBackstage
Time to working catalogDaysWeeks-months
Ongoing maintenanceLow (managed)Medium-high (self-hosted, self-maintained)
Customization ceilingMediumVery high
Cost modelUsage-based SaaSInfra cost + engineering time
Best forTeams without dedicated platform engineersLarge orgs with platform teams who want full control

My Assessment

Port is the right choice for teams that want the developer-portal value (service catalog, scorecards, self-service actions) without dedicating engineering headcount to building and maintaining the portal itself — which describes most teams under a certain size honestly. Backstage remains the right choice for large organizations with a dedicated platform team, deep customization needs, and a strong preference for owning the entire stack rather than depending on a vendor's roadmap.

If you're evaluating both: try to get a working Port catalog running in a week as a benchmark, then decide if Backstage's flexibility is worth the multi-month investment difference for your specific org size and needs.

Compare against Backstage in more detail: How to Set Up Backstage Developer Portal

🔧

Today I Fixed

Short real fixes from production — posted daily

Browse fixes
Newsletter

Stay ahead of the curve

Get the latest DevOps, Kubernetes, AWS, and AI/ML guides delivered straight to your inbox. No spam — just practical engineering content.

Related Articles

Comments