Scaling checklist
Every rule in the scaling playbook, by chapter, required rules first. Each links to its own page with how we built it and how to check it. This is a lot to check. An Expert can check it for you.
Measure before you scale
- Recommended SCL-1 Find the bottleneck before you add servers
- Recommended SCL-2 Profile the slow path before you change it
- Recommended SCL-3 Write down the load you plan for
- Recommended SCL-4 Size workers and pools from rate times duration
- Recommended SCL-5 Make one server fast before you add more
Stateless app servers
- Required SCL-8 Keep locks and counters in a shared store
- Recommended SCL-6 Run two copies of the app in staging
- Recommended SCL-9 Start fast and warm up before taking traffic
- Recommended SCL-10 Run web and worker processes apart
- Recommended SCL-37 Keep no state inside the app process
- Avoid SCL-7 Pinning each visitor to one server
Caching
- Required SCL-14 Cap the cache server's memory and choose its eviction
- Required SCL-15 Keep the app working when the cache is gone
- Recommended SCL-11 Cache what is read often and costly to build
- Recommended SCL-12 Put a format version in every cache key
- Recommended SCL-13 Let one caller rebuild an expired entry
- Recommended SCL-35 Decide how stale a cache may be
Background jobs and queues
- Required SCL-17 Make every job safe to run twice
- Required SCL-19 Bound the backlog and push back on producers
- Recommended SCL-16 Move slow work out of the request
- Recommended SCL-18 Give every job a time limit
- Recommended SCL-20 Keep urgent jobs in their own queue
- Recommended SCL-21 Put record IDs in jobs instead of copies
- Recommended SCL-22 Spread scheduled work across the hour
- Recommended SCL-34 Set aside messages that keep failing
- Recommended SCL-38 Run each scheduled job once at a time
Growing the database
- Required SCL-23 Fit the connection budget to the autoscaling maximum
- Required SCL-27 Change large tables in small batches
- Recommended SCL-24 Keep reports and exports off the primary
- Recommended SCL-25 Partition tables that outgrow memory
- Recommended SCL-26 Move finished rows out of hot tables
- Recommended SCL-36 Watch size and growth
- Avoid SCL-28 Splitting one database across servers too early
Load balancing and autoscaling
- Recommended SCL-29 Spread load by requests in flight
- Recommended SCL-30 Scale on the resource that runs out
- Recommended SCL-31 Give each customer a fair share
- Recommended SCL-32 Turn off optional work under load
- Recommended SCL-33 Track cost per request
Show the badge on your project
When your project passes every Required rule, you can show this badge on your site or in your README. It links to this checklist, so anyone can run the same checks.
<a href="https://agentwranglers.se/playbook/scaling/checklist"><img src="https://agentwranglers.se/badge.svg" alt="Checked against the Agent Wranglers scaling playbook" width="214" height="20"></a>
[](https://agentwranglers.se/playbook/scaling/checklist)
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/scaling/checklist">Agent Wranglers scaling playbook</a>. In code you write, add a comment next to it with the same link.