Every source behind this page, graded. One methodological note: this guide
was researched from a sandbox whose network policy allowed full fetches of GitHub and
datadoghq.com; sources on other hosts were verified through multiple independent search
results rather than direct fetches, and the two talks are cited to their programme pages
rather than to timestamps in the recordings. The ledger shipped beside this page
(sources.md) marks the verification method per source.
Postmortem
Slack2021-02
Slack's Outage on January 4th 2021
The fullest public account of autoscaling behaving badly mid-incident: CPU-triggered
scale-down of healthy servers, thread-triggered 1,200-instance scale-up, and a
provisioning service sharing fate with the broken network.
Carry forwardYour load signal and your health signal must be
different signals; the provisioning path is tier-0.
slack.engineering
Postmortem
AWS2020-11
Summary of the Amazon Kinesis Event (us-east-1)
A routine capacity addition crossed an invisible fleet-wide OS thread limit and took
17 hours to unwind. The scale-up itself was the change that broke production.
Carry forwardCanary your scale-ups; audit anything all-to-all
for limits that fleet size consumes.
aws.amazon.com/message/11201
Postmortem
AWS2025-10
Summary of the DynamoDB Service Disruption (us-east-1, Oct 2025)
The DNS race is the headline; the capacity lesson is below it: EC2's droplet-lease
manager entered congestive collapse and regional instance launches were impaired for
roughly 12 hours after the trigger was fixed.
Carry forwardEvery autoscaler in a region shares one launch
control plane; plan a mode that needs no new instances.
aws.amazon.com/message/101925
Postmortem
Datadog2023-05
2023-03-08: deep dive into the platform-level impact
How a systemd security update deleted CNI routes on 60% of instances across three
clouds, and how AWS health automation turned disconnection into mass termination.
Carry forwardCloud remediation automation is part of your
failure model; disconnected is recoverable, terminated is not.
datadoghq.com
Postmortem
Datadog2023-06
2023-03-08: deep dive into the platform-level recovery
The best published record of re-provisioning at scale: rate limits on 99% of ENI calls,
a 15,500-instance mesh limit, cluster maximums, Vault saturation, and the decision to
switch the autoscaler off.
Carry forwardRecovery throughput is bounded by the cloud
control plane, and those bounds are invisible until you hit them; go find yours first.
datadoghq.com
Postmortem
Robinhood2020-03
An Update From Robinhood's Founders
Thin by design, and useful for exactly that reason: "unprecedented load", a "thundering
herd", a DNS failure, and no architectural detail. The thinnest postmortem in this wall
maps the limits of the public record.
Carry forwardWhere accounts are thin, weight the detailed ones
more, and treat magnitude-unknown, time-known spikes as pre-scaling problems.
robinhood.com
Blog
Netflix2013-11
Scryer: Netflix's Predictive Auto Scaling Engine
The founding document of this topic. Names the provisioning lag (10 to 45 minutes) and
the outage-then-retry-storm trap that reactive scaling walks into, then builds prediction
from traffic history instead.
Carry forwardThe 2013 failure list is a checklist; test your
autoscaler against each entry before production does.
netflixtechblog.com
Blog
Shopify~2021
Capacity Planning at Scale
Kir Shatrov on how Shopify sizes for BFCM: forecast models, estimates filed with cloud
providers early enough for physical hardware to exist, and rehearsal scale-ups with
names (Mayday, Spooky, Oktoberfest).
Carry forwardCloud capacity is not infinite on the day you
need it; large peaks are negotiated with providers months ahead.
shopify.engineering
Blog
Shopify2025-11
How we prepare Shopify for BFCM (2025)
The current edition of the yearly readiness account: 284M requests/min edge peak in
2024, production load testing from three regions with the Genghis tool, and months of
failover rehearsal for a four-day event.
Carry forwardThe world's most spike-exposed commerce platform
treats its peak as a project, not an autoscaler setting.
shopify.engineering
Blog
Coinbase2022-02
Everyone Wins at Super Bowl LVI
The company's own account of the QR-code ad: 20M+ hits in a minute, six times previous
benchmarks, load tests beaten by reality, throttling as the stabiliser.
Carry forwardForecast error of 6x is a design input; admission
control is what turns it into degradation instead of outage.
blog.coinbase.com
Blog
Airbnb2022-05
Dynamic Kubernetes cluster scaling at Airbnb
What outgrowing the autoscaler looks like: the built-in node-selection strategies could
not express Airbnb's cost and instance-type logic, so they built the gRPC expander
plug-point and upstreamed it.
Carry forwardScaling decisions eventually encode business
policy; pick tools with a seam where that policy can live.
medium.com/airbnb-engineering
Blog
Lorin Hochstein2021-02
Slack's Jan 2021 outage: a tale of saturation
Independent close reading of the Slack postmortem as a chain of saturations, valuable
as a second analytical perspective not written by the affected company.
Carry forwardSaturation propagates along shared dependencies;
map which of your control loops share a bottleneck with the systems they control.
surfingcomplexity.blog
Paper
Google2020-04
Autopilot: workload autoscaling at Google (EuroSys '20)
The measured case for autoscaling as a cost tool: autopiloted jobs run at 23% slack
versus 46% for manual limits, with OOM-impacted jobs reduced 10x, across Google's fleet.
Carry forwardAutoscaling's proven win is reclaiming slack
safely; treat surge survival as a separate requirement with separate machinery.
dl.acm.org
Paper
Meta (Facebook)2016-11
Kraken: leveraging live traffic tests (OSDI '16)
Facebook's answer to "what is our real capacity": continuously shift live user traffic
to load individual systems and regions, with user-experience metrics as the guardrail;
credited with over 20% utilisation improvement.
Carry forwardSynthetic load tests bound the wrong thing; only
live traffic finds the bottleneck that will find you.
usenix.org
ADR
Kubernetes SIG Autoscaling2019
KEP-853: Configurable scale up/down velocity for HPA
The decision record that ended the velocity argument: names the application classes
(fast-up slow-down web, fast-both batch), cites the 2016 issues, and ships the
per-workload behavior API in v1.18.
Carry forwardWrite your own scale-up and scale-down policy per
workload class; the defaults encode nobody's risk profile.
github.com/kubernetes/enhancements
ADR
Kubernetes SIG Autoscaling / Airbnb~2021
Cluster Autoscaler proposal: expander plugin over gRPC
Airbnb's recorded rationale for a pluggable scaling-decision point: business logic in
node selection changes faster than the autoscaler's release train, and forking is the
only alternative.
Carry forwardAn extension seam in the decision plane is worth
more than any particular built-in strategy.
github.com/kubernetes/autoscaler
ADR
Karpenter2025, main branch
Design: static capacity
The just-in-time autoscaler adding fixed-size NodePools, motivated by
"performance-critical applications where just-in-time provisioning latency is
unacceptable" and by users faking it with placeholder pods.
Carry forwardWhen users of an elastic system keep building
static floors out of workarounds, the floor is a requirement, not a smell.
github.com/kubernetes-sigs/karpenter
ADR
Karpenter2025, main branch
RFC: capacity buffer support
Headroom as a first-class API: pre-provisioned spare capacity that scales with the
workload, replacing balloon-pod workarounds. Cites five separate community requests.
Carry forwardSize buffers in workload terms (pods you must
absorb inside the lead time), not node counts.
github.com/kubernetes-sigs/karpenter
Source
Kubernetes2016-09
PR #32408: allow customizing scale-forbidden-windows (closed unmerged)
An HPA maintainer's own attempt to expose velocity control, rejected: "We cannot expose
them, as the algorithm may be changed in the future... We don't want to engrave internal
stuff."
Carry forwardThe rejected PR records the argument you will
have again; read it before re-litigating.
github.com/kubernetes/kubernetes/pull/32408
Source
Kubernetes2016-10
PR #34424: move scale forbidden windows to hpa spec (closed unmerged)
Second community attempt within a month, closed with a pointer to the first: the
windows are "internal details of the autoscaling algorithm". The demand signal was
already unmistakable in 2016.
Carry forwardCount the duplicate asks; repeated unmerged PRs
for the same knob usually mean the abstraction boundary is wrong.
github.com/kubernetes/kubernetes/pull/34424
Source
Kubernetes2017-11
Issue #56335: programmable waiting time before autoscale-up/down
The thread where the position is stated most crisply ("we shouldn't expose it as a
knob") and where it starts to crack ("the problem... is still there and needs to be
addressed"). Issues #39090, #65097 and #69428 carry the same ask from 2016 onward.
Carry forwardDesign arguments live in issue threads years
before they reach a KEP; that is where to look for the reasoning.
github.com/kubernetes/kubernetes/issues/56335
Source
Kubernetes SIG Autoscalingliving doc
Cluster Autoscaler FAQ
The operational truth of the mainline autoscaler in one file: latency SLOs, the 3-to-4
minute GCE node figure, quota backoff up to 30 minutes, the 45%-unready halt, and the
pause-pod overprovisioning recipe.
Carry forwardThe FAQ of a mature tool is its honest spec;
read it before the marketing page.
github.com/kubernetes/autoscaler
Source
Netflix2013
Netflix/aws-autoscaling
The tooling and documentation Netflix published alongside its autoscaling practice;
period evidence that the lessons in Scryer were operationalised, not aspirational.
Carry forwardA company's public repos date-stamp when practice
matched the blog post.
github.com/Netflix/aws-autoscaling
Case study
Datadog2023-11
Container Report (Nov 2023 edition)
Fleet-scale measurement: over half of Kubernetes organisations run HPA, over 65% of
workloads use less than half their requested CPU and memory, and under 1% use VPA.
Carry forwardAdoption of autoscaling and elimination of waste
are uncorrelated in practice; budget accordingly.
datadoghq.com/container-report
Case study
CAST AI2024
Kubernetes Cost Benchmark Report
Across customer clusters of 50+ CPUs: 13% of provisioned CPU and 20% of memory
utilised. A vendor with an optimisation product to sell, so read as directional, but
consistent with Datadog's independent measurement.
Carry forwardCorroborated across two vendors: the industry
buys roughly 5x the compute it uses, which is unpriced headroom nobody planned.
cast.ai
Vendor
AWS2021-04
EC2 Auto Scaling introduces Warm Pools
The platform's own admission that launch latency breaks elasticity for slow-booting
apps: pre-initialised stopped instances, claimed to serve "in as low as 30 seconds".
Mechanics in the user guide.
Carry forwardVendor features track real failure modes; a new
knob is a map of someone's outage.
aws.amazon.com
Talk
Datadog / USENIX2023-10
The World Blew Up but We're All Okay (SREcon23 EMEA)
Laura de Vesine and Laurent Bernaille on running the March 2023 recovery: coordinating
more than 500 engineers over 2+ days. Cited here to the programme page and slide deck;
the recording was not fetchable from this research environment.
Carry forwardMass recovery is an organisational capacity
problem as much as a compute one; 500-engineer coordination does not improvise well.
usenix.org
Talk
The Downtime Project2021
Ep. 1: Slack vs TGWs
Practitioner podcast walkthrough of the Slack incident by engineers unaffiliated with
Slack; the companion episode "Kinesis Hits the Thread Limit" covers the AWS event.
Cited to the episode pages.
Carry forwardThird-party incident walkthroughs surface the
questions the sanctioned postmortem was too polite to ask.
downtimeproject.com