20億行のコードを保存し、毎日4万5000回のコミットを発行しているGoogleが、単一のリポジトリで全社のソースコードを管理している理由
Googleは検索サービスやGoogle Apps、Google Cloud Platformなど巨大なサービスを多数運営しています。その同社は、20億行にもおよぶソースコードの管理をサービスやプロジェクトごとに分けず、す べて単一のリポジトリで管理しているそうです。先週9月14日にサンノゼで開催されたイベント「@Scale」 で、Googleによるセッション「The Motivation for a Monolithic Codebase: Why Google Stores Billions of Lines of Code in a Single Repsitory」(単一コードベースへの取り組み:なぜGoogleは単一リポジトリに数十億行ものコードを保存しているのか)」が行われ、その模様 がYouTubeで公開されています。
なぜGoogleは単一のリポジトリでソースコード管理を行っているのか。セッションの要点をまとめました。
Why Google Stores Billions of Lines of Code in a Single Repsitory
Googleにおけるソースコードマネジメントストラテジについて。Googleではソースコードをモノリシックな単一のリポジトリに保存している。これまで何度も複数のリポジトリにするかどうか議論してきたが、そのたびに単一のリポジトリの方がよいという結論に達してきた。
なぜそうしてきたのかを紹介する。
その前に、Googleのコードの規模を紹介しよう。いくつかは初めて発表する数字だ。
ファイル数は10億、ソースコードは900万ファイルで、これにドキュメントファイルやコンフィグレーションファイルなどが別にある。コードは全部で20億行。
リポジトリのユーザーは世界中に約2万5000人。コードに対して1日約4万5000回のコミットが行われており、約1万5000が人によるもので、約3万が自動化によるもの。
特に2004年にGmailをローンチしてからコードの変更が急速に増えてきている。特に、最近は自動化に伴うコミット数が急激に成長している。
Googleのデベロッパーは、クラウド上のパーソナルなワークスペースにコードをコピーし、プログラミングし、レビューを受け、コミットする。
コードの自動分析、自動テストはこの作業のさまざまな段階で行われている。
単一レポジトリの利点
- 統一的なバージョンと、唯一の正当なコード
- コードの共有と再利用が容易
コンパイラチームでは、社内の最新コードを使ってコンパイルやコード生成を試すことができる。
古いAPIを自信を持って削除できる
死蔵されているコードを見つけ、削除するツールを利用して、コードの健全性を高めている
- アトミックな変更が可能