先日 BackstageのPluginとして Search extension for Azure Cognitive Search を公開いたしました。
Backstageの 公式 Plugin Marketplace にも掲載頂いております。
Backstageとは
Backstage はもともとSpotifyが開発し、2020年にCNCFに寄贈した Internal Developer PortalのOSSです。
開発チームが開発を進める際、本当に様々なツールにアクセスして情報を参照しています。コードリポジトリはもちろんですが、Issue Trackerなどのチケット管理サービス、CICDなどのツール、デプロイ先のリソース情報、ロギング/モニタリングサービスの画面、IaCサービスの画面など・・・ときにその数は10や20にも達します。
それぞれのサービスはとても優れており、深く情報を探索する際は役立つツール・サービスとなっています。しかし、開発中に見たいのは実はそのうちの概要レベルの情報のみ。その概要レベルを確認するためにそれぞれのサービスの画面を渡り歩くのは面倒なものです。
さらに最近の新しい開発モデルを採用している場合、1つのチームで複数のリポジトリ等を担当していることもあり、ますます確認が面倒になっていきます。
こうした点を解消するのが 開発者ポータル(Internal Developer Poratl: IDP)であるBackstageです。普段確認する概要レベルの情報はすべてBackstage上に集約することで、さまざまなサービス画面を見る必要がなくなります。もしより深く探索しなければならないときはクリック1つでそのサービスに遷移できるので、普段の作業がぐっと楽になります。 他にもBackstageにはサービスカタログやドキュメント収集・表示機能、検索機能、テンプレート機能など便利な機能がいくつも用意されています。まさに開発者の日々の作業のポータルとして機能するものです。
Backstageの機能紹介: 「Kubernetes連携」と「検索」機能 にも簡単に記載させていただいておりますが、さまざまな機能で情報を表示するとしても、それらの情報に簡単に到達できなければ意味がありません。ほしい情報を探す手段がまさに「検索」です。
Search extension for Azure Cognitive Search について
構成
Backstageの検索機能は、他のBackstageの拡張機能同様複数のPluginから構成されています。
◆ 本体
Backstage検索機能の主要部分です。表示を行うフロントエンド、検索関連処理を実行するバックエンドで構成されています。
- search (frontend)
- search-backend
◆ データ収集(Collator)
Backstageのデータベースやドキュメントその他外部データソースからデータを収集するための機能です。標準ではCatalogデータベースとTechDocsの収集Pluginが提供されています。
◆ 検索エンジン
検索用インデックスの作成と検索機能を担う機能です。標準ではSQLiteを使ったLunr検索エンジン、ElasticSearchまたはOpenSearchをエンジンとするElasticSearch検索エンジン、PostgreSQLをエンジンとする検索エンジンが提供されています。
今回公開した Search extension for Azure Cognitive Search は「検索エンジン」に該当するPluginで、Azure Cognitive Searchを検索用インデックス格納と検索を提供するエンジンとするものです。
実装で苦労した点
今回実装にあたって苦労した点は2点ありました。
- Backstage検索仕様への適合
- 収集データの拡張に対する備え
Backstage検索仕様への適合
構成で示したとおり、検索機能そのものはBackstageで提供されています。その機能にあわせてSearchEngineと接続します。
こうした構成であることから、今回実装した機能は「Backstageの検索インターフェス(プロトコル)」と「Azure Cognitive Searchの検索インターフェース(プロトコル)」の橋渡しをすることでした。これはつまり両者の仕様の理解を必要とします。どのようにこの両者を結び付ければよいか、というところを考えながら実装しました。
収集データの拡張に対する備え
Backstageの収集対象は構成にあるデータ収集(Collator)部分で決まります。さらにこの部分は拡張可能です。つまり将来新しい収集対象が増える可能性があります(実際に独自のCollatorを実装しているPluginがすでに存在します)。
基本的な機能は「Backstageの検索インターフェス」に制約されるので気にする必要はなかったのですが、Azure Cognitive Searchの仕様上1つだけ問題がありました。それはデータスキーマです。 Azure Cognitive Searchは登録するインデックスのデータスキーマを事前に登録する必要があります。このデータスキーマに該当するのが Backstage SearchではCollator Pluginそれぞれで定義する文書タイプです。新しい Collator Pluginを追加する場合には、スキーマにもその内容を追加しなければなりません。それを如何に実現するかでした。 この拡張性を維持するための仕組みが Indexable document の部分に記載した内容になります。
まだまだこれからも使いやすいように改善を加えていきたいと思いますが、1つの完成形をみたのが今回のリリースになります。
今回はBackstageの検索機能をそのまま提供していますが、Azure Cognitive Searchそのものに様々なすぐれた機能が組み込まれています。将来的にはこのPluginを通じてその優れた機能をBackstageにも組み込んでいきたいと考えています。
ぜひ、Pluginをご利用いただきBackstageを活用してください。