Lumaktaw sa nilalaman
Bumalik sa listahan ng mga artikulo
DevOps14分

Designing Golden Paths: Backstage Templates, Cookiecutter, Nx Plugins para sa Opinionated Scaffolding

Designing Golden Paths: Backstage Templates, Cookiecutter, Nx Plugins for Opinionated Scaffolding

柴田 美月Staff Developer Experience Engineer
2026-04-2114分
Golden PathScaffoldingBackstageCookiecutterNxDevOps

Ang Golden Path ay ang Pinakamalakas na Lever para sa 'Pag-implement ng Kultura'

Ilang taon na ang lumipas mula nang tumira sa Platform Engineering community ang salitang Golden Path, at noong 2026, ang 'kung anong mga template ang ibinibigay' ay naging panahon kung saan lantaran mababasa ang kultura ng engineering ng isang organisasyon. Ang konseptong ito na unang iminungkahi ng Spotify ay isang metapora ng 'makakarating sa destinasyon nang hindi naliligaw kung lalakad ka sa paved road', isang mekanismo na nag-aalis ng pagod sa pagpili ng teknolohiya at gastos ng paggawa ng desisyon, at nagbibigay ng kapaligiran kung saan maaaring mag-focus ang mga developer sa mga pangunahing problema.

Ang Golden Path ay kaibahan sa mga tradisyonal na template dahil dito ay naka-embed ang 'matatatag na opinyon'. Ang wikang gagamitin, ang testing framework na gagamitin, ang CI pipeline na gagamitin, ang observability stack na gagamitin, ang Secret management na gagamitin—lahat ay ibinibigay sa form na 'ito ang gagamitin ng organisasyon'. Hindi ito simpleng pagbawas ng boilerplate, kundi mismo ang frontend ng operating environment na responsibilidad ng platform team.

Backstage Software Templates: Ang Kapangyarihan ng Variable Substitution at Actions

Ang Backstage Software Templates ay isang feature na ibinibigay ng Scaffolder plugin ng Backstage, kung saan ang mga parameter at sequence ng action ay inilarawan sa template.yaml. Ang mga parameter ay tinukoy gamit ang JSON Schema, at ang UI ay awtomatikong nalilikha. Ang mga action ay pinagsama ang mga pre-defined na fetch:template, publish:github, catalog:register, github:actions:dispatch, at iba pa, at ang mga custom Action ay maaaring idagdag sa TypeScript.

Ang pinakamaliit na template ay may ganitong istraktura:

```yaml apiVersion: scaffolder.backstage.io/v1beta3 kind: Template metadata: name: nodejs-microservice title: Node.js Microservice (Golden Path) spec: owner: platform-team type: service parameters: - title: Service Info properties: name: { type: string, pattern: "^[a-z][a-z0-9-]+$" } owner: { type: string, ui:field: OwnerPicker } tier: { type: string, enum: [tier1, tier2, tier3] } steps: - id: fetch action: fetch:template input: url: ./skeleton values: { name: ${{ parameters.name }} } - id: publish action: publish:github input: repoUrl: github.com?owner=acme&repo=${{ parameters.name }} - id: provision-secrets action: vault:provision input: path: services/${{ parameters.name }} - id: register action: catalog:register input: repoContentsUrl: ${{ steps.publish.output.repoContentsUrl }} ```

Ang pamantayan ay pataasin ang mga template ayon sa form na ito, ngunit sa practice, ang 70% ng oras ay ginagastos sa talakayan tungkol sa 'ano ang gagawing standard'. Ang teknikal na paraan ng pagsulat ay naaral sa loob ng 30 minuto.

Cookiecutter: Magaan at Mataas na Portability na Pagpipilian

Para sa mga organisasyong hindi pa nag-deploy ng Backstage, o sa mga kaso kung saan gusto mong gamitin ito sa labas ng IDP, ang Cookiecutter ang pinipili. Ito ay isang established tool na ginawa sa Python na nagpo-process ng Jinja2 templates, na tumatakbo mula pa noong 2013. Hanggang sa 2026, buhay pa rin ito, at ang mga use case ng pagtawag nito sa pamamagitan ng GitHub organization templates o CI ay nananatiling naaangkop.

Ang lakas ng Cookiecutter ay ang pagiging simple ng 'ang GitHub repository mismo ay nagiging template', at ang kalinawan ng mga input prompt gamit ang cookiecutter.json. Maaaring isulat ang pre-validation at post-processing sa hooks/pre_gen_project.py at post_gen_project.py, na nagbibigay-daan sa mahigpit na operasyon tulad ng 'tiyaking naka-setup ang git init at pre-commit pagkatapos ng generation' o 'ihinto kung naglalaman ang pangalan ng generation ng item sa NG list'.

Gayunpaman, ang Cookiecutter lamang ay hindi kayang hawakan ang 'post-processing ng template generation' tulad ng paggawa ng GitHub repository, pagpaparehistro ng Secret, at pagpaparehistro ng Catalog. Kailangang isulat ang mekanismong katumbas ng Backstage Actions nang mag-isa. Bilang resulta, mas madali ang pag-integrate kung mayroon nang Backstage, at ang kompromisong paraan ng 'pansamantalang konekta gamit ang Cookiecutter kung wala pa' ay karaniwan.

Nx Plugins: Golden Path sa Panahon ng Monorepo

Para sa mga organisasyong nagtayo na ng monorepo culture, ang Nx ay isang malakas na pagpipilian. Ang Nx Plugin ng Nrwl (ngayon ay Nx) ay nagbibigay ng generator tulad ng `nx g @acme/workspace:microservice my-service`, na nagpapatupad ng Golden Path sa anyo ng pagdaragdag ng bagong module sa kasalukuyang monorepo.

Samantalang ang Backstage ay 'nagge-generate ng independent repository', ang Nx ay 'nagdadagdag ng bagong project sa malaking monorepo' na approach, kaya ang mga sumusunod na katangian ay lumilitaw. Una, ang mga common library, build configuration, at CI configuration ay maaaring gamitin muli. Pangalawa, ang mga task, tag, at dependency ay maaaring ideklara nang may type sa project.json. Pangatlo, ang build at test ay tatakbo lamang sa affected range sa pamamagitan ng nx affected.

Ang Nx Plugin generator skeleton ay nagiging TypeScript code na gumagamit ng `Tree` API ng `@nx/devkit` para gumawa ng file at mag-update ng workspace. Ito ay mas programmable kaysa sa Backstage Templates at natural ang pagsulat ng conditional branching at dynamic generation, ngunit ang benepisyo ng pag-install ay manipis para sa mga organisasyong hindi gumagamit ng monorepo.

CI Integration: 'Ang Template ay Ipinanganak na May CI'

Ang kalahati ng halaga ng Golden Path ay nasa CI integration. Ang standard configuration ng 2026 ay isa sa mga sumusunod: GitHub Actions reusable workflow, GitLab CI includes, CircleCI orbs, Tekton Pipelines/Chains ClusterTask. Ang karaniwan sa lahat ng ito ay ang prinsipyo ng 'pagtatago ng detalye ng implementasyon ng CI mula sa mga gumagamit ng template'.

Agad pagkatapos ng template generation, gusto naming maging ilang linya lamang ang .github/workflows/ci.yml:

```yaml name: CI on: [push, pull_request] jobs: build: uses: acme/workflows/.github/workflows/nodejs-tier1.yml@v2 with: service_name: ${{ github.event.repository.name }} secrets: inherit ```

Ang aktwal na nodejs-tier1.yml ay naglalaman ng lint, type check, unit test, SAST (Semgrep o CodeQL), SBOM generation (Syft), container image build, Cosign signing, SLSA provenance generation, at paggawa ng manifest update PR para sa ArgoCD—lahat nang magkasama. Hindi kailangang malaman ng gumagamit ang tungkol dito.

Secret Auto-Provisioning: Zero-Touch ang Tanging Tamang Sagot

Ang pinaka-karaniwang dahilan ng pagiging formalidad ng Golden Path ay ang 'manu-manong pag-setup ng Secret'. Kahit makagawa ng repository mula sa template, kung ang pag-issue ng DATABASE_URL o AWS credentials ay manu-mano, may pangangailangan pa rin ng human ticket sa huli, at ang benepisyo ng scaffolding ay nagiging malabo.

Ang inirerekomendang configuration ng 2026 ay ang kombinasyon ng HashiCorp Vault o AWS Secrets Manager at Kubernetes External Secrets Operator. Ang Backstage Action ay gumagawa ng dedicated path sa Vault (`kv/services/${name}`) at nagdo-assign ng policy, at ang GitHub Actions side ay nag-a-authenticate sa Vault gamit ang OIDC. Ang mismong DB ay isinasagawa gamit ang Crossplane o Terraform Cloud bilang IaC, at ang connection string ay awtomatikong nire-register sa Vault. Kailangan lamang ng gumagamit na i-refer ang `vault:kv/services/my-service` sa Kubernetes manifest.

Pag-embed ng Opinion: Proporsyon ng Sapilitan at Paghikayat

Ang nagtatakda ng tagumpay o kabiguan ng Golden Path ay hindi ang teknolohiya kundi ang 'pagtatayo ng linya sa kung gaano kalayo ang pag-mandate at kung saan maaaring pumili'. Ang mga item na maaaring i-mandate ay ang mga security requirements (SAST, SBOM, signing), log format, metrics export method, at health check endpoint—ang mga bagay na masisira ang operasyon kung hindi pinag-isa sa buong kumpanya. Ang mga item na dapat hayaang piliin ay ang database schema, API design, at pagpili ng domain-specific library—ang mga bagay na kabilang sa discretion ng product team.

Sa practice, gumagana ang istraktura ng 'rekomendasyon at exception application'. Halimbawa, ang pagpili ng teknolohiya sa labas ng template para sa Tier 1 services ay nangangailangan ng pag-apruba ng Platform Review Board, ang Tier 2 ay kailangan lamang ng notification, at ang Tier 3 ay libre. Kapag na-visualize ito gamit ang Scorecard, ang mga paglihis ay natural na nalantad.

Contract Design: Tulay sa Pagitan ng PM at Engineer

Hindi maaaring gawin ng platform team nang mag-isa ang Golden Path. Kinakailangan ang Contract Design sa pagitan ng product manager at engineer. Partikular, ang mga sumusunod na elemento ay dapat na napagkasunduan.

Ang SLO na ginagarantiyahan ng template (oras ng build, oras ng pagkumpleto ng unang deployment), ang Deprecation period ng mga pagbabago sa template, ang proseso ng notification para sa Breaking Changes, ang support channel at response SLA, ang KPI ng rate ng paggamit (adoption rate, satisfaction, pain points), at ang pamantayan para sa pagpapasya ng template retirement. Ang pagdo-dokumento sa mga ito bilang 'Platform Product Spec' at ang pag-review nito tuwing quarter ay naging best practice ng 2026.

Ang Golden Path ay hindi tapos kapag ginawa na minsan. Ito ay isang produktong laging buhay at nagbabago para sa mga update sa bersyon ng wika, pagtugon sa kahinaan, at pagmuni-muni ng mga bagong patakaran ng organisasyon. Kung maaari kang magkaroon ng kamalayan na iyon ay makakaapekto sa maturity ng implementasyon ng Platform Engineering.

Sama-sama nating lutasin ang inyong technical challenges.

Ang KGA IT Solutions ay may dalubhasang team sa AI, cloud at DevOps upang maghatid ng pinakamabuting solusyon sa inyong hamon.

Makipag-ugnayan