Piper(ソース管理システム)
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 ]
参考文献
出典
- 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日)。「Critique:Googleのコードレビューツール」。タイタス・ウィンターズ、トム・マンシュレック、ハイラム・ライト(編)『Googleのソフトウェアエンジニアリング:長年のプログラミング経験から学んだ教訓』。O'Reilly Media, Inc. ISBN 978-1-4920-8276-7. 2025年7月21日閲覧。