A cold cache after every deploy, and the warmer we wrote

A deploy that flushes the cache produces two minutes of every request doing the expensive thing at once.

# after the release is switched, before traffic notices
for url in $(cat config/warm-urls.txt); do
  curl -so /dev/null -H 'X-Warm: 1' "http://localhost$url" &
done
wait

# 14 urls, covering the routes that build the expensive
# caches. takes 4 seconds and runs before the health
# check passes.

A warmer is an admission that the cache is load-bearing, which it is, and the alternative — not invalidating on deploy — is only available if the cached shapes are versioned. Fourteen URLs chosen from the access log covers the paths that matter; trying to warm everything turns a four-second step into a two-minute one and warms things nobody requests.