How We Migrated Over 1000 Services to Backstage Using GitOps and Survived to Talk About It!
Backstage関連セッション、4/20は以これ1つのみです。こちらに参加してきました。
会場の雰囲気
セッション会場は500人〜600人が着席できると思われましたが満席、さらに100人程度の立ち見が出る状態です。 それでもまだ100人程度入り口で並んでいましたがおそらく入れなかったように思います。
それだけ注目度が高かったことが伺えます。
セッション内容
発表者の方の組織では、組織/アプリケーションが拡大するにつれて、内部の開発/実行/運用環境も寄せ集め状態となり、成長の度合いとは反比例し、効率が低下しコストも上昇していったそうです。これに伴いPlatform Teamが編成されました。
Platform Teamが目指した姿は以下の6つです。
- Auditable
- Declarative
- Single Source of Truth
- Community Driven
- Self Service
- Visibility
これらを実現するためにまずGitOpsを実践しました。実行環境はTerraformを利用してIaC化を行いました。また、アプリケーションコードに近い形で実行環境の定義をMetadeta化し情報を定義することでさまざまな環境を自動的にデプロイできるようにしました。
これにより
- Auditable
- Declarative
- Single Source of Truth
- Community Driven
の4項目は実現できましたがまだ不十分です。残る項目は
- Self Service
- Visibility
の2つです。Visibilityに関しては「他チームのサービスをどうやって見つけたらよいか」「誰がそのコード/サービスのオーナーなのか」「サービスのコンシューマーは誰か」「そのサービスの依存関係にある他のサービスは何か」といったことをわかるようにすることを目的としています。
これについてはInternal Developer Portal(IDP)を導入することを決め、そのツールとしてBackstageを選択しました。 Visibilityに関する機能はBackstageのメインの機能で提供されてるService Catalogや検索機能そのものです。
(Backstageの主要機能については本ブログでも取り上げたことがありますのでそちらを御覧ください)
またSelf Serviceという点では、1つはコードとしてのドキュメンテーションです。BackstageではTechDocsというMarkdownを取り込む機能がありますのでこちらで実現できます。また、Software Template機能を用いて利用者が用意されたテンプレートからコードを生成することで実現できました。
こうした機能を活用して、One stop shop for all を実現しました。
さらに独自のPluginを開発し、TerraformのState情報などから自動的にリソースカタログ情報をBackstageに取り込む機能を開発しました。これによりアプリケーション開発者が意識することなくBackstageに登録されるようになり、負担感なくBackstageを利用できるようにしています。さらに、実行環境の情報(例えばAWS LamdbaやS3 Bucketの情報など)もBackstageで表示できるようにし、 One stop shop for all をより高度に実現しました。
発表者の方々はPlatform Teamという立ち位置で、組織内のアプリケーション開発者に開発・実行環境を提供する役割です。まさに アプリケーション開発者を顧客と考えたPlatform as a Product を実践し、アプリケーション開発者が負担を感じることなく、Platform Teamが提供している各種サービスやテンプレートをいつでもできるようになり、効率があがっていったということです。
こうした機能が実現できたのも、BackstageがPluginにより拡張可能な状態になっていることが大きな理由です。Backstageはそれぞれの組織に適した開発者ポータル/プラットフォームを作るためのものです。Software Catalogなど少数の機能を除けばPlugiinでその機能を拡張し、それぞれの組織が自分たちにあったIDPを作成することが成功の要因のようです。
以上がセッションの概要となります。まさにPlatform Engineeringの典型的な事例だったように思います。
さいごに
私たちはPlatform Engineering、そしてIDPとしてのBackstageに注目しており、これまでもこのブログでも様々な形で取り上げさせて頂いています。こちらもぜひご覧ください。
私たちはAzure・AKSなどのクラウドネイティブ技術を活用した内製化のご支援をしております。 Platform Engineering/Backstage導入支援もこうした内製化支援の一部と考えております。ぜひお声がけください。
また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。