Learning objectives
By the end of this module, you should be able to:
- Define a golden path as a supported option rather than a mandatory one-size-fits-all path.
- Identify what belongs in a service template and what should remain configurable.
- Validate template output independently from the portal that invokes it.
Dependency note
Design now; implement the primitives later.
Design first, implement later: this module defines the golden-path contract. Modules 06–08 then supply the Kubernetes/Helm, GitOps and policy primitives that implement it. You do not need those tools to complete the core lab.
Golden paths reduce decision load
A golden path packages defaults for common work: repository structure, ownership metadata, CI, deployment, observability, security and documentation. It should make the supported path easier than rebuilding the same integration manually.
Templates are generators, not the product
Backstage Software Templates can collect inputs, render skeletons and execute scaffolder actions. The generated service still needs lifecycle ownership, upgrades and support.
Keep escape hatches explicit
Teams with legitimate exceptional needs require a documented extension/exception path. Hidden forks become expensive platform debt.
Forward dependency: design the contract before the substrate
A golden path is a product interface, so the interface should be designed from the developer journey before selecting implementation tools. Modules 06, 07 and 08 deliberately arrive later to show how runtime, reconciliation and policy can satisfy the contract without becoming the contract itself.
Worked example
Golden-path output contract
service request → repository + ownership + CI + deploy config + observability + docs → first healthy deployment
- Judge the path by the usable outcome, not whether scaffolding succeeded.
- Every generated artifact should have an owner and upgrade story.
Core lab · account-free
Lab 04 — Validate golden-path output
Goal: Generate a synthetic service skeleton and check its required platform artifacts.
Before you start
- No cloud account required.
- Core lab uses bash/Python 3 and local files only.
STEP 1Create generated service
rm -rf /tmp/golden-service && mkdir -p /tmp/golden-service/{.github/workflows,docs,deploy}
touch /tmp/golden-service/catalog-info.yaml /tmp/golden-service/.github/workflows/ci.yaml /tmp/golden-service/deploy/values.yaml /tmp/golden-service/docs/index.md
STEP 2Validate expected files
python3 - <<'PY2'
from pathlib import Path
r=Path('/tmp/golden-service')
required=['catalog-info.yaml','.github/workflows/ci.yaml','deploy/values.yaml','docs/index.md']
missing=[x for x in required if not (r/x).exists()]
assert not missing,missing
print('golden-path skeleton complete')
PY2
STEP 3Add one escape hatch rule
Document which generated field is configurable and which security/ownership controls are non-optional.
Verify
- Generated output contains ownership, CI, deployment and docs placeholders.
- At least one extension point and one non-negotiable control are documented.
Expected outcome
- A minimal but production-shaped service skeleton.
Diagnose / troubleshoot
- If the template hardcodes team/environment values, move them to validated inputs.
- If generated services never receive template improvements, define an upgrade strategy.
Real-world connectionGolden paths earn adoption when they make the common secure path faster than bespoke setup.
Real-tool practicum · optional but recommended
Optional tool lab — Backstage Software Template
Inspect the structure of a Backstage template and skeleton in a disposable sandbox.
Prerequisites
- Use a disposable local lab or organization-approved sandbox.
- Pin tool versions in real platform automation; do not blindly depend on latest.
Cost / risk
- Core learning is account-free. Optional external/sandbox tools may consume local CPU/RAM; do not use production credentials or billable cloud resources.
Warnings
- Do not point training automation at production clusters, repositories or cloud accounts.
- A successful command is not proof of a good platform interface; validate the developer outcome and guardrails.
TOOL 1printf '%s
' 'apiVersion: scaffolder.backstage.io/v1beta3' 'kind: Template' 'metadata:' ' name: demo-service' 'spec:' ' owner: platform' ' type: service' > /tmp/template.yaml
cat /tmp/template.yaml
Avoid these traps
Common mistakes
- Equating a golden path with “no alternatives allowed.”
- Generating files with no upgrade/lifecycle strategy.
- Measuring template executions without checking first-deployment success.
Knowledge check
Can you connect the developer need to a platform contract?
Three concept checks plus one scenario check.
1What is a golden path?
A documented, supported, opinionated way to complete a common developer task safely and efficiently.
2What should a template output include besides application code?
Relevant ownership, delivery, deployment, observability, security and documentation scaffolding.
3Why provide an exception or extension path?
Legitimate workloads differ; explicit extensions prevent hidden unsupported forks.
4Scenario: a template creates a repository but teams still spend two days wiring dashboards and policies. Is the golden path complete?
No. The user outcome is not complete; the path should integrate or clearly automate those recurring requirements.