DropboxがGitHubと協力しモノレポを87GBから20GBへ77%削減、クローン時間も75%短縮
概要 Dropboxのエンジニアチームは、GitHubと連携してGitのデルタ圧縮の最適化に取り組み、バックエンドモノレポのサイズを87GBから20GBへ約77%削減することに成功した。これによりリポジトリのクローン時間は1時間以上から15分未満へと75%短縮され、CI/CDパイプラインのパフォーマンスと開発者のオンボーディング体験が大幅に改善された。 同社のバックエンドモノレポはバックエンドサービスや共有ライブラリの統合拠点として機能していたが、規模の拡大に伴いクローン操作に1時間以上かかるようになり、CI/CDパイプラインの繰り返しフェッチによってビルドオーバーヘッドも増大していた。さらに、リポジトリホスティングの上限に近づくリスクも浮上していた。 根本原因と技術的な詳細 問題の根本原因は、大容量バイナリの誤コミットや通常の開発活動量ではなく、GitのデルタCOMPRESSIONが大規模リポジトリで非効率なpackfileを生成していた点にあった。DropboxのシニアソフトウェアエンジニアであるIshan Mishraは「実際の開発活動量から想定される成長ペースとは一致しなかった」と説明しており、問題は「何が保存されているか」ではなく「データがどのように保存されているか」にあったという。Shailesh Mishraも「ツールの前提がスケールしたリポジトリ構造と衝突した」と表現している。 対策として採用されたのは以下のアプローチだ。 再パッキング戦略の最適化: packfileの生成方式を見直し、デルタ圧縮の効率を改善 デルタウィンドウと深度の調整: Gitの圧縮パラメーターをリポジトリ規模に合わせてチューニング GitHubとのサーバーサイドパッキング調整: ホスティング側でのパック処理をDropboxの要件に合わせて最適化 ミラー環境での段階的な検証: 本番ロールアウト前にミラーリポジトリでの安全な検証を実施 改善結果と開発者への影響 この取り組みにより達成された改善は以下の通りだ。 指標 改善前 改善後 改善率 リポジトリサイズ 87GB 20GB 77%削減 クローン時間 60分以上 15分未満 75%短縮 CI/CDパイプライン 低速 データ転送量削減により高速化 — 開発者オンボーディング 時間がかかる 待ち時間を短縮 — この事例はバージョン管理システムをプロダクションインフラとして扱う重要性を示している。ストレージ効率がエンジニアリング速度に直結することを改めて示した例であり、ツールの最適化・組織横断的な協力・慎重な検証の組み合わせが大規模モノレポ運用における解決策となり得ることを証明した。