20億行のコードを保存し、毎日4万5000回のコミットを発行しているGoogleが、単一のリポジトリで全社のソースコードを管理している理由

2015年9月24日

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回のコミットで確実に実行できるため、ファイル更新などの問題が発生しにくい。


関連記事

あわせて読みたい

プログラミング言語 開発ツール Google




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本