Testing Rails at Scale
summary
Shopify replaces a slow hosted CI with a Buildkite scheduler and self-managed compute on AWS, using autoscaled EC2, spot/reserved instances, and a custom allocator called Scrooge, plus Locutus for container builds. The result builds Shopify in under 5 minutes, runs 700 builds a day against ~42,000 tests each, and distributes work across 30,000 docker containers while swallowing docker failures, deduplicating test runs via Redis, and treating machines as cattle not pets to keep costs steady.
AI-written summary · about
chapters (17)
- 0:00Intro
- 0:55Scheduler
- 2:59Beginning of a Journey
- 4:28Instances
- 5:33Optimizing Cost
- 7:12Docker
- 7:57Building Containers with Locutus
- 8:51Test Distribution Tests allocated based on container index
- 9:31Artifacts
- 10:32Battling Confusion
- 11:08Clustering Locutus
- 12:19Test Distribution v2
- 13:35Handling Infrastructure Failures
- 14:38Treating Servers as Cattle
- 15:26Test Distribution v3
- 16:21Don't build your own CI
- 17:16Lessons Learned
related talks
28mKeeping Developers Happy with a Fast CI
40mHow Shopify Scales Rails
39mScaling R&D to thousands of people without dedicated QA
27mJenkins with Ruby on Rails
06mBuilding Continuous Delivery Pipelines
37m5 Years of Rails Scaling to 80k RPS
34mTesting the Untestable
43mServer Infrastructure for Rails in 2016
