ストーリー
田
田中VPoE
IDPの全体像を理解した。CloudOps社ではBackstageを採用する。Backstageの具体的な導入方法を学ぼう
あなた
BackstageはSpotifyが開発したOSSですよね。CNCFのIncubatingプロジェクトだと聞いています
あ
田
田中VPoE
そうだ。Spotifyが社内で2000以上のマイクロサービスを管理するために開発し、2020年にOSS化した。現在は数百の企業が採用している。プラグインエコシステムが充実しているのが最大の強みだ
田
田中VPoE
Backstage本体はフレームワークだ。サービスカタログ、テンプレート、TechDocsが標準機能として含まれるが、Kubernetes連携、CI/CD連携、Datadog連携等はプラグインとして追加する。CloudOps社の要件に合わせてカスタマイズする
Backstageのアーキテクチャ
コア構成
Backstage のアーキテクチャ:
Frontend(React SPA):
├── @backstage/core-components # 共通UIコンポーネント
├── @backstage/plugin-catalog # サービスカタログUI
├── @backstage/plugin-scaffolder # テンプレートUI
├── @backstage/plugin-techdocs # ドキュメントUI
└── カスタムプラグイン # 独自機能
Backend(Node.js):
├── @backstage/backend-core # バックエンドフレームワーク
├── Catalog Backend # サービスカタログAPI
├── Scaffolder Backend # テンプレート実行エンジン
├── TechDocs Backend # ドキュメントビルダー
├── Auth Backend # 認証(OAuth、SAML等)
└── カスタムバックエンドプラグイン
Database:
└── PostgreSQL # メタデータストア
主要プラグイン
| カテゴリ | プラグイン | 用途 |
|---|
| Kubernetes | @backstage/plugin-kubernetes | Podの状態表示、ログ |
| CI/CD | @backstage/plugin-github-actions | ビルドステータス、デプロイ履歴 |
| 監視 | @backstage-community/plugin-datadog | メトリクス、ダッシュボード |
| コスト | plugin-cost-insights | クラウドコスト可視化 |
| セキュリティ | plugin-security-insights | 脆弱性情報 |
| API | @backstage/plugin-api-docs | OpenAPI仕様の表示 |
| Argo CD | @roadiehq/backstage-plugin-argo-cd | デプロイ状況 |
| PagerDuty | @pagerduty/backstage-plugin | オンコール情報 |
catalog-info.yaml の設計
エンティティの種類
| エンティティ | 説明 | 例 |
|---|
| Component | ソフトウェアコンポーネント(サービス) | payment-service |
| API | 公開されているAPI | payment-api(OpenAPI) |
| Resource | インフラリソース | payment-db(PostgreSQL) |
| System | 関連するコンポーネントのグループ | payment-system |
| Domain | ビジネスドメイン | payments |
| Group | チーム・組織 | payment-team |
| User | 個人 | tanaka |
catalog-info.yaml の例
# payment-service/catalog-info.yaml
apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
name: payment-service
description: "決済処理マイクロサービス"
tags:
- typescript
- nestjs
- production
annotations:
github.com/project-slug: cloudops/payment-service
backstage.io/techdocs-ref: dir:.
datadoghq.com/service-name: payment-service
argocd/app-name: payment-service
pagerduty.com/service-id: P1234567
links:
- url: https://payment.api.cloudops.io/docs
title: API Documentation
icon: docs
- url: https://app.datadoghq.com/dashboard/xxx
title: Datadog Dashboard
icon: dashboard
spec:
type: service
lifecycle: production
owner: payment-team
system: payment-system
providesApis:
- payment-api
consumesApis:
- user-api
- notification-api
dependsOn:
- resource:payment-db
- resource:payment-redis
---
apiVersion: backstage.io/v1alpha1
kind: API
metadata:
name: payment-api
description: "Payment Service REST API"
spec:
type: openapi
lifecycle: production
owner: payment-team
system: payment-system
definition:
$text: ./openapi.yaml
---
apiVersion: backstage.io/v1alpha1
kind: Resource
metadata:
name: payment-db
description: "Payment Service PostgreSQL Database"
spec:
type: database
owner: payment-team
system: payment-system
認証とアクセス管理
認証プロバイダ
| プロバイダ | 用途 | 設定 |
|---|
| GitHub | GitHub組織のメンバー認証 | OAuth App |
| Google | Google Workspace認証 | OAuth 2.0 |
| Okta | エンタープライズSSO | SAML/OIDC |
| Azure AD | Microsoft環境 | OIDC |
Backstageの権限モデル
# app-config.yaml の認証設定例
auth:
environment: production
providers:
github:
production:
clientId: ${GITHUB_CLIENT_ID}
clientSecret: ${GITHUB_CLIENT_SECRET}
permission:
enabled: true
# チーム単位のアクセス制御
# Component の編集は owner のみ
# テンプレートの実行は全開発者
# 管理機能はプラットフォームチームのみ
Backstageの運用
デプロイ方法
| 方法 | メリット | デメリット |
|---|
| Kubernetes(Helm) | 本番向け、スケーラブル | 設定が多い |
| Docker Compose | 開発・検証向け、手軽 | スケーラビリティに制限 |
| ECS Fargate | サーバーレス、運用負荷低 | プラグインの制約 |
メンテナンスの考慮点
| 項目 | 頻度 | 内容 |
|---|
| Backstage本体のアップデート | 月1回 | セキュリティパッチ、新機能 |
| プラグインのアップデート | 月1回 | 互換性の確認 |
| catalog-info.yamlの更新 | 常時 | 各チームが自分のサービス情報を更新 |
| ドキュメントのビルド | Gitプッシュ時 | TechDocsの自動ビルド |
「Backstageの導入で最も重要なのは、catalog-info.yamlの品質だ。情報が古ければIDPの価値はゼロになる。各チームが自分のサービス情報を最新に保つ文化を作ることが成功の鍵」 — 田中VPoE
まとめ
| ポイント | 内容 |
|---|
| Backstage | Spotify発のOSS IDPフレームワーク(CNCF Incubating) |
| プラグインシステム | 700以上のプラグインで機能を拡張 |
| catalog-info.yaml | 各リポジトリに配置し、サービスのメタデータを定義 |
| 認証 | GitHub、Google、Okta等のプロバイダに対応 |
チェックリスト
次のステップへ
次は「サービスカタログの設計」を学びます。組織のすべてのサービスを一元管理するカタログの設計方法を身につけましょう。
推定読了時間: 30分