Shopify runs on Rails, and that should end a certain argument

Every few months someone announces that Ruby on Rails cannot handle serious scale. The argument is usually made in the abstract, with benchmarks measuring how many hello-world responses a framework can emit per second.

Meanwhile Shopify processes Black Friday on Rails.

The traffic shape is the interesting part

Shopify's load is unusual, and worse than steady high traffic. A single merchant announcing a product drop can generate a spike that dwarfs the platform's ordinary baseline within seconds, with no warning and no way to pre-scale for it. That is a harder problem than serving a lot of consistent traffic.

Their answer was not to rewrite in a faster language. It was architectural: partition the platform into pods, each a self-contained slice with its own database shard, so that one merchant's stampede is contained rather than shared. They also invested heavily in horizontal MySQL sharding through Vitess.

What that tells you

Framework throughput was not the constraint. Data layer topology was. Swapping Rails for something with better benchmark numbers would have left the actual bottleneck exactly where it was, at considerable cost.

This pattern repeats. GitHub is a very large Rails application. Airbnb's core booking flow runs on Rails. These are not companies that failed to notice performance; they are companies that identified where their real limits were and spent effort there instead.

The honest caveat

None of this means Rails is the right pick for everything. Ruby is genuinely slower per-operation than Go or Java, and if you are writing something CPU-bound — video transcoding, a high-frequency trading path, a game server tick loop — that difference is real and you should care about it.

But most web applications are not CPU-bound. They spend their time waiting on databases and network calls, where the language is a rounding error. The question worth asking is not "which framework is fastest" but "what is my service actually waiting on." For a lot of products, the honest answer is a database query you have not indexed yet.