أساسيات هندسة المنصات
المسارات الذهبية والطرق الممهدة
3 دقيقة للقراءة
تسميها Netflix "الطرق الممهدة". وتسميها Spotify "المسارات الذهبية". المفهوم واحد: طرق موجّهة ومدعومة جيداً لبناء ونشر البرمجيات تجعل الطريق الصحيح هو الطريق السهل.
ما هو المسار الذهبي؟
المسار الذهبي هو سير عمل محدد مسبقاً ومعتمد من المؤسسة يوجه المطورين من الفكرة إلى الإنتاج باستخدام أفضل الممارسات والأدوات المعتمدة وحواجز الحماية الآلية.
الفكرة الرئيسية: يمكن للمطورين الذهاب "خارج الطريق"، لكن المسار الذهبي سهل جداً لدرجة أن معظمهم يختار البقاء عليه.
التطوير خارج الطريق:
┌─────────────────────────────────────────────┐
│ اختيار اللغة → اختيار الإطار → │
│ إعداد CI/CD → تكوين الأمان → │
│ النشر في مكان ما → أتمنى أن يعمل │
│ │
│ الوقت: أيام إلى أسابيع │
│ الاتساق: منخفض │
│ الدعم: "أنت وحدك" │
└─────────────────────────────────────────────┘
تطوير المسار الذهبي:
┌─────────────────────────────────────────────┐
│ 1. انقر "إنشاء خدمة جديدة" │
│ 2. اختر القالب (Node.js API، إلخ) │
│ 3. املأ: الاسم، المالك، الوصف │
│ 4. انقر "إنشاء" │
│ │
│ الوقت: 5 دقائق │
│ الاتساق: عالي │
│ الدعم: فريق المنصة يدعمك │
└─────────────────────────────────────────────┘
مكونات المسار الذهبي
يتضمن المسار الذهبي الكامل:
# تعريف المسار الذهبي
apiVersion: platform.io/v1
kind: GoldenPath
metadata:
name: nodejs-api-golden-path
spec:
# ما ينشئه هذا المسار
output:
type: "Node.js REST API"
includes:
- "هيكل Express.js"
- "تكوين TypeScript"
- "إعداد اختبارات Jest"
- "Dockerfile (بناء متعدد المراحل)"
- "بيانات Kubernetes"
- "GitHub Actions CI/CD"
- "إدخال كتالوج Backstage"
# التكاملات المكونة مسبقاً
integrations:
monitoring:
- prometheus-metrics
- opentelemetry-tracing
security:
- snyk-scanning
- trivy-container-scan
secrets:
- vault-integration
# حواجز الحماية (تُطبق تلقائياً)
guardrails:
- "لا أسرار في الكود (Gitleaks)"
- "الصورة الأساسية يجب أن تكون معتمدة"
- "يجب أن يكون لها نقاط نهاية صحية"
- "يجب أن يكون لها حدود موارد"
# التوثيق
documentation:
- "دليل البدء"
- "سجلات قرارات الهندسة"
- "قوالب كتب التشغيل"
بناء قالب مسار ذهبي
إليك قالب Backstage حقيقي لمسار ذهبي:
# قالب برمجيات Backstage
apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
name: nodejs-api-template
title: Node.js REST API (المسار الذهبي)
description: |
إنشاء Node.js REST API جاهز للإنتاج مع جميع
تكاملات المنصة مكونة مسبقاً.
tags:
- nodejs
- api
- golden-path
spec:
owner: platform-team
type: service
parameters:
- title: معلومات الخدمة
required:
- name
- owner
properties:
name:
title: اسم الخدمة
type: string
pattern: "^[a-z0-9-]+$"
description: "أحرف صغيرة، أبجدية رقمية مع شرطات"
owner:
title: المالك
type: string
ui:field: OwnerPicker
description:
title: الوصف
type: string
- title: البنية التحتية
properties:
database:
title: هل تحتاج قاعدة بيانات؟
type: boolean
default: false
databaseType:
title: نوع قاعدة البيانات
type: string
enum:
- postgresql
- mysql
ui:options:
hidden: "{{ not parameters.database }}"
steps:
# الخطوة 1: جلب هيكل القالب
- id: fetch-base
name: جلب القالب الأساسي
action: fetch:template
input:
url: ./skeleton
values:
name: ${{ parameters.name }}
owner: ${{ parameters.owner }}
# الخطوة 2: إنشاء مستودع GitHub
- id: publish
name: إنشاء المستودع
action: publish:github
input:
repoUrl: github.com?owner=acme&repo=${{ parameters.name }}
defaultBranch: main
# الخطوة 3: التسجيل في الكتالوج
- id: register
name: التسجيل في الكتالوج
action: catalog:register
input:
repoContentsUrl: ${{ steps.publish.output.repoContentsUrl }}
catalogInfoPath: /catalog-info.yaml
# الخطوة 4: توفير قاعدة البيانات إذا لزم الأمر
- id: provision-db
name: توفير قاعدة البيانات
if: ${{ parameters.database }}
action: crossplane:create-claim
input:
claimType: AppDatabase
claimName: ${{ parameters.name }}-db
parameters:
engine: ${{ parameters.databaseType }}
size: small
output:
links:
- title: المستودع
url: ${{ steps.publish.output.remoteUrl }}
- title: الخدمة في الكتالوج
url: ${{ steps.register.output.entityRef }}
شجرة قرارات المسار الذهبي
ساعد المطورين في اختيار المسار الصحيح:
┌──────────────────┐
│ ماذا تبني؟ │
│ │
└────────┬─────────┘
┌───────────────┼───────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ REST API │ │ واجهة │ │ عامل │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ Node.js │ │ React │ │ Python │
│ أو Go? │ │ أو Vue? │ │ أو Go? │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
▼ ▼ ▼
[nodejs-api] [react-app] [python-worker]
قالب قالب قالب
قياس نجاح المسار الذهبي
تتبع التبني والرضا:
# مقاييس المسار الذهبي
metrics:
adoption:
- name: "معدل استخدام القوالب"
query: |
count(services where template != null) /
count(all_services) * 100
target: "> 90%"
- name: "الخدمات خارج المسار"
query: "count(services where template == null)"
target: "< 10%"
efficiency:
- name: "الوقت للنشر الأول"
golden_path: "< ساعة واحدة"
off_path: "3-5 أيام"
- name: "وقت الإعداد"
golden_path: "< يوم واحد"
off_path: "2-4 أسابيع"
quality:
- name: "معدل نجاح فحص الأمان"
golden_path: "99%"
off_path: "75%"
- name: "معدل الحوادث"
golden_path: "أقل 2x"
description: "مقارنة بالخدمات خارج المسار"
مبدأ "المسار السهل = المسار الصحيح"
الهدف هو جعل اتباع أفضل الممارسات أسهل من عدم اتباعها:
| الجانب | خارج المسار (صعب) | المسار الذهبي (سهل) |
|---|---|---|
| إعداد CI/CD | تكوين من الصفر | مكون مسبقاً |
| فحص الأمان | تكامل يدوي | تلقائي |
| المراقبة | إيجاد الأدوات، التكوين | مدمج |
| التوثيق | كتابة من الصفر | مُولّد |
| النشر | اكتشاف K8s | نقرة واحدة |
"اجعل حفرة النجاح هي الافتراضي."
في الوحدة التالية، سنغوص في Backstage—أشهر بوابة مطورين لبناء هذه المسارات الذهبية. :::