Piperは、 Googleが社内ソフトウェア開発に使用している集中型バージョン管理システムです。元々はLinux向けに設計されていましたが、2012年10月からMicrosoft WindowsとmacOSもサポートしています。[1]
規模
Googleは創業当初から中央集権型のコードベースを採用してきました。[2] 10年以上にわたり、Googleは単一のPerforceインスタンスに依存し、スケーラビリティのために独自のキャッシュ技術を使用していました。[3]さらなるスケーリングの必要性から、Piperが開発されました。[4]現在、Googleのバージョン管理は「極端なケース」です。[5] 2016年時点で、[アップデート]リポジトリには900万のファイルに20億行のコードを含む86テラバイトのデータが保存されていました( Linuxカーネルリポジトリの2桁多い)。25,000人の開発者が毎日16,000件の変更を行い、さらにボットによる24,000件のコミット操作が行われています。毎日の読み取りリクエストは数十億件に上ります。[6]
建築
Piperは、当初はBigtable、後にSpannerと呼ばれる通常のGoogle Cloudストレージソリューションを使用しており、世界中の10のデータセンターに分散され、Paxosプロトコルを通じて複製されています。[3]
使用
Piperを使用する場合、開発者はSubversionの作業コピー、Gitのローカルクローン、Perforceのクライアントと同様に、ファイルのローカルコピーに変更を適用します。他の開発者による更新は、中央リポジトリからプルされ、ローカルコードにマージされます。コミットは、Critiqueツールによるコードレビュー後にのみ許可されます。[7] [8]
典型的な使用法は、Clients in the Cloud ( CitC )である。このシステムは、クラウドバックエンドとローカルのFUSEファイルシステムを利用して、完全なリポジトリの上に変更が重ねて表示されているような錯覚を作り出す。このアプローチにより、明示的な同期操作なしで標準的なUnixツールをシームレスに参照および使用できるため、ローカルコピーが非常に小さくなる(ローカルコピーの平均サイズは10ファイル未満)。すべてのファイル書き込みはスナップショットにマッピングされるため、明示的なスナップショットなしでコードの以前の状態を復元できる。常時接続の動作により、CitCはコンピュータの切り替えを容易にし、変更されたコードを他の開発者と共有し、自動ビルドシステムとテストツールを使用することができる。[7]その結果、Google開発者の大多数は、個人ブランチを持たないトランクベースの開発を実践している。ブランチは主にリリースに使用されている。[9]
安全
コードベースの大部分はすべての開発者が閲覧可能ですが、機密性の高い個々のファイル(2016年時点で1%未満)はアクセス制御されています。Piper のすべての操作はログに記録され、誤ってコミットされたファイルは削除できます。[7]
参考文献
- ^ ポトヴィン&レベンバーグ 2016、79ページ。
- ^ ポトヴィン&レベンバーグ 2016年、78ページ。
- ^ Potvin & Levenberg 2016、p.80より。
- ^ ポトヴィン&レベンバーグ 2016年、80~81頁。
- ^ ブランク・エデルマン 2018、329頁。
- ^ ポトヴィン&レベンバーグ 2016年、78~79頁。
- ^ abc Potvin & Levenberg 2016、81ページ。
- ^ サドウスキー、クルニア、ロルフス 2020.
- ^ ポトヴィン&レベンバーグ 2016年、82ページ。
出典
- Blank-Edelman, DN (2018). Seeking SRE: Conversations About Running Production Systems at Scale. O'Reilly Media. ISBN 978-1-4919-7881-8. 2024年10月31日閲覧。
- Potvin, Rachel; Levenberg, Josh (2016-06-24). 「Googleが数十億行ものコードを単一のリポジトリに保存する理由」Communications of the ACM . 59 (7). Association for Computing Machinery (ACM) : 78– 87. doi : 10.1145/2854146 . ISSN 0001-0782.
- ケイトリン・サドウスキー、イルハム・クルニア、ベン・ロルフス (2020年2月28日). 「批評:Googleのコードレビューツール」. タイタス・ウィンターズ、トム・マンシュレック、ハイラム・ライト(編). Googleにおけるソフトウェアエンジニアリング:長年にわたるプログラミングから学んだ教訓. O'Reilly Media, Inc.. ISBN 978-1-4920-8276-7. 2025年7月21日閲覧。