Scaling services with Shard Manager

This post introduces Shard Manager, a generic platform developed at Meta to address the problem of duplicated custom sharding solutions across teams. It details the concept of sharding, contrasting it with hashing, and explains the need for shard management capabilities like failover, load balancing, and shard scaling. The post categorizes sharded applications into three types (primary only, secondaries only, primary-secondaries) and outlines the three-step process for building applications with Shard Manager: implementing a shard state transition interface, providing intent-based specifications for constraints, and using a common routing library. It highlights Shard Manager's wide adoption, managing tens of millions of shards on hundreds of thousands of servers across hundreds of applications, and its integration into the overall infrastructure ecosystem.
More from the Scalability and Large-Scale Systems Engineering trail
- Open-Sourcing Rebalancer: A Generic, High-Performance Library for Solving Assignment Problems
- ZGateway: Learnings from Putting a Proxy in Front of ZippyDB
- MTIA 300: Meta’s First Training Chip with Built-in NICs and Communication-Offloading Engines
- From User Sequences to Scaling Laws: A Multi-Stage Architecture for Meta’s Ads Ranking
- GEM Training: How Meta Doubled the Efficiency of Its LLM-Scale Ads Foundation Model