بوابات المطورين مع Backstage
مقدمة إلى Backstage
3 دقيقة للقراءة
Backstage هو الإطار الرائد مفتوح المصدر لبناء بوابات المطورين، أنشأته Spotify أصلاً وهو الآن مشروع CNCF في مرحلة الحضانة. إنه الأساس الذي تختاره معظم المؤسسات عند بناء منصة المطور الداخلية.
لماذا Backstage؟
بنت Spotify منصة Backstage لحل مشكلة شائعة: مع مئات الخدمات المصغرة، كان المهندسون يقضون وقتاً طويلاً في البحث عن معلومات حول الخدمات والتوثيق والملاك. أصبح Backstage "نافذتهم الواحدة" لكل الهندسة.
قبل Backstage:
┌─────────────┬─────────────┬─────────────┐
│ Wiki │ GitHub │ Confluence │
├─────────────┼─────────────┼─────────────┤
│ PagerDuty │ Jira │ Slack │
├─────────────┼─────────────┼─────────────┤
│ Datadog │ Grafana │ Jenkins │
└─────────────┴─────────────┴─────────────┘
"أين أجد معلومات عن الخدمة X؟"
"من يملك هذا؟ هل يوجد توثيق؟"
بعد Backstage:
┌─────────────────────────────────────────┐
│ BACKSTAGE │
│ ┌─────────────────────────────────────┐│
│ │ الخدمة X ││
│ │ المالك: فريق Alpha ││
│ │ التوثيق: [رابط] | المناوبة: [رابط] ││
│ │ APIs: 3 | التبعيات: 5 ││
│ └─────────────────────────────────────┘│
│ كل شيء في مكان واحد │
└─────────────────────────────────────────┘
ميزات Backstage الأساسية
يوفر Backstage أربع قدرات أساسية:
| الميزة | الوصف | القيمة |
|---|---|---|
| كتالوج البرمجيات | سجل لجميع الخدمات وAPIs والموارد | معرفة ما يوجد |
| قوالب البرمجيات | بناء هيكلي للمشاريع الجديدة | إنشاء متسق |
| TechDocs | التوثيق كرمز | التوثيق حيث يبحث المطورون |
| الإضافات | بنية قابلة للتوسيع | دمج كل شيء |
نظرة عامة على البنية
لدى Backstage بنية من ثلاث طبقات:
┌─────────────────────────────────────────────────────────┐
│ الواجهة الأمامية │
│ (React SPA) │
│ ┌──────────┬──────────┬──────────┬──────────┐ │
│ │ الكتالوج │ المُنشئ │ TechDocs │ الإضافات │ │
│ │ UI │ UI │ UI │ UI │ │
│ └──────────┴──────────┴──────────┴──────────┘ │
├─────────────────────────────────────────────────────────┤
│ الواجهة الخلفية │
│ (Node.js + Express) │
│ ┌──────────┬──────────┬──────────┬──────────┐ │
│ │ الكتالوج │ المُنشئ │ TechDocs │ المصادقة │ │
│ │ API │ API │ API │ API │ │
│ └──────────┴──────────┴──────────┴──────────┘ │
├─────────────────────────────────────────────────────────┤
│ طبقة البيانات │
│ ┌──────────────────┬───────────────────────┐ │
│ │ PostgreSQL │ APIs خارجية │ │
│ │ (بيانات الكتالوج)│ (GitHub, K8s, إلخ) │ │
│ └──────────────────┴───────────────────────┘ │
└─────────────────────────────────────────────────────────┘
التثبيت
تشغيل Backstage محلياً:
# المتطلبات: Node.js 18+, Yarn 1.x
node --version # يجب أن يكون 18+
yarn --version # يجب أن يكون 1.x (Classic)
# إنشاء تطبيق Backstage جديد
npx @backstage/create-app@latest
# اتبع المطالبات:
# ? أدخل اسماً للتطبيق (مثال، acme-backstage)
# جاري إنشاء التطبيق...
# انتقل إلى مجلد التطبيق
cd acme-backstage
# البدء في وضع التطوير
yarn dev
# Backstage يعمل الآن على:
# الواجهة: http://localhost:3000
# الخلفية: http://localhost:7007
أساسيات التكوين
تكوين Backstage في app-config.yaml:
# app-config.yaml
app:
title: بوابة مطوري Acme
baseUrl: http://localhost:3000
organization:
name: شركة Acme
backend:
baseUrl: http://localhost:7007
listen:
port: 7007
database:
client: better-sqlite3
connection: ':memory:' # استخدم PostgreSQL للإنتاج
# المصادقة (مثال: GitHub)
auth:
environment: development
providers:
github:
development:
clientId: ${GITHUB_CLIENT_ID}
clientSecret: ${GITHUB_CLIENT_SECRET}
# مواقع الكتالوج (أين تجد ملفات catalog-info.yaml)
catalog:
import:
entityFilename: catalog-info.yaml
locations:
# بيانات المثال المحلية
- type: file
target: ../../examples/entities.yaml
# مؤسسة GitHub
- type: github-org
target: https://github.com/acme-corp
المفاهيم الرئيسية
فهم هذه المفاهيم ضروري:
# مفاهيم Backstage الأساسية
concepts:
entities:
description: "الأشياء المتتبعة في الكتالوج"
types:
- Component (الخدمات، المواقع، المكتبات)
- API (REST, GraphQL, gRPC)
- Resource (قواعد البيانات، الحاويات، الطوابير)
- System (مجموعة من المكونات)
- Domain (قدرة العمل)
- Group (الفريق)
- User (الشخص)
plugins:
description: "توسيع وظائف Backstage"
examples:
- kubernetes: "إظهار حالة البود"
- github-actions: "إظهار حالة CI/CD"
- pagerduty: "إظهار جدول المناوبة"
- techdocs: "عرض التوثيق"
templates:
description: "منشئات للمشاريع الجديدة"
actions:
- fetch:template
- publish:github
- catalog:register
في الدرس التالي، سنغوص عميقاً في كتالوج البرمجيات ونموذج الكيانات. :::