木曜日, 9月 24, 2015

Googleのソースコード管理

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のコードの規模を紹介しよう。いくつかは初めて発表する数字だ。

fig

ファイル数は10億、ソースコードは900万ファイルで、これにドキュメントファイルやコンフィグレーションファイルなどが別にある。コードは全部で20億行。
リポジトリのユーザーは世界中に約2万5000人。コードに対して1日約4万5000回のコミットが行われており、約1万5000が人によるもので、約3万が自動化によるもの。
特に2004年にGmailをローンチしてからコードの変更が急速に増えてきている。特に、最近は自動化に伴うコミット数が急激に成長している。
Googleのデベロッパーは、クラウド上のパーソナルなワークスペースにコードをコピーし、プログラミングし、レビューを受け、コミットする。
コードの自動分析、自動テストはこの作業のさまざまな段階で行われている。

単一レポジトリの利点

fig
  • 統一的なバージョンと、唯一の正当なコード
共有されるライブラリのフォークがない、どのバージョンのファイルが信頼すべきものなのかといった混乱が生じない。
  • コードの共有と再利用が容易
デベロッパーは社内のすべてのコードを自分たちのツールで触ることができるため、必要なライブラリや関数を見つけやすい。
コンパイラチームでは、社内の最新コードを使ってコンパイルやコード生成を試すことができる。
古いAPIを自信を持って削除できる
死蔵されているコードを見つけ、削除するツールを利用して、コードの健全性を高めている
  • アトミックな変更が可能
数千ファイルの同時変更でも1回のコミットで確実に実行できるため、ファイル更新などの問題が発生しにくい。


関連記事