OpenAI Habitatが10億人以上のChatGPTユーザーをサポートする規模へ拡張
TL;DR
OpenAIは、Habitatストレージプラットフォームが現在1秒あたり7000万件以上のリクエストを処理し、500PB以上のデータを格納し、週間で10億人以上のChatGPTユーザーをサポートしていると発表しました。これは、単純なPythonクライアントライブラリから始まり、現在は効率性を高めるためにRustで再実装されている分散型サービスへと進化した結果です。
Habitatの成長概要
Habitatは現在、1秒あたり7000万件以上のリクエストを処理し、約40のリージョンで10億人以上の週間ユーザーを対象にサービスを提供しており、500PB以上のデータを格納しています。 このシステムは2024年半ばにAzure Cosmos DB上の軽量なPythonクライアントライブラリとして始まり、複雑なグローバル分散型ストレージサービスへと進化しました。
ライブラリからサービスへの移行の理由
数十のサービス間でのプロトコル変更の調整が脆弱になり、中央集権的なサービスへの移行が促されました。 クライアント側のライブラリでは、機能フラグの展開、シャドウイング、マルチリージョンルーティングのロジックが必要で、調整に数日を要し、依然として障害を引き起こしていました。ストレージロジックを中央集権化することで、OpenAIはデプロイ、監視、セキュリティ、ポリシーの強制の単一のポイントを獲得しました。
アーキテクチャ選択とトレードオフ
Pythonサービスによる戦略的侵入
- HabitatをPythonサービスとして運用することで、より高い遅延とCPU/メモリコストが発生しましたが、コアAPIの迅速な提供とプラットフォームの安定性を実現できました。
- OpenAIはパフォーマンスのペナルティを受け入れ、将来のCodex/GPTベースのツールにより、後続の移行を容易にできると見込んでいます。
Pythonにおける尾部遅延の管理
- Asyncioスケジューリング遅延がp99+遅延の主要因となりました。CPU集約的なタスク(ルーティング、圧縮、暗号化、ヘルスチェック)がイベントループをブロックしていたためです。
- イベントループの遅延を監視し、各プロセスあたりの同時リクエスト数を制限することで、ワーカープロセスの水平スケーリングを大幅に強化しました。
機能フラグ構成のボトルネック
- 大きなStatsig構成の定期的なJSONパースにより、ポッド内のすべてのワーカーが毎分スタックしていました。
- 修正策:構成サイズの削減、更新間隔の延長、バックグラウンドタスクにジッターを追加。
コネクションプールのロードバランシング問題
- aiohttpの
TCPConnectorのデフォルトのLIFO再利用により、メタ安定したフィードバックループが発生しました。遅いポッドがコネクションを後から返すため、次のリクエストが再びそれらのポッドにルーティングされ、負荷が増幅されました。 - FIFO再利用に切り替えることでループを解消し、各プロセスの利用率のばらつきを低減しました。
- 現在、Envoy/Istioがコネクションプール、HTTP/2マルチプレクシング、中央集権的なレート制限を提供し、サンダーヘルド効果を回避しています。
スケーラビリティの鍵となる制約付きNoSQL API
Habitatは、任意のSQLではなく、シンプルなNoSQL APIを意図的に提供することで、リクエストコストを予測可能にしています。 クライアントはオブジェクトとエッジ(TAOにインスパイア)を定義できますが、無制限のクエリを実行することはできません。これにより、高コストなテーブルスキャンを防ぎ、サービスの乱用から保護します。複雑な分析クエリは、CDCストリームを介してRocksetにオフロードされます。
PythonからRustへの移行
2026年Q2に、OpenAIはHabitatをRustで再実装し、現在は生産トラフィックの95%を処理しています。 Rustサービスは、CPU効率が6倍、メモリ効率が15倍に向上し、平均遅延と尾部遅延が顕著に低下していると報告されています。ピーク時に1秒あたり2000万件以上のリクエストを処理していたPython実装は、今後数週間で非推奨になります。
今後の方向性(パートII)
- パートIIでは、マルチテナントの信頼性、読み取りパフォーマンスレイヤー、500PBストレージレイヤーを支えるAzure Cosmos DBとの提携について詳しく説明します。
- 継続的な作業には、コネクションファンインのさらなる最適化、サーキットブレーキング、およびRustサービスのスケーリングにより、現在の10倍年率成長を超えるユーザー成長に対応することも含まれます。
主な教訓
- Habitatの進化は、急速に進化するプロダクト組織が開発者速度(Pythonサービス)を優先しつつ、長期的な効率性(Rust再実装)を計画する方法を示しています。
- 高スループットストレージサービスをスケーリングする際には、API表面の厳密な制御、イベントループの注意深い監視、適切なコネクションプールポリシーが不可欠です。
- ストレージロジックの中央集権化により、巨大でグローバルに分散したユーザー基盤全体で、統一されたセキュリティ、監視、迅速な機能展開が可能になります。