OpenAI Engineers Describe the Multi-Tenant Cycle of Their Storage Platform: When Workloads Become Outliers for Cloud Providers
Three technical members of OpenAI's storage platform, Habitat—Jon Lee, Hrachya Hakobyan, and Chaomin Yu—detail the full cycle from multi-tenant to single-tenant and back to multi-tenant on Azure Cosmos DB, as well as their joint engineering practices with Microsoft when their scale made 'managed services' less managed.
OpenAI’s storage platform, Habitat, underwent a complete cycle from multi-tenancy to single-tenancy and back to multi-tenancy. Three technical members—Jon Lee, Hrachya Hakobyan, and Chaomin Yu—documented the reasons and costs behind this cycle in an engineering blog post published on October 23, 2026. The core takeaway is not a specific performance metric, but a broader principle: when a company grows large enough that its own workloads become outliers in a cloud provider’s infrastructure, 'managed services' cease to be fully managed.
Habitat is the online storage platform relied upon by all OpenAI products (ChatGPT, API, Codex, and internal services). It must respond in milliseconds to over one billion users across 40 geographic regions, managing more than 500 petabytes of data. Its underlying storage uses Azure Cosmos DB. In the first phase, the team relied entirely on Cosmos DB’s native multi-tenant capabilities: each account used only a default container, allowing all products to share it. This quickly exposed three problems.
The first problem was logical partition key collisions. Because early API designs exposed the choice of logical partition keys directly to clients, different product use cases frequently used the same key names (such as user_id or workspace_id). This caused cross-product requests for the same user to share the same partition quota, constraining overall throughput. The second problem was noisy neighbors. Although the documented limit of 10K RU/s applied to logical partition keys, enforcement actually occurred at the physical partition level. Multiple logical partition keys coexisting on the same physical partition meant that background batch operations for niche product features could slow down core login and signup flows. The third problem was weak partitions: as data volume grew, physical partitions split, keeping total throughput constant but halving the available capacity per partition. For storage-intensive use cases, data growth alone reduced the throughput capacity for active workloads even if request rates remained stable.