OpenAI explains why it returned to shared storage at billion-user scale
Separate database containers helped contain failures, but left product teams managing capacity. OpenAI’s Habitat disclosure explains the return to shared infrastructure.
Loading page…
Separate database containers helped contain failures, but left product teams managing capacity. OpenAI’s Habitat disclosure explains the return to shared infrastructure.
Listen to this story
OpenAI says it is moving Habitat back toward multi-tenancy by default, with data-movement capability and co-managed containers developed with Azure. Separate Azure Cosmos DB containers helped limit cross-feature outages, but shifted capacity forecasting to product teams, some of which had to scale during launches. Habitat holds more than 500 petabytes and serves over 1 billion users across 40 regions, making the change a trade-off between workload isolation and the operational burden of provisioning capacity.
Shared partition keys or physical partitions let niche workloads consume capacity needed by core flows such as login and signup.
A workload rising from zero to 1 million queries per second could mean 1,000 times the baseline load for a dedicated container used for internal testing.
OpenAI used scripts to adjust provisioned throughput as partition counts changed, but teams still had to anticipate shifts in product traffic.
Keeping one product’s traffic from disrupting another created a different problem for OpenAI: teams had to plan database capacity themselves, sometimes scrambling during launches. In an October 23 engineering disclosure, the company explained why its Habitat storage platform moved back toward shared database containers, with data-movement capability, after trying stronger separation between workloads.
Habitat provides fast access to stored information for OpenAI products. The company says it serves more than 500 petabytes of data and must respond in milliseconds to more than 1 billion users across 40 geographic regions. The disclosure, by engineers Jon Lee, Hrachya Hakobyan and Chaomin Yu, focuses on its underlying Azure Cosmos DB storage.
Habitat initially used one default Cosmos DB container in each account. A container groups data and has an assigned processing budget. Sharing that budget across workloads—known as multi-tenancy—exposed several ways for seemingly separate uses to collide, according to OpenAI.
OpenAI responded by giving critical new uses separate containers with independent physical partitions. It also used a script to adjust each container’s provisioned throughput as its partition count changed. Together, those measures largely avoided the problems the team had been encountering.
The separation was incomplete. Older critical workloads remained in the original shared container unless their data was migrated. As pressure and production incidents grew there, OpenAI directed new services and major features into separate containers. The company says this prevented many site-wide outages, confining failures instead to a feature or service.
But an isolated workload lost the cushion of a much larger traffic pool. OpenAI illustrates the difference with a use case jumping from zero to 1 million queries per second. That increase might barely shift a large shared container’s overall demand, while representing 1,000 times the baseline load of a dedicated container used only for internal testing.
Teams sometimes launched features without increasing their containers’ capacity beforehand, leaving engineers to scale them during launch-day incidents. Predicting demand also required detailed product knowledge. A basic scaling script could follow growth trends, but could not eliminate the need for teams to anticipate when traffic would shift.
OpenAI says this spread capacity planning across essentially every product team, with widely varying attention to provisioning. That organizational burden drove Habitat back toward multi-tenancy by default, this time with data-movement capability. The company worked closely with Azure on co-managed containers, rather than continuing to make separate containers the default response to growth.
Loading discussion...
Join the conversation
Explain where you would put responsibility when a launch overwhelms shared infrastructure.
Be the first to share a perspective or an experience.
Reader comments
Newest comments first. Replies stay oldest first.