大規模ウェブ開発でのBazelの採用
Airbnbは最近、GoogleのオープンソースビルドツールであるBazelを、バックエンド、Web、iOSプラットフォーム全体のユニバーサルビルドシステムとして採用しました。11百万行を超えるコードを持つ大規模なWebモノリポジトリは、メンテナンスが困難でスケールが悪い独自のビルドスクリプトとキャッシングロジックを抱えていました。これらの問題に対処するために、AirbnbはBazelに移行しました。Bazelは洗練された構造、並列処理、キャッシング、パフォーマンスを提供しました。移行プロセスは2021年に開始されましたが、Google以外のWebでのBazelの導入に関する業界の先例はありませんでした。チームはリモート環境への大きなファイルの転送時のパフォーマンスの問題を克服し、パフォーマンスを改善または維持し、移行中にモノリポジトリに貢献する開発者の影響を最小限に抑えることを含む移行の原則を確立しました。リポジトリをBazelに準備するために、チームはサイクルブレーキングと自動BUILD.bazelファイルの生成を実行しました。また、CIジョブをBazelに移行し、タイプチェック、リンティング、ユニットテストから始めました。チームはTypeScript、ESLint、Jestを有効にし、キャッシングを導入して入力サイズを削減し、パフォーマンスを向上させました。後戻りを防ぐために、チームはテストを「隠し」から「必須」に変更し、Jestの設定を置き換えるテストを実行しないことで、単一の真実の源を確保しました。また、テスト実行時間、コードカバレッジの統計、失敗率などのメトリックを使用して、Bazelの移行の準備ができているかどうかを判断するために、Bazelの前後を比較するスクリプトを書きました。CIの移行と並行して、チームは開発者がCIの失敗を再現し、繰り返し処理できるように、開発者がローカルでBazelを実行できるようにしました。チームは、既存の開発者の体験とパフォーマンスに匹敵する、またはそれを上回るローカルのBazelの体験を提供し、開発者が既存のツールを使用し、Bazelを有効にすることができるようにしました。