はじめに
2024年4月19日、Backstage v1.26.1、v1.26.2、 v1.26.3が続けて公開されました。これらのリリースの一番のポイントは多くのPluginsのcommunity-plugins repository移行です。
リポジトリ移行の背景
実はこのリポジトリ移行については2023年11月にシカゴで行われたKubeConで公開されていた情報になります。
ご存知の方も多いかと思いますが、BackstageはMonoRepo形式を採用しています。本体を含むこのMonoRepoに多くのContributorが開発したPluginを統合して管理してきました。おそらくBackstageが初期の公開から一定数が利用するまでの初期拡大期には、メインのリポジトリにPuginsが統合していることで管理の容易さや認知向上に繋がり非常に効果があったのだと思います。
しかし利用者も増加し、次第に状況は変わってきました。 2023年11月のセッションや今回のリリースで公開されたドキュメントにも記載されている通り、負の面が顕在化します。 それぞれのPluginのオーナーシップが不明確になり、修正が行われなかったり、Pluginそのものの機能改善も行われていないという状況も見られるようになりました。
開発初期で基本設計自体の変更が多い場合はMonoRepoを採用し利点が上回っていたものの、Backstageも安定・拡大期に入っており、MonoRepoのマイナス面であるオーナーシップやメンテナンス容易性の低下という側面が大きくなってきた、ということでオーナーシップやメンテナンス容易性を担保するために community-repositoryにPluginを移行することを決定し、今回実施されたということになります。
repositoryの移行にあわせてこれらのPluginの npm packageのscopeを @backstage
から@backstage-community
に変更しています。
移行に合わせて行うこと
上記の通り、移行したnpm packageはScope名が変更になっています。この変更を自動的に実施するのが yarn backstage-cli versions:migrate
というコマンドです。
# < 1.26.1 yarn backstage-cli versions:bump yarn backstage-cli versions:migrate # 1.26.1 yarn backstage-cli versions:bump --skip-migrate yarn backstage-cli versions:migrate
実際に作業をしてみましたが、特に問題もなく簡単に終了しました。 作業を後回しにするとMigrationの実施を忘れるといったこともあるかと思いますので、覚えているうちに実施したほうがよいかもしれません。
なお、仕組みとしてはcommunity-pluginsに移行するpluginの 従来のリポジトリ内のpackage.jsonに、backstage.moved
という項目で移行先のパッケージ名を記載しており、これに上記CLIが置き換えていく、というものになっています。
adr-backend pluginsのpacage.jsonの例
{ "name": "@backstage/plugin-adr-backend", "version": "0.4.15", "backstage": { "role": "backend-plugin", "moved": "@backstage-community/plugin-adr-backend" }, ... }
いろいろな考慮がなされており、移行作業も簡単にできるようにしているところがさすがだなと感じる仕掛けです。
現時点では Community-plugins側の準備もまだ進行中な部分もあり、十分なドキュメントがないかもしれませんが、このあたりもすぐに整備されていくものと思います。
その先へ
Community-plugins repositoryへの移行が完了することで、Backstage本体とPluginという作業の分担もできるようになることが期待されます。 少し前のv1.24のリリースでは新Backend Systemが本格導入され、現在新Frontend Systemもアルファ版の状態です。これらが整備されると一気にBackstageの導入作業が容易になっていきます。どんどん機能改善が進みもっともっとBackstageが楽に導入できるようになることを期待したいと思います。
ということで、個人的には日本最速のBackstage Community Plugins Repository移行紹介記事を狙ってみました。(実際最速かどうかは調べていません) 小さいことかもしれませんが、誰かの参考になれば幸いです。