The idea
A cell based architecture divides a service into many self contained cells. Each cell is a full stack slice with its own compute, data, and dependencies, and it serves a defined subset of users or keys.
Why cells help
- Bounded blast radius: a bad deploy, a poison request, or an overloaded shard hurts only one cell.
- Independent scaling: cells scale and deploy on their own schedule.
- Predictable testing: a cell is sized and tested as a unit, so capacity is well understood.
The cell router
A thin router maps each request to its cell, usually by hashing a user or tenant id. The router must stay simple and highly available because it is shared by all cells.
The hard parts
- Cross cell operations are awkward, so designs avoid data that spans cells.
- Capacity planning must size each cell and decide when to split a hot one.
- Migration of a noisy tenant between cells needs careful data movement.
Key idea
Cell based architecture trades cross cell simplicity for strong fault isolation, capping the blast radius of any failure to a single cell while keeping the rest of the fleet healthy.