LESSON 30分

ストーリー

田中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-kubernetesPodの状態表示、ログ
CI/CD@backstage/plugin-github-actionsビルドステータス、デプロイ履歴
監視@backstage-community/plugin-datadogメトリクス、ダッシュボード
コストplugin-cost-insightsクラウドコスト可視化
セキュリティplugin-security-insights脆弱性情報
API@backstage/plugin-api-docsOpenAPI仕様の表示
Argo CD@roadiehq/backstage-plugin-argo-cdデプロイ状況
PagerDuty@pagerduty/backstage-pluginオンコール情報

catalog-info.yaml の設計

エンティティの種類

エンティティ説明
Componentソフトウェアコンポーネント(サービス)payment-service
API公開されているAPIpayment-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

認証とアクセス管理

認証プロバイダ

プロバイダ用途設定
GitHubGitHub組織のメンバー認証OAuth App
GoogleGoogle Workspace認証OAuth 2.0
OktaエンタープライズSSOSAML/OIDC
Azure ADMicrosoft環境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


まとめ

ポイント内容
BackstageSpotify発のOSS IDPフレームワーク(CNCF Incubating)
プラグインシステム700以上のプラグインで機能を拡張
catalog-info.yaml各リポジトリに配置し、サービスのメタデータを定義
認証GitHub、Google、Okta等のプロバイダに対応

チェックリスト

  • Backstageのアーキテクチャ(Frontend + Backend + DB)を説明できる
  • 主要なプラグインの種類と用途を理解した
  • catalog-info.yamlのエンティティ定義を記述できる
  • 認証設定と運用方法を理解した

次のステップへ

次は「サービスカタログの設計」を学びます。組織のすべてのサービスを一元管理するカタログの設計方法を身につけましょう。


推定読了時間: 30分