バックステージ: Spotify のオープンソース開発者ポータル
バックステージ および Spotify によって作成され、以下に寄付されたオープンソース プラットフォーム クラウド ネイティブ コンピューティング財団 (CNCF) 2020 年。今日の標準を表しています。 開発者ポータルと多くの組織が構築する基盤を構築するための事実上のツール 独自の内部開発者プラットフォーム (IDP)。
バックステージは、成長するあらゆる組織が直面する問題、つまり断片化を解決します。 ツールや情報のこと。数十のダッシュボード、Wiki、リポジトリをナビゲートする代わりに およびツールを使用すると、開発者はサービス カタログ、ドキュメント、 新しいプロジェクト、展開ステータス、パフォーマンス指標のテンプレート。
この記事では、Backstage のアーキテクチャ、そのコアコンポーネント、その構成方法について説明します。 カスタマイズする方法と、エコシステムと統合するためのカスタム プラグインを構築する方法について説明します。
何を学ぶか
- バックステージ アーキテクチャ: フロントエンド、バックエンド、データベース、プラグイン システム
- ソフトウェア カタログ: 組織のすべてのサービスをモデル化して管理する方法
- ソフトウェア テンプレート: ポータル経由で新しいサービスを構築する
- TechDocs: ポータルに統合されたコードとしてのドキュメント
- プラグイン開発: ツールを統合するためのカスタム プラグインを作成します。
- デプロイメント: Kubernetes、Docker Compose、実稼働構成
バックステージ建築
Backstage には、次の 3 つの主要コンポーネントに基づくモジュラー アーキテクチャがあります。
- フロントエンド(アプリ): ユーザー インターフェイスを提供するシングルページの React アプリケーション。テーマ、レイアウト、フロントエンドプラグインを通じて高度にカスタマイズ可能
- バックエンド: API、認証、データベース、バックエンド プラグイン オーケストレーションを処理する Node.js/Express サーバー
- プラグイン: 機能を追加する独立したモジュール。各プラグインにはフロントエンド コンポーネントやバックエンド コンポーネントがあります。エコシステムには、GitHub、Kubernetes、PagerDuty、Datadog などのツールを統合するための数百のプラグインがあります。
このプラグイン アーキテクチャは Backstage の真の強みです。これにより、機能を使い始めることができます。 プラットフォームを書き直すことなく、コアを作成し、統合を段階的に追加します。
# Backstage: configurazione app-config.yaml
app:
title: "Company Developer Portal"
baseUrl: https://backstage.company.io
organization:
name: "Company Inc."
backend:
baseUrl: https://backstage.company.io
listen:
port: 7007
database:
client: pg
connection:
host: ${POSTGRES_HOST}
port: ${POSTGRES_PORT}
user: ${POSTGRES_USER}
password: ${POSTGRES_PASSWORD}
auth:
environment: production
providers:
github:
production:
clientId: ${AUTH_GITHUB_CLIENT_ID}
clientSecret: ${AUTH_GITHUB_CLIENT_SECRET}
integrations:
github:
- host: github.com
token: ${GITHUB_TOKEN}
catalog:
import:
entityFilename: catalog-info.yaml
pullRequestBranchName: backstage-integration
rules:
- allow: [Component, System, API, Resource, Location, Template, Group, User]
locations:
- type: url
target: https://github.com/company/backstage-catalog/blob/main/all-components.yaml
- type: url
target: https://github.com/company/software-templates/blob/main/all-templates.yaml
ソフトウェア カタログ: バックステージの中心
Il ソフトウェアカタログ バックステージの中心的なコンポーネントです。そして一元化されたレジストリ
組織のすべてのソフトウェア コンポーネント: サービス、ライブラリ、API、インフラストラクチャ リソース、
ドキュメントとチーム。カタログ内の各エンティティは、という名前の YAML ファイルによって記述されます。
catalog-info.yaml これはコンポーネント リポジトリのルートにあります。
カタログは、いくつかのエンティティ タイプをサポートしています。
- 成分: サービス、ライブラリ、またはアプリケーション
- API: コンポーネント (REST、gRPC、GraphQL、イベント) によって公開されるインターフェイス
- システム: システムを形成するコンポーネントの論理グループ
- リソース: インフラストラクチャ リソース (データベース、S3 バケット、Kafka クラスター)
- グループ: チームまたは組織単位
- ユーザー: 組織内の個々のユーザー
# catalog-info.yaml: definizione di un servizio nel catalogo
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: checkout-service
description: "Servizio per la gestione del checkout e pagamenti"
annotations:
github.com/project-slug: company/checkout-service
backstage.io/techdocs-ref: dir:.
pagerduty.com/service-id: PXXXXXX
grafana/dashboard-selector: "checkout"
sonarqube.org/project-key: checkout-service
tags:
- typescript
- nestjs
- payments
links:
- url: https://checkout.company.io/api/docs
title: API Documentation
icon: docs
- url: https://grafana.company.io/d/checkout
title: Grafana Dashboard
icon: dashboard
spec:
type: service
lifecycle: production
owner: team-checkout
system: e-commerce
providesApis:
- checkout-api
consumesApis:
- payment-gateway-api
- inventory-api
dependsOn:
- resource:checkout-database
- resource:checkout-redis
---
apiVersion: backstage.io/v1alpha1
kind: API
metadata:
name: checkout-api
description: "REST API per operazioni di checkout"
spec:
type: openapi
lifecycle: production
owner: team-checkout
system: e-commerce
definition:
$text: ./openapi.yaml
ソフトウェア テンプレート: ポータルからのスキャフォールディング
I ソフトウェアテンプレート これらは Backstage の足場エンジンです。彼らは、 開発者は、新しいサービス、ライブラリ、またはインフラストラクチャ コンポーネントを直接作成できます。 開発者ポータル、組織のゴールデン パスに従っています。
典型的なフローは次のとおりです。
- 開発者はカタログからテンプレートを選択します (例: 「REST API マイクロサービス」)
- 要求された情報 (名前、チーム所有者、技術的オプション) をフォームに記入します。
- Backstage は、コード スキャフォールディング、GitHub リポジトリの作成、CI/CD セットアップ、カタログへの登録という一連の自動化されたステップを実行します。
- 数分以内に、開発者はすべてのベスト プラクティスが統合された実用的なサービスを手に入れることができます。
ソフトウェア テンプレートの影響
Backstage ソフトウェア テンプレートを採用した組織は、 最初のデプロイまでの時間は 75% です。以前は必要だった新しいマイクロサービス セットアップには 2 ~ 3 日かかりますが、CI/CD、モニタリング、ドキュメントを含めると 15 ~ 30 分で稼働します。
TechDocs: ポータルのドキュメント
技術資料 およびそれが実装する Backstage 統合ドキュメンテーション システム パラダイム コードとしてのドキュメント。ドキュメントはサービス リポジトリにあります Markdown ファイルとして自動的にコンパイルされ、開発者ポータルからアクセスできるようになります。
TechDocs の利点は次のとおりです。
- コロケーション: ドキュメントはコードとともに存在するため、コードとともに更新されます
- 発見可能性: すべてのドキュメントはポータル内の 1 つのポイントから検索可能です
- 標準化: すべての組織文書の統一フォーマット
- オートメーション: コンパイルと公開は CI/CD 経由で自動的に行われます
# mkdocs.yml: configurazione TechDocs per un servizio
site_name: Checkout Service
site_description: "Documentazione tecnica del servizio checkout"
nav:
- Home: index.md
- Architecture:
- Overview: architecture/overview.md
- Database Schema: architecture/database.md
- API Design: architecture/api-design.md
- Development:
- Getting Started: development/getting-started.md
- Local Setup: development/local-setup.md
- Testing: development/testing.md
- Operations:
- Deployment: operations/deployment.md
- Monitoring: operations/monitoring.md
- Runbook: operations/runbook.md
- ADR:
- 001 - Database Choice: adr/001-database-choice.md
- 002 - Cache Strategy: adr/002-cache-strategy.md
plugins:
- techdocs-core
markdown_extensions:
- admonition
- codehilite
- pymdownx.superfences
- pymdownx.tabbed
プラグイン開発
バックステージの真の力は、 プラグインエコシステム。数百に加えて コミュニティ プラグインを使用すると、各組織がカスタム プラグインを作成して独自のツールを統合できます 内部、ダッシュボード、ワークフロー。
Backstage プラグインには通常、次のものが含まれます。
- フロントエンドプラグイン: ページ、カード、またはタブをインターフェイスに追加する React コンポーネント
- バックエンドプラグイン: フロントエンドが使用する API とサーバー側のロジック
- 共通パッケージ: フロントエンドとバックエンド間で共有される TypeScript のタイプ、インターフェイス、ユーティリティ
エコシステム内で最も人気のあるプラグインには、Kubernetes (ポッドの視覚化とデプロイメント)、 GitHub Actions (ワークフローステータス)、PagerDuty (オンコールおよびインシデント)、Grafana (埋め込みダッシュボード)、 SonarQube (コード品質)、および Cost Insights (クラウド コスト分析)。
バックステージでの展開
Backstage は、組織のニーズに応じて、いくつかの方法で導入できます。
- Kubernetes: Helm チャートまたはカスタム マニフェストを使用した推奨される運用方法
- Docker Compose: ローカル開発および小規模チームに最適
- ローディ: インフラストラクチャを管理したくない人向けの Backstage の SaaS マネージド バージョン
# Kubernetes deployment: Helm values per Backstage
backstage:
image:
registry: ghcr.io
repository: company/backstage
tag: latest
replicas: 2
resources:
requests:
cpu: 500m
memory: 512Mi
limits:
cpu: 1000m
memory: 1Gi
extraEnvVars:
- name: POSTGRES_HOST
valueFrom:
secretKeyRef:
name: backstage-db-credentials
key: host
- name: GITHUB_TOKEN
valueFrom:
secretKeyRef:
name: backstage-github-token
key: token
ingress:
enabled: true
host: backstage.company.io
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
tls:
- secretName: backstage-tls
hosts:
- backstage.company.io
postgresql:
enabled: true
auth:
database: backstage
username: backstage
primary:
persistence:
size: 10Gi
実践的なアドバイス
最小限の Backstage インストールから開始します: ソフトウェア カタログ + TechDocs + 2 ~ 3 つの必須プラグイン (GitHub、Kubernetes、監視ツール)。フィードバックに基づいてプラグインを段階的に追加します 開発者の。開始時にポータルが複雑すぎると、役立つどころか混乱する危険があります。







