A day in the life of 2,000 developers
summary
Stripe runs a ~25M-line Ruby monorepo with 1.5 million tests that would take two months on one machine, so CI uses file-access tracing (LD_PRELOAD now, moving toward eBPF) to map tests to files and cut runs to ~1,000–2,000 tests — a 99.5% reduction with ~1% flake. Tooling includes Sorbet types, VS Code LSP, a Rust rubyfmt and rubocop. Merges use integration branches and deploys use blue‑green traffic shifts, enabling traffic-shift rollback in 1s.
AI-written summary · about
chapters (14)
- 0:00Introduction and context
- 1:03Who is Stripe and what it does
- 2:49Debugging a currency issue in production
- 7:23Benefits of static type checking
- 9:07Running CI at massive scale
- 12:57Smart test selection for CI
- 17:11Integration branches for safe merges
- 19:37Q&A begins
- 20:00Optimizing container builds
- 22:07QA and pre-production testing
- 24:51Automated traffic shifting in production
- 25:53Optimizing Ruby process startup
- 27:14Upgrading to Ruby 3.3 and YJIT
- 28:36Closing remarks and Q&A
related talks
39mGradual typing of Ruby at Scale
28mKeeping Developers Happy with a Fast CI
34mShitlist-driven development and other tricks for working on large codebases
33mMeet Shopify's Ruby and Rails Infrastructure Team
29mA Tale at Any Scale
29mLessons From A Rails Infrastructure Team
35mCI/CD and devops with Ruby and Rails
38mMinions: One-Shot Coding Agents on a 30M-Line Codebase
