The workspace stopped being the shard: ten years of Slack
How Slack moved its unit of partition from the workspace to the entity (Vitess, 2017-2020) to the organisation (Unified Grid, 2023-2024) as Enterprise Grid, shared channels and Slack Connect broke the assumption that a workspace is a closed world, which incidents the old key kept causing after the migration, and how Slack separately partitioned failure (AZ cells) and change (Chef by AZ).
A single-company dig reconstructed from Slack's own postmortems, engineering posts and QCon talks, and from first-hand git archaeology of the Vitess history and Slack's Vitess fork. It gives an architect the decade's product forces and platform responses in order, three decisions with the condition that flips each, seven incidents grouped into three failure classes with transferable rules, a dated numbers table, and a seven-rung ladder that reproduces the re-key and its cache-miss failure on a laptop.
Slack's worst documented datastore outage came fourteen months after Vitess was reported to serve 99% of queries, and the migration caused it: a membership table re-keyed by user turned every cache miss into a query on every shard, a cost Slack had handled as an availability problem since its 2018 partial-scatter directive while a 2019 limited-scatter planner branch on its fork never reached upstream.
What you get out of it
- Every move of Slack's partition key followed a product launch (Enterprise Grid, shared channels, Unified Grid), not a database limit alone; the shard key encodes the product's ownership model.
- A re-key is finished when no hot read crosses the old key, not when queries move; Slack's own 2-22-22 postmortem names the channel-keyed membership copy as the efficient keyspace.
- A cache in front of a scatter read is a capacity component; database load scales with miss rate times shard count, and the miss-rate budget was never written down.
- Slack ended with three independent partitions: data by entity, failure by availability zone (cells, 2021-2023), and change by availability zone (Chef prod-1..6, 2025), each added after an incident.
- Slack-authored Vitess commits peaked at 786 in 2021 and fell to 18 in 2022, the same year the fork's last versioned branch was cut, dating the switch from running a fork to running releases.
Scope
Why this, now. Slack's record became unusually complete in the last year, with the two QCon SF 2024 talks published, the October 2025 Chef post and the July 2026 Shipyard post, and the February 2025 outage repeated the 2022 pattern of a datastore change meeting a cache defect.
What it does not cover. Clients (desktop, mobile), search, AI features, the data warehouse, Salesforce integration and cost; also marked open rather than inferred are the per-request shard fan-out after Unified Grid, the cache hit-rate budget for membership reads, and whether Slack enables Vitess's no_scatter flag.
Other field guides
The object store became the quorum: ten years of Elasticsearch, read from its own repository
A decade of one search engine's coordination design, reconstructed from two complete git histories, the design documents committed inside them, and a…
26 sources · 2 organisations · 3 postmortemsChoosing the backend
Reconstructs the backend-selection stack from Google's SRE book and Prequal paper, Netflix's edge redesign, Twitter's aperture work, Uber's dynamic s…
30 sources · 18 organisations · 5 postmortemsServing without the control plane
Kubernetes, Envoy, Eureka and Patroni all answer the same question in their repositories: what may the data plane do with its last instructions when …
21 sources · 10 organisations · 4 postmortems