GitHub Gitストレージアーキテクチャ「Project Rubicon」

概要

GitHubは、エージェント主導の開発の急増をサポートするために設計された、内部コードネーム「Project Rubicon」と呼ばれる新しいGitストレージアーキテクチャを発表しました。このシステムは、低レイテンシの読み取りパフォーマンスを維持しながら、単一のリポジトリで毎秒数千回の書き込みを処理できるように設計されています。ストレージとコンピューティングを分離し、調整の必要性を最小限に抑えることで、GitHubは自律型エージェントの活動の増加を見越し、リポジトリの容量を2桁拡大することを目指しています。

コアアーキテクチャ:分離と調整

Rubiconアーキテクチャは、従来のモノリシックなGitストレージから脱却し、調整の最小化とストレージとコンピューティングの分離という2つの主要な設計原則に基づいた分散モデルへと移行します。

Ref-CAS:参照状態の管理

Gitオブジェクトは不変であるため、複雑な調整は必要ありません。しかし、参照の更新(ブランチポインタなど)には調整が必要です。GitHubは、これらの更新を処理するために Ref-CAS (Reference Compare-and-Swap) と呼ばれる専用サービスを開発しました。従来のコンセンサスグループとは異なり、Ref-CASは実際のオブジェクトデータを保存または検証しません。ポインタとログシーケンス番号のみを保存します。これにより、システムはトランザクションに関与する特定の参照のみをロックすることで、毎秒数万件の参照更新を処理できるようになります。

仮想レプリカとBlobストレージ

すべての永続的なGitオブジェクトデータは、高い集約スループットを提供するAzure Blob Storageにオフロードされます。トラフィックは「Spokes」を経由して、使い捨ての 仮想レプリカ のフリートにルーティングされます。これらのレプリカはキャッシュ層として機能し、必要に応じてBlob Storageからパックデータを取得します。仮想レプリカは権威ある状態を保持しないため、リポジトリの正確性に影響を与えることなく、水平方向にスケーリングしたり交換したりすることが可能です。

バックグラウンドコンパクション

書き込み量が増加しても読み取りパフォーマンスを維持するために、GitHubはコンパクションとガベージコレクションをバックグラウンドプロセスに移行しました。専用のコンパクションノードがBlob StorageおよびRef-CASに対して直接動作します。リースを使用して特定のリポジトリシャードの所有権を主張することで、これらのノードは仮想レプリカとは独立してパックをマージし、到達不可能なオブジェクトを削除できます。これにより、レプリカ上のコンピューティングリソースをユーザーリクエストの処理に専念させることができます。

業界の背景とコミュニティの議論

この発表は、このような高スループットインフラストラクチャの必要性に関して、大きな議論を巻き起こしています。GitHubはこれをAI主導のコーディングの未来に向けた先制的な措置として位置づけていますが、一部のコミュニティメンバーはアーキテクチャへの影響について疑問を呈しています。

  • スケーリング対レート制限: 批判的な意見として、毎秒数千回のプッシュをサポートすることは、非効率なエージェントの動作を助長する可能性があるという指摘があります。コメント投稿者は、膨大な書き込み量のためのインフラを構築するのではなく、プラットフォーム側でレート制限を強制したり、エージェントがプッシュする前にローカルで変更を集約するように促したりする必要があるのではないかと示唆しました。
  • 他のシステムとの比較: 観測筋は、このアプローチと、Cursorの「Continuity」や、Gitのスケーリングにオブジェクトストレージを活用するenroute.shのような独立したプロジェクトなど、業界の他の取り組みとの類似性を指摘しています。
  • VCSの代替案: 一部の開発者は、Gitが高並列エージェント群にとって最適なツールであり続けるのか疑問を呈しています。Gitの楽観的並行性モデルよりも、大規模で自動化されたコラボレーションの管理に適している可能性のある、排他的ファイルロックを提供するPerforceのようなシステムへの移行が提案されました。

GitHubは、新しいアーキテクチャは現在限定的なプライベートプレビュー段階にあり、来年初頭により広範なロールアウトを予定していると述べています。同社は、この基盤が「クローンなしでの作業」、アトミックコミットAPI、および部分クローンやシャロークローンのサポート向上といった将来の機能を実現すると強調しています。

Sources