top of page

OpenAIでGitをスケールする:PandoはGitを維持しつつバックエンドを再設計

1 時間前
読了時間: 18分

OpenAIは2026年11月2日、新たなGitバックエンドであるPandoを発表した。同社によると、Pandoはpushレイテンシーの中央値を約80%削減するという。「OpenAIでGitをスケールする」と題した説明では、この成果を支える具体的なインフラ判断が示されている。すなわち、使い慣れた開発ワークフローを維持しながら、その共有基盤を変更するという判断だ。

Pandoは現在、複数のプロジェクトを収めた共有リポジトリであるOpenAIのモノレポでの開発を支えている。OpenAIによれば、10週間の開発を経て4月に本番稼働へ移行した。したがって今回の発表は、導入待ちの提案ではなく、すでに運用されているソース管理の仕組みを説明するものだ。

中心にあるのは、リポジトリ全体での調整と、ブランチをまたぐ独立した作業とのせめぎ合いである。GitHubの以前のDGitアーキテクチャは、複製リポジトリを通じてGitをスケールさせた歴史的な参照例となる。Pandoは別の問いを提起する。コーディングエージェントが並列活動を増やすとき、どの共有保証がその調整コストに値するのか、という問いだ。

OpenAIでGitをスケールする際、ボトルネックはコマンドの背後に移る

この発表は、開発者が認識するGitワークフローと、それを提供するインフラを明確に分けている。

変更を追跡し、プロジェクト履歴を交換するソフトウェアであるGitは、親しみやすいインターフェースであると同時に、実装上の選択肢の集合でもある。開発者が使うのはコマンド、ブランチ、コミットだ。インフラチームは、コラボレーションを可能にするストレージ、調整、配信システムを管理する。

これらの層は、必ずしも同時に変える必要はない。人々が使うコマンドを維持したまま、それに応答するサービスの大部分を置き換えることはできる。この区別が重要なのは、インフラのボトルネックが、開発者インターフェース自体の限界を自動的に意味するわけではないからだ。

OpenAIのGitバックエンド設計によれば、Pandoはブランチを独立して調整し、保存済みの転送パッケージを再利用する。その代わり、ブランチ全体にわたる単一時点のビューを犠牲にし、ときには冗長なデータも転送する。

これは重大な選択だ。OpenAIが、自社のワークロードでは常に必要とは限らない高コストな保証や最適化を特定したことを示唆している。この設計は、既存ホスティングシステムの普遍的な代替と見なすのではなく、そのワークロード要件に照らして評価すべきである。

変更を保存することと、その変更を共同作業者が利用できるようにすることの違いを考えてみよう。開発者がローカル作業を終えても、共有システムが公開や取得を遅らせている場合がある。コード生成が高速になっても、どちらの遅延もなくなるわけではない。

これは、実務上の人的影響を伴うインフラ問題を生む。周辺ツールが取得、テスト、提示できるようになるまで、開発者はエージェントの出力を評価できない。ローカルで完了した作業も、その共有プロセスを通過するまでは、チームの観点では未完了のままである。

同じ区別はパフォーマンスの主張にも当てはまる。pushレイテンシーは、変更をリモートリポジトリに公開するために要する時間を測る。変更が正しいか、有用か、レビュー済みか、デプロイ可能かを測るものではない。

したがって、「OpenAIでGitをスケールする」という話は、ソース管理インフラの事例として注目に値する。報告された改善は、開発プロセスの特定段階に関するものだ。その広範な価値は、その段階が開発者の実際の遅延にどれだけ寄与しているかに依存する。

インフラの導入判断を担う側にとって、既存ワークフローを維持することには別の利点もある。組織変更の範囲を抑えられる点だ。バックエンドの置き換えにも大規模なエンジニアリングが必要になり得るが、コラボレーションの言語そのものを置き換えれば、開発者や接続済みツールにも適応を求めることになる。

どちらが自動的に優れているわけでもない。問うべきなのは、インターフェース自体が望ましいワークロードを妨げているのか、それとも背後のサービスに別の設計が必要なのか、である。

コーディングエージェントは共有開発サービスに負荷をかける

直接的な負荷は、コード生成そのものより、作業を公開、取得、検証するシステムにかかる。

OpenAIは、ソース管理への負荷を自社のコーディングエージェントシステムであるCodexに起因するものとしている。この説明は、個人の生産性と共有キャパシティを区別するうえで有用だ。開発者がより多くの作業を開始できても、下流のすべてのサービスがそれを吸収できるとは限らない。

エンジニアがコーディングエージェントに独立した保守タスクを割り当てる状況を想像してみよう。各タスクは、開発の名前付き系統である別々のブランチ上に、変更候補を生成する。こうしたブランチを公開すると、共有リポジトリサービスに処理が発生する。

テストも別の依存関係を加える。継続的インテグレーション、すなわち開発活動によって起動する自動チェックは、チェックを実行する前に関連するソースを取得しなければならない。取得が遅くなれば、利用可能なテスト能力はソース配信の待ち行列の後ろで待機することになる。

この例は仕組みを示すものであり、すべての組織がエージェントをどう利用するかを立証するものではない。実際の負荷は、タスク頻度、リポジトリ構造、テスト設計、環境が既存ファイルを再利用する頻度に左右される。エージェント導入だけでは結果を予測できない。

それでも、計画上の含意は明確だ。一人ひとりが重複する作業を開始できるようになると、アクティブな開発者数を数えるだけではインフラ需要の見積もりとして不十分になる。チームは、開発ツールが並行実行下でどう振る舞うかも理解する必要がある。

並行実行とは、複数の操作が重なる期間に進行することを意味する。これは、システムが保持するデータ量を示すリポジトリ規模とは異なる。保存された履歴が管理可能な状態でも、同時活動によってサービスが苦戦することはある。

この違いにより、プラットフォームチームが問うべき内容は変わる。取得の遅延は、転送経路の過負荷、高コストな準備、共有状態をめぐる競合を反映している可能性がある。ストレージ容量の追加で解決できるのは、その原因の一部にすぎない。

この負荷はエンジニアリングマネージャーにも及ぶ。エージェントが変更候補をより速く生み出すなら、レビューとテストは有用な出力と単なる追加活動を見分けなければならない。リポジトリ操作は必要な負荷指標だが、提供された価値を完全に測る指標ではない。

ブランチの公開までの待ち時間が短くなれば、コラボレーションには役立つ。しかし、そのブランチが承認に値することを示すものではない。これらの結果を分けて扱うことで、インフラ改善がソフトウェア品質に関する根拠のない主張になるのを防げる。

エンジニアリングチームを支援するナレッジワーカーにとって、関連する課題は、活動が拡大しても意思決定を理解可能な状態に保つことだ。検索可能なナレッジベースは、変更をめぐる技術的コンテキストを保持できる。これはソース履歴を保存することとは別の目的を果たす。

組織的な教訓は、提案されたタスクから受け入れられた成果までの経路全体を評価することにある。Pandoはその経路の一部に対応する。ソース管理の遅延が、開発者、エージェント、自動チェックが本来待機に費やす時間を大きく占める場面で、その重要性は増す。

Pandoは共有調整を独立したブランチ進行と引き換えにする

このアーキテクチャ上の判断は、どこで合意が必要か、どこで無関係な作業を別々に進められるかに関わる。

共有開発システムは、競合する更新が気付かないうちに互いを上書きしないようにしなければならない。しかし、その要件はすべての更新についてリポジトリ全体での合意を必要とするわけではない。適切な境界は、呼び出し側が何を観測すると期待しているかに依存する。

別々のエージェントが無関係な機能ブランチを更新する場合を考えよう。これらの操作に共有の調整地点を持たせると、本来は互いに依存しないタスク間に関係が導入される。その関係を取り除けば、並行して進める余地が生まれる。

より難しい問題は読み取り側にある。複数のブランチを調べるツールは、それらの値が整合的なある瞬間を表すことを期待するかもしれない。別のツールは、特定のブランチとそれを支える履歴だけを必要とするかもしれない。

こうした期待は異なる契約を表す。後者を維持しつつ前者を緩和すれば調整は減らせるが、接続された自動化はその違いを理解しなければならない。使い慣れたコマンドだけでは、サービスに埋め込まれたすべての前提を伝えられない。

このため、Pandoの設計はパフォーマンスエンジニアリングを超えて重要になる。組織に対し、自らのワークフローが実際にどの保証を利用しているかを特定するよう求めるからだ。誰も必要としない保証でも、運用コストを課す可能性がある。文書化されていない保証は、隠れた依存関係になり得る。

GitHubは有用な歴史的比較対象を提供する。2016年の分散Gitアーキテクチャでは、後にSpokesと呼ばれるDGitについて、リポジトリレプリカを維持し、書き込みをコミットする前に成功した確認応答を要求する仕組みが説明された。

このアーキテクチャは、複製を通じて可用性と耐久性に対応した。Gitを信頼できる共有サービスとして運用するための長年の取り組みに文脈を与える。ただし、GitHubの現在のインフラを完全に説明するものと誤解すべきではない。

この比較が支える結論は、アーキテクチャ上の勝者を宣言することよりも限定的だ。異なる調整境界は異なるワークロードに適する。汎用ホスティングプラットフォームと社内開発環境も、互換性、運用、顧客の期待という面で異なる要件に直面する。

OpenAIでGitをスケールする文脈では、有用な境界線は独立したブランチ活動と、より広範な合意を必要とする操作との間にある。独立側で得られる性能向上は、他の場所にある競合を自動的に取り除くわけではない。

共有インテグレーションブランチは明白な例だ。別々の提案は並行して進められるが、最終的な統合には順序と互換性に関する判断が依然として必要になる。インフラ設計は、矛盾するコード変更をより速く受け入れるだけで互換可能にすることはできない。

この区別は、より多くのマシンにサービス容量を追加することを意味する水平スケーリングに関する一般的な誤解を防ぐ。追加容量は、作業を分散できる場合に役立つ。同じ状態について繰り返し合意を必要とするワークロードでは、その効果は限定的だ。

したがって、アーキテクチャ評価は依存関係のパターンから始めるべきである。どれだけの作業が独立しているのか。どの操作が競合するのか。どの読み取り側が調整されたビューを必要とするのか。これらの答えが、リポジトリ全体の調整を緩和することが有用な適合なのか、受け入れがたい振る舞いの変化なのかを決める。

再利用可能なGit転送は読み取りの経済性を変える

準備済みデータを繰り返し提供することで、サーバー計算、転送量、クライアント作業のバランスが変化する。

packfileは、リポジトリオブジェクトを転送または保存するためのGitの圧縮パッケージである。読み取り側ごとに特化したパッケージを準備すれば、不要な転送を減らせる。既存パッケージを再利用すれば、準備作業を減らせる。

どちらの目的が常に優先されるわけでもない。望ましいバランスは、帯域幅に対する計算コスト、読み取り側の類似性、重複する履歴を要求する頻度に依存する。狭く最適化された転送は、繰り返し準備すると高コストになり得る。

Gitのpack転送プロトコルは、必要な履歴とすでに保持している履歴について、クライアントとサーバーが交渉する仕組みを説明している。この交渉は不要なデータ送信を避けるのに役立つ。一方で、転送そのものの前に処理を発生させる。

この違いは、多くの読者が似たようなコンテンツを求める場合に重要になります。サーバーは、各応答を個別に最適化することで帯域幅を節約できるかもしれません。あるいは、あらかじめ準備したコンテンツを効率的に配信するために、一定の冗長性を許容することもできます。

これは無条件の改善ではなく、リソース配分に関する判断です。システムはサーバー側の処理を減らしつつ、転送バイト数を増やすことがあります。その交換がユーザーの利益になるかどうかは、転送が行われる環境に左右されます。

Git の protocol capabilities には、packfile を別のダウンロード場所から取得するためのサポートが含まれています。この機能は、fetch のネゴシエーションと実際のバイト配信の間に、アーキテクチャ上の分離を生み出します。fetch は、別のシステムからリポジトリ履歴を取得する操作です。

これらの責務を分離することで、異なるコンポーネントが異なる需要を処理できるようになります。ネゴシエーションサービスは、読者が何を必要としているかを判断します。配信サービスは、選択されたデータを転送します。それぞれに求められる容量が、まったく同じように増加する必要はありません。

その際、再利用可能なデータを利用者の近くに保持するストレージであるキャッシュは、要求が重複する場合に役立ちます。その有用性は再利用に依存します。新規または珍しい要求が中心のワークロードは、人気のある履歴を繰り返し取得するケースとは異なる運用環境になります。

この違いは、読者がスループットに関する見出しをどう解釈するかに影響すべきです。スループットは、サービスが時間あたりに配信するデータ量を測定します。個々の要求が転送開始までにどれほど待たされるかは示しません。

クライアント側も重要です。バイトをダウンロードすることは、利用可能な履歴を得るプロセスの一部にすぎません。開発環境は、依存する作業を進める前に受信したデータを処理しなければなりません。配信の高速化によって、クライアント処理やローカルストレージの新たな制約が明らかになることがあります。

具体例として、同じプロジェクトのリビジョンを取得する一時的なテスト環境を考えてみましょう。要求するコンテンツが重複するため、再利用は魅力的に見えます。一方で、接続性が制限され、すでに大量の履歴を持つ環境を考えてみてください。その場合、冗長な転送のコストはより大きくなります。

これらの例は、普遍的な結果を示すことなく、なぜその仕組みが重要なのかを説明しています。インフラチームは、転送量の最小化と準備済みデータの再利用のどちらを選ぶかを決める前に、代表性のある測定を行う必要があります。同じアーキテクチャでも、地域、デバイス、開発パターンによって異なる性能を示す可能性があります。

したがって、OpenAI Pando は設計の方向性を示す証拠として最も有用です。より広いエンジニアリング上の問いは、クライアントやネットワークに受け入れがたい負担を移すことなく、どれだけの反復作業をリクエストパスから取り除けるかです。

パフォーマンスの主張にはワークロードの文脈が必要

報告された結果は内部展開の事例を裏付ける一方、より広範な結論には比較可能な測定と、より明確な運用上の境界が必要です。

OpenAI のレイテンシー値は、引き続き同社による報告結果です。これらは、OpenAI が自社環境で起きたと説明する内容を示しています。同様のアーキテクチャ上の選択を採用した別の組織で、どのような結果が期待できるかを独立して確立するものではありません。

中央値は、測定分布における中央の観測値であり、典型的な挙動を表します。しかし、最も遅い体験については明らかにしません。取得または公開が完了するまで依存プロセスが進められない場合、こうした遅い要求は重要になります。

したがって、有用な評価では、典型的なパフォーマンスと遅い側で発生する遅延の両方を検討すべきです。また、成功した操作と再試行・失敗も区別する必要があります。完了した要求が高速化していても、平均値が隠してしまう問題が共存することはあります。

ワークロードの定義も同じくらい重要です。独立したブランチ更新、共有ブランチへの反復的な更新、古い履歴の取得では、異なる経路が使われます。これらを集計結果にまとめると、アーキテクチャが最も役立つ領域が見えにくくなる可能性があります。

比較には一貫した出発点も必要です。クライアント履歴、ネットワーク条件、リポジトリ内容、要求される結果が同一であれば、結果を解釈しやすくなります。そうでなければ、見かけ上のサービス改善は、別の要因の違いを一部反映しているかもしれません。

選択した仮定のもとでシステムの挙動を研究するためのモデルであるシミュレーションについても、同じ注意が当てはまります。シミュレーションは調整コストを明らかにし、予想される関係を説明できます。しかし、本番環境の展開におけるあらゆる障害モードや運用コストを確立できるわけではありません。

これはアーキテクチャモデルを退ける理由ではありません。その価値は、仮定を可視化することにあります。読者は、どの制約が結果を左右しているか、またその制約が意図する展開環境に似ているかを確認できるべきです。

互換性についても、より正確な扱いが求められます。コマンド互換性とは、開発者が実行する操作を認識できることです。プロトコル互換性とは、システムが理解できるメッセージを交換できることです。動作互換性は、それらのメッセージが成功した後にアプリケーションが依存する保証に関わります。

これらの互換性は重なり合いますが、同じものではありません。使い慣れたコマンドを維持しながらも、インフラチームには監視、順序、復旧に関する前提の見直しが求められるワークフローもあり得ます。その検討は採用評価に含めるべきです。

公開コードにも、検討すべき別の境界があります。OpenAI は Git client fork を維持しています。クライアントリポジトリはエンジニアが調査できる資料を提供しますが、Pando バックエンド全体への公開アクセスと混同すべきではありません。

エンタープライズの購入者にとって、可用性とサポートは技術的信頼性とは別の問題です。十分に説明された内部アーキテクチャは有用な証拠です。一方、サポートされる外部サービスには、運用ドキュメント、アクセス制御、復旧手順、定義された責任範囲も必要です。

したがって、OpenAI における Git のスケーリングは、調達の近道にすることなくインフラ計画に役立てるべきです。この発表は検討に値するアプローチを示しています。実際の導入判断には、そのアプローチが購入者の依存関係、ワークロード、運用モデルに適合するという証拠がなお必要です。

クライアントの採用、ワークロードの証拠、外部提供を注視する

次に有用なシグナルは、他のチームが何を利用でき、独自に評価でき、運用できるかに関するものです。

最初のシグナルは、OpenAI 自身の配布を超えた関連クライアント改善の採用です。共有されるクライアントサポートがあれば、この取り組みの一部が既存の Git 環境に利益をもたらすという根拠が強まります。特殊なディストリビューションへの依存は、その当面の到達範囲を狭めます。

OpenAI Pando を追う読者にとって実務的な問いは、自組織がすでにサポートするクライアントで、どの機能が通常の機能になるのかという点です。ソースコードでの利用可能性と、管理された開発環境全体での利用可能性は、採用における異なる段階を表します。

このシグナルが重要なのは、インフラの変更が同時にあらゆる場所へ届くことはほとんどないためです。開発者のラップトップ、テストイメージ、自動化コンテナ、ホスト型実行環境は、それぞれ異なる更新スケジュールに従う可能性があります。こうした環境が必要な機能を共有している場合、バックエンド設計は採用しやすくなります。

2つ目のシグナルは、より幅広いワークロードの証拠です。異なるブランチパターン、クライアント状態、ネットワーク条件を対象とした測定があれば、アーキテクチャを評価しやすくなります。その利点がどこで持続し、どこでトレードオフが高コストになるかを示せます。

特に有用なのは、サービスパフォーマンスを開発者の成果と結び付ける証拠です。公開の高速化が最も重要になるのは、実際の開発プロセスにおける待機時間を短縮する場合です。インフラ指標の低下には情報価値がありますが、その実用的価値は次に何が起こるかに左右されます。

発信元の組織以外から得られる結果は、さらに信頼を高めるでしょう。同一の数値を再現する必要はありません。異なる環境における基礎的な挙動についての一致は、見出しの改善幅が一致することよりも多くの情報を与えます。

反対に、改善が非常に有利な条件に大きく依存するという証拠があれば、結論の適用範囲は狭まります。それは内部展開を無効にするものではありません。他のチームが、類似設計を検討すべき状況を特定する助けになります。

3つ目のシグナルは、具体的な外部向け提供またはリリースです。読者は、定義された可用性、文書化されたインターフェース、運用上の境界を確認すべきです。こうした詳細は、他者が採用できる技術と、研究のみ可能なアーキテクチャを区別します。

公開リリースは、サポートと展開に関する新たな問いも生み出します。ストレージ層を運用するのは誰か。必要なクライアント機能は何か。障害時には何が起こるのか。これらの答えは、見出しとなるパフォーマンス値と同じくらい採用を左右します。

これらのシグナルが得られるまで、この発表にはより直接的な有用性があります。プラットフォームチームに対し、自社の開発システムが、現在のコーディングワークフローが生み出すほどの並行性を想定していないかを検討する、焦点の定まった方法を提供します。

適切な対応は、既存環境で証拠を収集することです。公開の遅延と取得の遅延を分けてください。繰り返される転送を特定してください。共有ブランチ周辺の競合を調べてください。すべてのリポジトリ操作を同じ価値として扱うのではなく、各遅延を、それによって妨げられる作業と結び付けてください。

次回のインフラレビューでは、Scaling Git at OpenAI をきっかけとして、完了したコーディング作業が共有サービスを待つ箇所を特定してください。どの遅延が必要な調整に起因し、どの遅延が現在のワークロードでは不要になった実装上の選択に起因するのかを問いましょう。リリースプロセスが実際に依存する保証を維持し、下層のサービスを変更する前にそれらを文書化してください。そのうえで、障害や遅い要求も含む代表的な開発活動に照らして、アーキテクチャの選択肢を比較してください。有用な問いは具体的です。ソース管理システムのどの部分が、チームが評価・提供できる作業を制限しているのでしょうか。その答えを得ることで、Pando、ホスト型 Git、あるいは内部バックエンドに関する将来の判断を、はるかに容易に正当化できるようになります。

 
 

無料で始めましょう

ローカルファーストのパーソナル知識管理付きAIアシスタント

より良いAI体験のために、

remio は現在、 Windows 10+ (x64)とM-Chip Mac のみをサポートしています。

仕事のAIパートナー
remioでもっと仕事が進む

計画・作成・仕上げまで
すべてをひとつに

bottom of page