跳到主要内容

Backstageの中核コンセプト

Backstageの概要で全体像を掴んだうえで、本ドキュメントでは Backstage を運用・拡張する前に開発者が共通理解として持つべき中核概念を解説します。


1. Software Catalog

Software Catalog(ソフトウェアカタログ) は Backstage の心臓部です。組織内のすべてのソフトウェア(サービス・API・ライブラリ・インフラ・所有者)を Entity(エンティティ) という単位で一元管理します。

カタログへの取り込みフロー

カタログは、各リポジトリに置かれた catalog-info.yaml を起点にデータを取り込みます。

  • Entity Provider — どこから Entity を取得するか(GitHub の特定 org、静的ファイル等)を定義する。
  • Processor — 取り込んだ Entity を検証し、annotations の解決や Entity 間の関係(リレーション)を構築する。
  • 取り込みは定期的に再実行され、catalog-info.yaml の変更が反映される。

2. Entityモデル(Kind)

すべての Entity は kind(種別) を持ちます。代表的な Kind は以下の通りです。

Kind意味
Componentデプロイ・実行可能なソフトウェアの単位マイクロサービス、Webアプリ、ライブラリ
APIComponent が公開/利用するインターフェースREST、gRPC、GraphQL
ResourceComponent が依存するインフラデータベース、ストレージ、キュー
System関連する Component / API / Resource のまとまり「決済システム」
DomainSystem を束ねる上位のビジネス領域「EC事業」
Groupチーム・組織単位「決済チーム」
User個人開発者アカウント
Location他の Entity の供給元を指す特殊な Kindcatalog-info.yaml の置き場所

Entity 間の関係(リレーション)

Entity は互いに関係を持ち、依存関係やオーナーシップをグラフとして可視化できます。

主なリレーション: ownerOf / ownedBypartOf / hasPartdependsOn / dependencyOfprovidesApi / consumesApi


3. catalog-info.yaml の書き方

catalog-info.yaml は各リポジトリのルートに配置する、Entity を定義するファイルです。

apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: payment-api
namespace: default
description: 決済処理を担うマイクロサービス
tags:
- dotnet
- payments
annotations:
github.com/project-slug: my-org/payment-api
backstage.io/techdocs-ref: dir:.
backstage.io/kubernetes-id: payment-api
links:
- url: https://dashboards.example.com/payment
title: 運用ダッシュボード
spec:
type: service
lifecycle: production
owner: group:payment-team
system: payment-system
providesApis:
- payment-rest-api
dependsOn:
- resource:payments-db

主要フィールド

フィールド役割
metadata.nameEntity の一意な名前(必須)
metadata.namespace名前空間。省略時は default
metadata.annotations外部システム連携のキー(GitHub、TechDocs、Kubernetes 等)
metadata.tags検索・絞り込み用のタグ
spec.typeComponent の種類(service / website / library 等)
spec.lifecycleライフサイクル(experimental / production / deprecated)
spec.ownerオーナー(Group または User)— オーナーシップの要
annotations が連携の鍵

annotations は各プラグインが外部システムと紐付くためのキーです。例えば backstage.io/kubernetes-id を付けると Kubernetes プラグインが該当 Pod を表示します。詳細はプラグインの使い方を参照。


4. TechDocs(docs-as-code)

TechDocs は、ドキュメントをコードと同じリポジトリで管理する docs-as-code の仕組みです。

  • MkDocs をベースに、Markdown から静的サイトを生成する。
  • mkdocs.ymldocs/ ディレクトリをリポジトリに置き、catalog-info.yamlbackstage.io/techdocs-ref アノテーションで紐付ける。
  • 生成された HTML は S3 / Azure Blob などのストレージに保存し、Backstage から配信する(本番推奨構成)。

ドキュメントがコードと同じ場所・同じレビューフローで更新されるため、陳腐化しにくいのが利点です。


Search はカタログ・TechDocs・その他プラグインのコンテンツを横断的に検索する機能です。

検索バックエンド用途
Lucene(インメモリ)開発・小規模。設定不要だが再起動で消える
PostgreSQL中規模。既存DBを流用できる
Elasticsearch / OpenSearch大規模・高機能。本番推奨

検索対象は Collator によってインデックス化され、定期的に更新されます。


6. 認証・認可・権限

認証(Authentication)

Backstage は外部 IdP と連携してユーザーを認証します。

  • 対応プロバイダ例: OIDC、GitHub、GitLab、Google、Microsoft Entra ID など。
  • 認証で得た ID は、カタログ上の User / Group Entity とマッピングされ、オーナーシップ表示などに使われる。

関連: OAuth / OpenID ConnectBearer 認証

認可(Permission Framework)

Permission Framework により、「誰がどの Entity を編集できるか」「どのテンプレートを実行できるか」といったアクセス制御をポリシーとして定義できます。

  • ポリシーはコード(TypeScript)で記述する。
  • ロールベース(例: オーナーのみ編集可)の制御が可能。

7. データ永続化

環境データベース備考
開発SQLite(インメモリ可)設定不要・再起動で消える
本番PostgreSQL必須。カタログ・権限・各プラグインのデータを保持

バックアップ対象は PostgreSQLTechDocs ストレージ です。運用詳細はBackstageの運用を参照してください。


ベストプラクティス

  • Entity 命名規則・namespace 設計 — 命名規則を最初に決め、衝突や混乱を防ぐ。
  • オーナーシップ必須化spec.owner のない Entity を許可しない運用ルールを設け、カタログ品質を担保する。
  • annotations の標準化 — 連携に使うアノテーションをテンプレートで自動付与し、記述漏れを防ぐ(Software Templates参照)。

参考リンク