Как OpenAI масштабирует хранилище для 1 млрд пользователей
Как OpenAI превратила Habitat из Python-библиотеки в глобально распределённую платформу хранения данных для 1 млрд пользователей ChatGPT.
Как OpenAI масштабирует хранилище для 1 миллиарда пользователей ChatGPT
За каждым привычным действием в ChatGPT — входом в аккаунт, открытием нового чата, проверкой настроек — стоит невидимая инфраструктура, которая должна работать мгновенно и без сбоев. OpenAI опубликовала подробный технический разбор того, как им удалось построить эту инфраструктуру — и какой ценой.
Что такое Habitat?
Habitat — это платформа онлайн-хранилища, созданная OpenAI для быстрого и надёжного доступа к данным со стороны всех продуктов компании. Проще говоря, это центральный «мозг» хранения данных: именно Habitat отвечает за то, чтобы при вашем входе в ChatGPT система мгновенно «вспомнила», кто вы, какие у вас настройки и история переписок.
Каждый продукт OpenAI зависит от быстрого и надёжного доступа к данным — будь то вход в систему, проверка настроек Codex или начало нового разговора в ChatGPT. Каждое из этих действий может потребовать множества отдельных запросов к базе данных. Если запросы медленные — продукт ощущается медленным. Если запросы не выполняются — продукт перестаёт работать вовсе.
«Идея Habitat проста: разработчики продуктов не должны думать об управлении базами данных.»
— Команда инфраструктуры OpenAI
Масштаб, который трудно представить
Сегодня Habitat обрабатывает более 70 миллионов запросов каждую секунду, обеспечивая работу продуктов, которыми пользуются более 1 миллиарда человек каждую неделю, почти в 40 географических регионах.
Для понимания контекста: ChatGPT стал первым приложением в истории, преодолевшим отметку в 1 миллиард ежемесячных активных пользователей в июне 2026 года.
Два года назад Habitat представлял собой простую Python-библиотеку на стороне клиента, подключённую к единственной базе данных. Сегодня это сложная распределённая система, обслуживающая более 500 петабайт данных.
| Показатель | Тогда (середина 2024) | Сейчас (2026) |
|---|---|---|
| Архитектура | Python-библиотека | Распределённый сервис на Rust |
| Запросов в секунду | Единичные | 70+ миллионов |
| Объём данных | Один экземпляр БД | 500+ петабайт |
| Регионов | 1 | ~40 |
| Пользователей | — | 1+ млрд в неделю |
Эволюция: от библиотеки к сервису
graph TD
A["mid-2024: Python-библиотека\nв коде ChatGPT"] --> B["Выделение в отдельный сервис\n(Python)"]
B --> C["Оптимизация asyncio,\nEnvoy, connection pooling"]
C --> D["Q2 2026: Переписан на Rust\n2 инженера + Codex + GPT-5.5"]
D --> E["Текущее состояние:\n70M+ RPS, 95% на Rust"]
Шаг 1: Python-библиотека
Habitat возник из простой идеи: разработчики продуктов не должны думать об управлении базами данных. В середине 2024 года он начинался как небольшая Python-библиотека, встроенная в основной сервер ChatGPT.
Архитектура была предельно простой: клиентская часть на Python обращалась к единственной базе данных. Это работало — но только до определённого уровня нагрузки.
Шаг 2: Выделение в самостоятельный сервис
По мере роста ChatGPT стало очевидно, что библиотека не справляется с требованиями нескольких продуктов одновременно. В этом посте рассказывается о том, как Habitat эволюционировал, почему его превратили из библиотеки в сервис и как удалось «растянуть» сервис, написанный на нетипичном для производственных систем языке — Python, — до уровня надёжного слоя хранения данных.
Одним из ключевых архитектурных решений стало намеренное ограничение API. Команда спроектировала NoSQL API (интерфейс к базам данных без жёсткой схемы) с заведомо ограниченным набором операций — чтобы стоимость любого запроса была предсказуемой и поддавалась контролю.
Шаг 3: Борьба с Python на гиперскейле
Запуск Python-сервиса при нагрузке в десятки миллионов запросов в секунду потребовал нетривиальных решений.
Проблема asyncio и «задержки планировщика»
Python использует asyncio — механизм асинхронного выполнения задач. При высокой нагрузке планировщик asyncio начинал «притормаживать»: фоновые CPU-тяжёлые задачи вмешивались в обработку запросов и провоцировали всплески задержек (tail latency). В одном из случаев периодический парсинг JSON-конфигураций Statsig каждую минуту без «джиттера» (случайного разброса) по 8 процессам на под приводил к одновременной остановке всех воркеров.
Проблема «громового стада» (thundering herd)
Одним из побочных эффектов настройки для низкой задержки asyncio при большом числе Python-процессов стала лёгкость перегрузки downstream-зависимостей огромным количеством соединений — это явление известно как «thundering herd» («громовое стадо»).
Обычное ежедневное развёртывание — если его не замедлить намеренно — могло вызвать значительную нагрузку на CPU из-за пересоздания соединений. Или утечка соединений могла положить сеть, насытив NAT-шлюз.
Решение: Envoy и Istio
Сегодня OpenAI в основном полагается на Istio и Envoy для обеспечения пула соединений и более умных стратегий балансировки с учётом нагрузки на серверы.
Envoy используется для апгрейда HTTP/1-соединений Python до HTTP/2, чтобы воспользоваться мультиплексированием и увеличить время жизни соединений. Кроме того, Envoy даёт централизованное место для реализации rate-лимитов и circuit breaker’ов, которые были бы менее эффективны в каждом отдельном Python-процессе.
Python-процесс (HTTP/1) → Envoy (HTTP/2, multiplexing, circuit breaker) → Azure Cosmos DB
Переход с Python на Rust: революция за два месяца
Самый захватывающий эпизод истории Habitat — радикальная смена языка реализации.
Откладывание переписывания с Python на год позволило сосредоточиться на более срочных и важных задачах в период гиперроста. Но когда платформа начала зрелеть, а рост продолжал ускоряться, и Habitat стал вторым по количеству ядер сервисом в OpenAI, настало время двигаться дальше.
На пике Python помогал обслуживать более 20 миллионов запросов каждую секунду. Этого уже не хватало.
Результаты перехода на Rust
Данные показывают, что Rust-сервис в 6 раз эффективнее по CPU и в 15 раз эффективнее по памяти по сравнению с Python-версией, при значительно меньших средних задержках и задержках на хвосте распределения.
| Метрика | Python | Rust | Выигрыш |
|---|---|---|---|
| Эффективность CPU | Базовая | В 6 раз лучше | 6× |
| Эффективность памяти | Базовая | В 15 раз лучше | 15× |
| Макс. RPS | ~20 млн | 70+ млн | 3.5× |
| Доля production-трафика | 100% (устар.) | 95% | — |
Новый Rust-сервис уже обрабатывает 95% производственных запросов; в ближайшие недели Python будет полностью выведен из эксплуатации.
Переход на Rust — это не просто технический выбор. Это экономия вычислительных ресурсов в масштабе, где каждый процент эффективности стоит миллионы долларов.
Что дальше?
Уникальность ситуации OpenAI — в беспрецедентной скорости, с которой им пришлось масштабироваться, чтобы поддержать ошеломляющий рост числа пользователей и спроса на продукты, одновременно выстраивая зрелую платформу.
В следующем посте команда планирует подробно рассказать о том, как они обеспечили надёжность мультитенантности при масштабировании, о многоуровневой стратегии оптимизации производительности чтения и о том, как масштабировали партнёрство с Azure Cosmos DB для надёжной обработки беспрецедентного спроса.
Выводы для инженеров
История Habitat даёт несколько практических уроков для всех, кто строит высоконагруженные системы:
- Начинайте просто — Python-библиотека была правильным стартом. Преждевременная сложность убивает скорость разработки.
- Ограничивайте API намеренно — предсказуемость стоимости операций важнее гибкости на ранних этапах.
- Откладывайте дорогие рефакторинги — год работы на Python дал OpenAI время сосредоточиться на продукте, а не на инфраструктуре.
- Используйте AI-инструменты для инженерных задач — переписать весь сервис силами 2 людей с помощью Codex и GPT-5.5 — это новая реальность.
- Envoy и сервисная сетка — не роскошь — при работе с тысячами процессов централизованное управление соединениями критично.
OpenAI продолжает публиковать технические детали своей инфраструктуры — и это бесценный ресурс для всей индустрии. Следите за второй частью, в которой речь пойдёт о Azure Cosmos DB и стратегиях оптимизации чтения.