~/talk

Scaling Rails to 2M MySQL requests per second

Talkat San Francisco Ruby Conference 2025 · 2025-11-19..11-21· [ruby, databases]
speakerdeck:eugeneius
slides:none on file

Intercom hits 2 million MySQL requests/sec and solves it with concrete tactics: deploys identity_cache to cut DB reads (cache serves ~10M reads, but introduces stale-read consistency tradeoffs), moves heavy reads to replicas using a proxy adapter (complex, Rails-API fragile), horizontally shards a 25-billion-row conversations table into per-customer shards to make migrations resumable, and migrates off Aurora to PlanetScale/Vitess to split into 128 smaller nodes and enable near zero‑downtime resharding and host replacement.

AI-written summary · about

  1. 0:00Scaling Rails at Intercom
  2. 1:52Why Intercom needs 2 million database requests per second
  3. 2:55Vertical scaling trade-offs
  4. 6:22Vertical sharding in 2014
  5. 8:44Feature-specific databases
  6. 10:102015 outages and caching
  7. 15:23Read replicas in 2016
  8. 20:41Horizontal sharding in 2019
  9. 24:57Aurora upgrade in 2024
  10. 26:00Migrating to PlanetScale
  11. 28:07Summary and future plans
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.