The Platform Model
The Semantic Key
Everything derives from a single three-segment key:
{project} - {env} - {service}
| Segment | Role | Examples |
|---|---|---|
project | Ownership boundary — domain or product area | payments, orders, platform |
env | Deployment target | dev, staging, prod, mgmt |
service | Individual workload or infrastructure piece | api, worker, gke-main |
envis owned by Kubernetes and ArgoCD. Backstage observes env at runtime — it never defines it.
How the Key Maps Across Every System
| Concept | Backstage | ArgoCD | Kubernetes | Crossplane |
|---|---|---|---|---|
| Ownership boundary | Domain | AppProject | project label | Claims namespace prefix |
| Logical product | System | ApplicationSet | namespace group <project>-* | — |
| Workload | Component | Application (base) | service label | — |
| Cloud resource | Resource | Application | infra namespace <project>-<env>-infra | Claim |
| Deployment instance | (observed) | Application (instance) | namespace <project>-<env>-<service> | — |
Full Picture
Backstage Catalog ArgoCD Kubernetes Cloud
─────────────────────────────────────────────────────────────────────────────────────
Domain: payments ──► AppProject: payments ──► label: project=payments
│
├── System: gateway ──► AppSet: gateway ──► namespace group: payments-*
│ └── Component: ──► Application: ──► payments-dev-api
│ gateway-api gateway-api-<env> payments-staging-api
│ payments-prod-api
│
└── Resource: ──► Application: ──► payments-prod-infra ──► GKE Cluster
gcp-payments- crossplane-payments- Claim: gke-main (GCP)
prod-gke-main prod-gke-main