PR

さよなら、カオスな開発環境:Spotify製「Backstage」で実現する社内開発者プラットフォーム(IDP)構築入門

さよなら、カオスな開発環境:Spotify製「Backstage」で実現する社内開発者プラットフォーム(IDP)構築入門

はじめに

マイクロサービスの乱立、マルチクラウド化、そして無数に増え続ける開発ツール…。現代のソフトウェア開発現場は、かつてないほど複雑化しています。

「あのサービスのドキュメントはどこだっけ?」
「新しいマイクロサービスを立ち上げるための手順書は?」
「本番環境のCI/CDパイプラインは誰が管理してる?」

このような無数の問いに、開発者の貴重な時間と集中力が奪われていく——。この「認知負荷の増大」こそが、現代の開発組織が直面する最も深刻な生産性のボトルネックです。

この課題を解決するために生まれたのが、「Platform Engineering」という新しい潮流であり、その中核をなすのが「社内開発者プラットフォーム(Internal Developer Platform, IDP)」です。

この記事では、IDP構築のデファクトスタンダードとしてCNCFのIncubatingプロジェクトにも認定されているSpotify製OSS「Backstage」を取り上げ、その基本概念から、実際にあなたのローカルマシンでその価値を体験するまでの具体的な手順を解説します。

1. なぜ今、Platform EngineeringとIDPが求められるのか?

Platform Engineeringは、DevOpsの進化形とも言える考え方です。DevOpsが開発(Dev)と運用(Ops)の連携を目指したのに対し、Platform Engineeringは、プラットフォームチームが提供するIDPを通じて、開発者がセルフサービスでインフラやツールを利用できる世界を目指します。

  • 開発者体験(Developer Experience, DX)の向上: 開発者はインフラの複雑さを意識することなく、IDPという統一されたインターフェースを通じて、必要なリソースを迅速かつ簡単に入手できます。
  • 「ゴールデンパス」の提供: プラットフォームチームは、組織のベストプラクティス(セキュリティ、コンプライアンス、CI/CDなど)が組み込まれた「推奨ルート(ゴールデンパス)」をIDP上で提供。開発者はこのパスを通るだけで、自然と標準化された安全な開発が可能になります。
  • 認知負荷の劇的な削減: あらゆるツール、ドキュメント、サービスの情報がIDPに集約されるため、開発者は「探す」時間から解放され、本来の目的である「価値あるソフトウェアを作ること」に集中できます。

2. Backstageとは何か?開発者ポータルの3つのコア機能

Backstageは、このIDPを構築するためのフレームワークです。その中心には3つの強力な機能があります。

  1. Software Catalog(ソフトウェアカタログ): 組織内に存在する全てのソフトウェア資産(マイクロサービス、ライブラリ、Webサイト、データパイプライン等)のメタデータを一元管理する「地図」です。誰がオーナーで、どのAPIを提供し、どのリソースに依存しているのかが一目瞭然になります。
  2. Software Templates(ソフトウェアテンプレート): 新しいプロジェクトを、ベストプラクティスが詰め込まれたテンプレートから数クリックで生成する機能です。リポジトリの作成、CI/CDパイプラインの設定、定型コードの生成などを自動化します。
  3. TechDocs(テックドキュメント): 「Docs-like-code」のアプローチで、ドキュメントをMarkdown形式でコードと一緒にGit管理し、BackstageのUI上で美しく表示します。ドキュメントが陳腐化する問題を解決します。

これらに加え、豊富なプラグイン機構により、GitHub Actionsの実行状況、Kubernetesクラスタの状態、Datadogのダッシュボードなど、あらゆる開発ツールをBackstageの画面に統合できます。

3. 【実践】Backstageをローカルで動かしてみよう

百聞は一見に如かず。Backstageの強力なコンセプトを体験してみましょう。

ステップ1: 前提条件の確認

  • Node.js (v18推奨)
  • Yarn (v1)
  • Docker
  • Git

ステップ2: Backstageアプリの作成

ターミナルで以下のコマンドを実行します。対話形式でアプリ名などを聞かれますので、適宜入力してください。

npx @backstage/create-app

これにより、my-backstage-appのようなディレクトリが作成され、必要なパッケージがインストールされます。

ステップ3: ローカルサーバーの起動

作成されたディレクトリに移動し、開発サーバーを起動します。

cd my-backstage-app
yarn dev

しばらく待つと、フロントエンド(デフォルト: http://localhost:3000)とバックエンド(デフォルト: http://localhost:7007)が起動します。ブラウザで http://localhost:3000 を開いてみましょう。

ステップ4: UIの探索

Backstageのダッシュボードが表示されたはずです。左のメニューからCatalog, Docs, Create...などをクリックし、どのような機能があるか自由に探索してみてください。デフォルトでサンプルコンポーネントが登録されているのが分かります。

4. Backstageをカスタマイズする初めの一歩

次に、あなたの環境に合わせてBackstageを少しだけカスタマイズしてみましょう。

4.1 GitHub上の既存リポジトリをCatalogに登録する

  1. Backstageに登録したいGitHubリポジトリのルートに、catalog-info.yamlという名前でファイルを作成します。

    yaml:catalog-info.yaml
    apiVersion: backstage.io/v1alpha1
    kind: Component
    metadata:
    name: my-awesome-service
    description: 私の素晴らしいサービス
    annotations:
    github.com/project-slug: your-org/your-repo # あなたのリポジトリ名
    spec:
    type: service
    lifecycle: experimental
    owner: user:default/guest # 所有者

  2. Backstageのapp-config.yamlファイルに、GitHubインテグレーションの設定を追加します。

    yaml:app-config.yaml
    integrations:
    github:
    - host: github.com
    token: ${GITHUB_TOKEN} # GitHubのPersonal Access Token

  3. BackstageのUIから Create... -> Register Existing Component を選択し、catalog-info.yamlへのURL(例: https://github.com/your-org/your-repo/blob/main/catalog-info.yaml)を入力します。これで、あなたのサービスがカタログに登録されます。

4.2 Software Templateから新しいアプリを作成する

Backstageの真価はテンプレート機能にあります。Create...メニューから、サンプルとして登録されている「React SSR Template」などを選んでみましょう。リポジトリ名などを入力して進めると、GitHub上に新しいリポジトリが作成され、CI/CDパイプライン(GitHub Actions)まで自動で設定されます。

5. 本番導入に向けた考慮事項

ローカルでの検証後、組織で本格的に利用するには、以下のような設定が必要になります。

  • 認証 (Auth): GitHub, GitLab, Oktaなど、組織で利用している認証プロバイダーと連携し、アクセス制御を行います。
  • データベース: デフォルトのSQLiteから、PostgreSQLなどのより堅牢なデータベースに変更します。
  • 段階的な導入: 最初から全ての機能を導入しようとせず、まずは「Software Catalog」で組織のソフトウェア資産を可視化することから始めるのが成功への近道です。

まとめ

Backstageは、単なるツールやダッシュボードではありません。それは、開発者中心の文化を醸成し、複雑化する一方の開発環境に秩序と生産性をもたらすための、強力なプラットフォームです。

DevOpsが開発と運用の壁を取り払ったように、Platform Engineeringはプラットフォームチームと開発者の間の壁を取り払い、よりスムーズで効率的な開発フローを実現します。

この記事を参考に、ぜひあなたの手元でBackstageを動かし、その強力なコンセプトと未来の可能性を体験してみてください。それが、あなたのチームや組織の開発者体験を向上させる、大きな一歩となるはずです。

コメント

タイトルとURLをコピーしました