Langkau ke kandungan
Kembali ke senarai artikel
DevOps14分

Templat Golden Path dan Perancah Projek: Panduan Kejuruteraan Platform

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

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

Golden Path adalah Tuas Paling Berkuasa untuk "Melaksanakan Budaya"

Beberapa tahun sudah berlalu sejak istilah Golden Path berakar dalam komuniti Platform Engineering, dan pada 2026 ini, "templat apa yang disediakan" sudah menjadi cerminan jelas budaya kejuruteraan sesebuah organisasi. Konsep yang diperkenalkan oleh Spotify ini adalah ibarat kiasan "berjalan di jalan berturap dan anda tidak akan sesat dalam perjalanan ke destinasi" — ia adalah mekanisme untuk menghapuskan keletihan dalam pemilihan teknologi dan kos membuat keputusan, mewujudkan persekitaran di mana pembangun boleh menumpukan perhatian kepada masalah yang benar-benar penting.

Apa yang membezakan Golden Path daripada templat konvensional secara tegas adalah wujudnya "pendapat yang kuat". Bahasa yang digunakan, rangka kerja ujian yang digunakan, saluran paip CI yang digunakan, tindanan Observability yang digunakan, pengurusan Secret yang digunakan — semuanya disediakan dalam bentuk yang telah ditetapkan oleh organisasi sebagai "inilah yang kita gunakan". Ini bukan sekadar pengurangan boilerplate; ia adalah antara muka hadapan persekitaran operasi yang dipertanggungjawabkan oleh pasukan platform.

Backstage Software Templates: Kuasa Penggantian Pemboleh ubah dan Actions

Backstage Software Templates adalah ciri yang disediakan melalui plugin Scaffolder Backstage, di mana urutan parameter dan tindakan ditulis dalam template.yaml. Parameter ditakrifkan menggunakan JSON Schema dengan UI yang dijana secara automatik. Tindakan menggabungkan fetch:template, publish:github, catalog:register, github:actions:dispatch yang telah ditetapkan, dan tindakan tersuai boleh ditambah menggunakan TypeScript.

Templat minimum mempunyai struktur seperti berikut.

```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 }} ```

Menambah templat mengikut format ini adalah pendekatan biasa, tetapi dalam praktik, 70% daripada usaha habis dalam perbincangan "apa yang hendak dijadikan standard". Cara menulis secara teknikal boleh dipelajari dalam 30 minit.

Cookiecutter: Pilihan Ringan dan Mudah Dibawa

Bagi organisasi yang belum melaksanakan Backstage, atau kes di mana anda ingin menggunakannya di luar IDP, Cookiecutter menjadi pilihan. Ia adalah alat lama terbina dalam Python yang memproses templat Jinja2, wujud sejak 2013. Sehingga 2026, ia masih aktif digunakan, dan kes penggunaan seperti templat organisasi GitHub atau memanggil melalui CI masih relevan.

Kekuatan Cookiecutter adalah kesederhanaan "repositori GitHub terus menjadi templat" dan kejelasan gesaan input melalui cookiecutter.json. Memandangkan pra-pemprosesan dan pasca-pemprosesan boleh ditulis dalam hooks/pre_gen_project.py dan post_gen_project.py, operasi yang ketat seperti "sentiasa jalankan git init dan konfigurasikan pre-commit selepas penjanaan" atau "hentikan jika nama yang dijana ada dalam senarai larangan" adalah mungkin.

Walau bagaimanapun, Cookiecutter sahaja tidak dapat mengendalikan "pasca-pemprosesan penjanaan templat" seperti penciptaan repositori GitHub, pendaftaran Secret, dan pendaftaran Catalog. Mekanisme setara Backstage Actions perlu ditulis sendiri. Hasilnya, jika Backstage sudah ada, integrasi adalah lebih mudah; jika belum ada, buat masa ini gunakan Cookiecutter sebagai penyelesaian sementara.

Plugin Nx: Golden Path untuk Era Monorepo

Bagi organisasi di mana budaya monorepo telah berakar, Nx menjadi pilihan yang kuat. Plugin Nx daripada Nrwl (kini Nx) menyediakan penjana seperti `nx g @acme/workspace:microservice my-service`, melaksanakan Golden Path dalam bentuk menambah modul baharu ke monorepo yang sedia ada.

Berbeza daripada Backstage yang "menjana repositori bebas", pendekatan Nx adalah "menambah projek baharu ke monorepo besar", menghasilkan ciri-ciri berikut. Pertama, perpustakaan bersama, konfigurasi bina, dan konfigurasi CI boleh digunakan semula. Kedua, tugas, teg, dan kebergantungan boleh dideklarasikan dengan jenis dalam project.json. Ketiga, hanya bina dan ujian dalam skop yang terjejas berjalan melalui `nx affected`.

Seni bina penjana Plugin Nx adalah kod TypeScript yang menjana fail dan mengemas kini workspace menggunakan API `Tree` daripada `@nx/devkit`. Ia lebih boleh diprogramkan berbanding Backstage Templates dan membolehkan cabangan bersyarat dan penjanaan dinamik ditulis secara semula jadi, tetapi faedah pelaksanaan adalah kurang bagi organisasi bukan monorepo.

Integrasi CI: "Templat Dilahirkan dengan CI"

Separuh daripada nilai Golden Path terletak pada integrasi CI. Konfigurasi standard 2026 adalah salah satu daripada berikut: reusable workflow GitHub Actions, GitLab CI includes, CircleCI orbs, atau ClusterTask Tekton Pipelines/Chains. Perkara yang mereka kongsi bersama adalah prinsip "menyembunyikan butiran pelaksanaan CI daripada pengguna templat".

Sesaat selepas penjanaan templat, anda mahu .github/workflows/ci.yml menjadi beberapa baris sahaja.

```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 ```

Dalam nodejs-tier1.yml sebenar, lint, semakan jenis, ujian unit, SAST (Semgrep atau CodeQL), penjanaan SBOM (Syft), bina imej kontena, penandatanganan Cosign, penjanaan provenance SLSA, dan penciptaan PR kemaskini manifes ke ArgoCD semuanya sudah disertakan. Pengguna tidak perlu tahu semua ini.

Peruntukan Secret Automatik: Sifar Sentuhan adalah Satu-satunya Jawapan

Sebab paling biasa Golden Path menjadi tidak bermakna adalah "persediaan Secret secara manual". Walaupun repositori boleh dicipta melalui templat, jika pengeluaran DATABASE_URL dan kelayakan AWS memerlukan proses manual, tiket manual masih diperlukan daripada manusia, dan faedah scaffold menjadi pudar.

Konfigurasi yang disyorkan pada 2026 adalah gabungan HashiCorp Vault atau AWS Secrets Manager dengan External Secrets Operator Kubernetes. Melalui Backstage Action, laluan khusus dalam Vault (`kv/services/${name}`) dicipta dan policy diberikan, manakala GitHub Actions mengesahkan ke Vault menggunakan OIDC. Pangkalan data itu sendiri dikeluarkan menggunakan IaC melalui Crossplane atau Terraform Cloud, dengan rentetan sambungan didaftarkan secara automatik ke Vault. Pengguna hanya perlu merujuk `vault:kv/services/my-service` dalam manifes Kubernetes.

Membenamkan Pendapat: Pembahagian antara Pemaksaan dan Pujukan

Yang menentukan kejayaan atau kegagalan Golden Path bukan teknologi, tetapi penentuan garisan "sejauh mana untuk dipaksa dan dari mana dibiarkan pilih sendiri". Item yang boleh dipaksa termasuk keperluan keselamatan (SAST, SBOM, penandatanganan), format log, kaedah eksport metrik, dan titik akhir pemeriksaan kesihatan — perkara yang jika tidak diseragamkan merentas organisasi akan merosakkan operasi. Item yang perlu dibiarkan dipilih termasuk skema pangkalan data, reka bentuk API, dan pemilihan perpustakaan khusus domain — perkara yang termasuk dalam budi bicara pasukan produk.

Dalam praktik, struktur "cadangan dan permohonan pengecualian" berfungsi. Perkhidmatan Tier 1 memerlukan kelulusan Platform Review Board untuk pemilihan teknologi di luar templat; Tier 2 hanya perlu memberitahu; Tier 3 bebas sepenuhnya. Memvisualisasikan ini melalui Scorecard secara semula jadi mendedahkan penyelewengan.

Reka Bentuk Kontrak: Jambatan antara PM dan Jurutera

Golden Path tidak boleh dibina oleh pasukan platform sahaja. Contract Design antara pengurus produk dan jurutera diperlukan. Secara khusus, perkara-perkara berikut perlu dipersetujui.

SLO yang dijamin oleh templat (masa bina, masa penyelesaian deployment pertama), tempoh Deprecation untuk perubahan templat, proses pemberitahuan untuk Breaking Change, saluran sokongan dan SLA respons, KPI penggunaan (kadar penggunaan, kepuasan, titik ketidakpuasan), dan kriteria penghapusan templat. Mendokumentasikan ini sebagai "Platform Product Spec" dan mengkaji semula setiap suku tahun merupakan amalan terbaik 2026.

Golden Path bukan dibuat sekali dan selesai. Ia adalah produk yang sentiasa hidup dan berubah dengan kemaskini versi bahasa, respons kerentanan, dan penerimaan polisi organisasi baharu. Sama ada anda mempunyai kesedaran ini atau tidak adalah penentu kematangan pelaksanaan Platform Engineering.

Mari selesaikan cabaran teknikal anda bersama.

KGA IT Solutions mempunyai pasukan pakar AI, awan dan DevOps untuk memberikan penyelesaian optimum bagi cabaran anda.

Hubungi Kami