Twenty-eight artefacts across seventeen hosts and sixteen organisations,
graded. Filter by kind; the postmortems and the source code are where the value is.
Postmortem
AWS2025-10
Summary of the Amazon DynamoDB Service Disruption in the Northern Virginia (US-EAST-1) Region
The most detailed public account of a routing-layer failure. Two redundant automation
actors racing on shared DNS state produced an empty regional endpoint record, then EC2's
lease manager could not converge on recovery.
Carry forwardAny writer of shared routing state needs a
generation check that cannot go stale, and an invariant that an empty result is never
publishable. Test recovery at full fleet scale.
https://aws.amazon.com/message/101925/
Postmortem
Cloudflare2025-11
Cloudflare outage on November 18, 2025
A database permissions change, an unfiltered query, a doubled feature file, a 200-feature
limit and an unchecked unwrap(). Includes the internal chat showing the team
reasonably suspecting a DDoS, because gradual upstream rollout made it flap.
Carry forwardAnything the fleet reloads on a timer is a
deployment. Give it waves, a kill switch and a consumer that cannot panic.
https://blog.cloudflare.com/18-november-2025-outage/
Postmortem
Datadog2023-03
2023-03-08 Incident: Infrastructure connectivity issue affecting multiple regions
The cleanest published example of independent regions failing together through a shared
input. Also unusually honest about testability: the interaction was unreachable on a
freshly booted node, so no pre-production test could have found it.
Carry forwardEnumerate every channel that can change a machine
without passing through your pipeline. Each is a failure domain you did not draw.
https://www.datadoghq.com/blog/2023-03-08-multiregion-infrastructure-connectivity-issue/
Postmortem
Roblox2022-01
Roblox Return to Service 10/28-10/31 2021
Seventy-three hours, almost all of it diagnosis. The two named contributing structures
are a single Consul cluster serving many workloads and a circular dependency between
telemetry and that cluster.
Carry forwardPut a cell's observability strictly outside the
cell. A detector inside the failure domain turns an outage into a mystery.
https://about.roblox.com/newsroom/2022/01/roblox-return-to-service-10-28-10-31-2021
Postmortem
CrowdStrike2024-08
Channel File 291 Incident Root Cause Analysis
A 21-versus-20 field mismatch that survived months of testing because every test used a
wildcard on the field that differed. The remediation list is the best published statement
of what a change plane needs: rings, bake time and customer-controlled rollout.
Carry forwardAn upstream validator with a logic error protects
nothing. The consumer must survive malformed input from its own vendor.
https://www.crowdstrike.com/wp-content/uploads/2024/08/Channel-File-291-Incident-Root-Cause-Analysis-08.06.2024.pdf
Paper
Amazon / USENIX NSDI '202020-02
Millions of Tiny Databases (Physalia)
The only peer-reviewed account of a cellular system in this corpus, and the only source
that treats the change plane as a first-class partitioning problem. Section 3.4 introduces
colours; section 3.3 explains why replication weakens canarying.
Carry forwardCells partition the request path. A second,
orthogonal partition is needed for deployments, patching and load, and it must be a
property of the node, not a setting in the pipeline.
https://www.usenix.org/conference/nsdi20/presentation/brooker
Paper
Microsoft Research, HotOS '172017-05
Gray Failure: The Achilles' Heel of Cloud-Scale Systems
Defines the failure mode that defeats automated containment, and proves the
counter-intuitive corollary that under high fan-out, more redundancy means a higher
probability that any given request touches the degraded component.
Carry forwardDrain decisions must be driven by
caller-observed success, never by the failing component's own health check.
https://www.microsoft.com/en-us/research/wp-content/uploads/2017/06/paper-1.pdf
Talk
AWS re:Invent 20192019-12
ARC411-R1: Reducing blast radius with cell-based architectures
The canonical five-property definition of a cell and the three-word router rule. Also the
clearest statement that cell size is a genuine trade rather than a preference, with the
benefits of large cells stated as honestly as those of small ones.
Carry forward"Thinnest possible layer." If your router grows
business logic, it has become the largest shared component you own.
https://d1.awsstatic.com/events/reinvent/2019/REPEAT_1_Reducing_blast_radius_with_cell-based_architectures_ARC411-R1.pdf
Talk
Slack / QCon SF2024-11
Slack's Migration to a Cellular Architecture (Cooper Bethea)
The organisational account the blog post leaves out: the first, top-down design was
abandoned because running two production environments was unaffordable, and adoption
only worked bottom-up, service by service, over more than a year for the critical ones.
Carry forwardBudget the migration as a multi-year programme
with a per-service opt-in, and measure progress by drain time, weekly.
https://www.infoq.com/presentations/slack-cellular-architecture/
Eng blog
Slack2023-08
Slack's Migration to a Cellular Architecture
The best public description of siloing by availability zone, of the drain machinery, and
of the gray failure that triggered it on 30 June 2021. Ends on the practical obstacle
nobody mentions: legacy discovery interfaces, and DNS in particular.
Carry forwardInventory your service-discovery interfaces
before designing the drain. Anything that resolves through DNS cannot be partially
drained.
https://slack.engineering/slacks-migration-to-a-cellular-architecture/
Eng blog
Shopify2019
A Pods Architecture To Allow Shopify To Scale
The clearest account of the distinction between sharding and isolating. Sharding in 2015
solved capacity and left a platform-wide failure mode; pods in 2016 made a request need
exactly one shard. Only the datastores are podded.
Carry forwardSharding is not isolation. The property that
matters is that serving a request requires exactly one partition to be online.
https://shopify.engineering/a-pods-architecture-to-allow-shopify-to-scale
Eng blog
Salesforce2022-08
Architectural Principles for High Availability on Hyperforce
Shows cells and availability zones composed rather than substituted: a cell spans three
AZs and is internally redundant. Also states the deployment staggering explicitly, canary
on a small set of cells then stagger across the rest.
Carry forwardA cell is a unit of blast radius, not a unit of
redundancy. It still needs redundancy inside it.
https://engineering.salesforce.com/architectural-principles-for-high-availability-on-hyperforce/
Eng blog
InfoQ, reporting DoorDash2024-01
DoorDash Uses Service Mesh and Cell-Based Architecture to Significantly Reduce Data Transfer Costs
The cost-first case for cells: one Kubernetes cluster per cell, no inter-cell traffic,
and Envoy zone-aware routing keeping calls local. Second-hand, because DoorDash's own
post returned HTTP 403 during this research; InfoQ quotes their engineers directly.
Carry forwardAZ-shaped cells can be cost-positive, which is
the strongest argument you will have in a funding conversation. Zone affinity must hold
at every hop or the saving evaporates.
https://www.infoq.com/news/2024/01/doordash-service-mesh/
Eng blog
The Pragmatic Engineer2023-05
Inside Datadog's $5M Outage
Independent analysis of the March 2023 incident with the cost estimate and the size of
the response. Useful mainly for the framing that multi-cloud bought Datadog nothing,
because the shared thing was the operating-system image.
Carry forward"Multi-cloud" is not a failure-domain claim.
Ask what artefact is identical across the clouds.
https://newsletter.pragmaticengineer.com/p/inside-the-datadog-outage
Decision record
Kubernetes SIG Network2021
KEP-2433: Topology Aware Hints
The design record for the platform's zone affinity, and it is refreshingly explicit that
the whole thing rests on an assumption: traffic is proportional to allocatable CPU per
zone. States the 20% and 30% thresholds and the kube-proxy fallback.
Carry forwardRead the assumptions section before adopting.
If your traffic does not originate proportionally to capacity, the heuristic is wrong
for you and will either overload a zone or switch itself off.
https://github.com/kubernetes/enhancements/blob/master/keps/sig-network/2433-topology-aware-hints/README.md
Decision record
Kubernetes SIG Network2024-2026
KEP-4444: Traffic Distribution for Services
The record of the heuristic being superseded, and the reason given is operability rather
than correctness: less user control, less predictable, and users reporting that hints
were not applied. Alpha in 1.30, GA in 1.33.
Carry forwardTwo successive redesigns of the same feature in
five years is the signal. Do not build an isolation boundary on top of it.
https://github.com/kubernetes/enhancements/blob/master/keps/sig-network/4444-service-traffic-distribution/README.md
Source
kubernetes/kubernetes2020-12
PR #96736: core/v1: deprecate Service topologyKeys
The recorded rejection of the explicit approach. topologyKeys let an
operator state a preference order directly; it was deprecated in 1.21 and removed in
1.22 in favour of automatic per-endpoint hints.
Carry forwardThe platform deliberately chose an advisory,
automatic mechanism over an explicit one. If you need explicit, you are building it
yourself, as Slack and DoorDash both did.
https://github.com/kubernetes/kubernetes/pull/96736
Source
kubernetes/kubernetes2022-11
Issue #113731: Support topology aware routing (node and zone)
The request to bring back deterministic rules after topologyKeys was removed,
and the most direct statement of what is wrong with the replacement: "Sometimes the
CPU-balance heuristic is wrong... we may erroneously disable hints", plus "Hints do not
work at low-endpoint counts" and "Hints are not deterministic".
Carry forwardDeterminism is the property an isolation boundary
needs and the property the heuristic explicitly does not offer. This issue is the bridge
between the 2020 removal and the 2024 replacement.
https://github.com/kubernetes/kubernetes/issues/113731
Source
envoyproxy/envoy2023-07
Issue #28419: Zone-aware load balancing incorrectly handles mismatched local and upstream localities
Three separate bugs, all triggered by the same real-world condition: the caller's zone
set and the callee's zone set are not identical. Sorting collapsed empty localities and
misaligned the index mapping, so interchangeable zones got different traffic. Fixed in
Envoy 1.28.0, October 2023.
Carry forwardZone affinity assumes symmetry you will not have.
Pin the Envoy version, and assert zone distribution in a test rather than trusting it.
https://github.com/envoyproxy/envoy/issues/28419
Source
envoyproxy/envoy2026-02
Issue #43665: Proposal, ORCA-driven locality routing
The still-live limitation, stated by the proposer: zone-aware routing splits traffic on
healthy host counts or weights and "has no visibility into actual backend load", so
uneven demand produces hotspots the router cannot see.
Carry forwardZone affinity balances by capacity, not by load.
If your demand is skewed by zone, you need per-cell load signal in the routing decision.
https://github.com/envoyproxy/envoy/issues/43665
Source
istio/istio2019-10
Issue #18500: support zone aware routing of envoy
Opened in October 2019 and closed without Envoy's zone-aware routing being exposed. The
reported problem with the mesh's alternative is concrete: locality weighted load
balancing imbalances "if replicas of a service is NOT equal in each zones", which is the
normal state of a Kubernetes deployment.
Carry forwardA feature request that stays open for years is a
statement about the maintainers' model of the problem. Do not plan around it landing.
https://github.com/istio/istio/issues/18500
Source
AWS Solutions Library2023-2026
guidance-for-cell-based-architecture-on-aws
A working CDK implementation of router plus cells, useful for the routing pattern where
the client caches the cell endpoint. Worth reading against the vendor's own guidance: the
pipeline updates a sandbox cell, checks aliveness, then updates all other cells.
Carry forwardRead the reference implementation's pipeline, not
just its architecture. One canary then everything is the change-plane anti-pattern this
guide is about, shipped in the vendor's own sample.
https://github.com/aws-solutions-library-samples/guidance-for-cell-based-architecture-on-aws
Vendor
AWS Well-Architected2023-09
Reducing the Scope of Impact with Cell-Based Architecture: Cell design
The ideal stated plainly, "no cross-cell API calls, no shared resources like databases or
S3 buckets", along with the admission that it is not always achievable and that cross-cell
dependencies "can quickly eliminate the benefits".
Carry forwardMake cross-cell dependency a build-time
assertion, not a review-time aspiration. No source in this corpus publishes such a check.
https://docs.aws.amazon.com/wellarchitected/latest/reducing-scope-of-impact-with-cell-based-architecture/cell-design.html
Vendor
AWS Well-Architected2023-09
Cell partition
The partition-key guidance, including the grain rule and the worked warning about
customer ID failing when one customer outgrows a cell. Recommends routing unavoidable
cross-cell calls back through the router rather than cell to cell.
Carry forwardDesign the composite key on day one. Retrofitting
a second partition dimension after a customer outgrows a cell is a migration, not a
config change.
https://docs.aws.amazon.com/wellarchitected/latest/reducing-scope-of-impact-with-cell-based-architecture/cell-partition.html
Vendor
AWS Well-Architected2023-09
Cell deployment
States the wave rule, "deploy in waves, cell by cell or set of cells", and is unusually
honest about the operational bill: you now have "tens, hundreds or even thousands of
instances of your workload to deploy and operate".
Carry forwardThe pipeline is a prerequisite, not a follow-up.
Cells without wave deployment are a bigger fleet with the same blast radius.
https://docs.aws.amazon.com/wellarchitected/latest/reducing-scope-of-impact-with-cell-based-architecture/cell-deployment.html
Vendor
AWS Well-Architected2023-09
Reducing the Scope of Impact with Cell-Based Architecture (overview)
Positions cells as bringing "the same fault isolation concepts that AWS applies in its
Availability Zones and Regions to the level of your workload architecture", and notes
AWS service teams have used the pattern for more than a decade.
Carry forwardUseful framing for a design review: you are
buying the isolation property the cloud provider sells you, one layer up.
https://docs.aws.amazon.com/wellarchitected/latest/reducing-scope-of-impact-with-cell-based-architecture/reducing-scope-of-impact-with-cell-based-architecture.html
Vendor
Kubernetes2026
Topology Aware Routing (documentation)
The five documented conditions under which hints are silently withheld, including a node
missing a zone label or an allocatable CPU value, and the caution that the approach
"will not work well for Services that have a large proportion of traffic originating from
a subset of zones".
Carry forwardAlert on hints being absent. Silent fallback to
cross-zone routing is both a cost regression and a loss of the boundary you thought you
had.
https://kubernetes.io/docs/concepts/services-networking/topology-aware-routing
Vendor
AWS Architecture Blog2021-06
Overview of Data Transfer Costs for Common Architectures
The pricing asymmetry that makes AZ-shaped cells pay for themselves: transfer within an
availability zone is free, and transfer across them is charged. This is the economic
engine behind DoorDash's design.
Carry forwardModel the transfer bill before the resilience
case. In a chatty microservice estate, the cost argument for zonal cells is often the
stronger one.
https://aws.amazon.com/blogs/architecture/overview-of-data-transfer-costs-for-common-architectures/