API互換性にとどまらない:ライブラリ変更のブラスト半径を測... ノート

API互換性にとどまらない:ライブラリ変更のブラスト半径を測定するツールの構築

Netflixは、広範なリポジトリエコシステム全体にわたるJavaライブラリ変更の影響を可視化するためにQuasarを開発しました。ライブラリプロデューサーはAPIの変更を目にすることはあっても、変更されたシンボルにどのコンシューマーが依存しているかについての洞察を得ることはできません。この可視性は、コーディングエージェントが開発ライフサイクルにますます参加するようになるにつれて、特に重要です。Quasarは、Netflixリポジトリ全体でシンボル定義と参照をインデックス化することで、この問題に対処します。プロデューサーにとって、ライブラリのパブリックAPIで何が変更されたか、そしてどのリポジトリがそれらの変更されたシンボルを正確に使用しているかという2つの重要な質問に答えます。これにより、一般的な互換性警告が実行可能な証拠に変わります。既存のツールでは不十分です。互換性チェッカーは契約の変更を特定しますが、使用状況は特定しません。依存関係グラフは宣言された到達範囲を示しますが、実際の呼び出しは示しません。テキスト検索はニュアンスを見逃す可能性があります。Quasarは、言語固有のインデクサーが定義と参照をエンコードできるように、オープンな相互運用フォーマットであるSCIPを活用しています。QuasarはライブラリのバージョンとコミットのAPI定義を保持し、独立したインデックス作成に関係なく、変更を正確な使用状況にリンクします。CIビルドが実行されると、インデクサーはSCIPインデックスをQuasarに送信し、API定義とコンシューマー参照を保存します。プルリクエストレビュー中、Quasarはインデックス化されたベース定義とヘッド定義を比較し、Amazon Athenaを使用して直接のコンシューマー参照をカウントします。このデータは、REST、GraphQL、およびMCP APIを介して公開されます。メソッドの削除のような単純なAPI変更の場合、Quasarは古いメソッドを呼び出し続けているリポジトリ、それらの依存関係のバージョン、およびファイル場所を特定します。これにより、プロデューサーは破壊的な変更をリリースする前に移行を調整できます。Quasarは、プルリクエスト分析中に詳細な影響レポートを提供し、シンボルを追加、削除、または変更されたものとして分類し、削除と変更に対するコンシューマーの影響を分析します。影響を受けるリポジトリ、バージョンの分布、サンプルコンシューマーの場所、およびライブラリの重要性を示します。これにより、プロデューサーは、非推奨にする、移行パスを公開する、またはより広範な移行を調整するなど、情報に基づいた意思決定を行うことができます。SCIPに基づいたシステムのポリグロット基盤により、複数の言語エコシステムをインデックス化できます。生成されたJavaメンバーを介したProtobuf定義から、リンクされたコンシューマーリポジトリへの複雑な関係をトレースできます。QuasarはJVMおよびProtobuf APIの変更を評価しますが、GoやPythonのような他の言語の完全な破壊的API変更の評価は進行中です。Quasarは現在、プルリクエストで調査結果を提示し、マージ前の意思決定をサポートしています。目標は、このコンテキストをコーディングワークフローにさらに早期に統合し、エージェントがパブリックAPIの編集を認識し、プルリクエストを開く前にQuasarにクエリできるようにすることです。このプロアクティブなアプローチは、エージェントが情報に基づいた意思決定を行うのに役立ちますが、プルリクエスト分析は検証のために引き続き重要です。
CdXz5zHNQW_uBo5VUclOg.png