Skip to content

Jean Boussier & IO-Bound Misconceptions

July 14, 2025 · 1 h 5 min

Show notes

Jean Boussier, Senior Staff Engineer at Shopify and member of the Rails Core team, joins Robby to dig into the performance realities behind modern Rails apps.

They explore what it means to be IO-bound or CPU-bound, how Ruby’s Global VM Lock affects concurrency, and why "fast" is too vague to be useful. Jean explains why instrumentation is often the missing piece and shares thoughtful approaches to using background jobs with intention.

They also talk about gem dependencies. The gems in your `Gemfile` are not magic. If your app depends on them, you should understand them. You can read the code. You can patch it. You can make it your own.

This episode is a reminder that Rails is not a black box. It is a system you can study, shape, and improve. The more you learn how it works, the more confidently you can build with it.

🔗 References & Resources Mentioned

- 📖 Crafting Interpreters – A book Jean recommends for understanding how interpreters and Ruby internals work

- 🧵 GVL Tools (Shopify gem) – A tool for measuring thread contention in Ruby apps

- 📊 AppSignal – Monitoring platform that integrates with GVL instrumentation

- 🚢 ShipIt Engine – Shopify’s open-source deployment tool

- 🔒 Ruby’s Global VM Lock – Overview of what the GVL is and how it works

- 🦄 Unicorn – A classic preforking Ruby web server

- 🐆 Puma – A multi-threaded Ruby/Rack web server

- 🔀 Pitchfork – Shopify’s fork of Unicorn, optimized for their infrastructure

- ⚙️ ActiveRecord Async Queries – Jean’s Rails Core contribution for backgrounding slow queries

- 🔗 GraphQL – Used at Shopify to structure and query API data



Send us Fan Mail

On Rails is a podcast focused on real-world technical decision-making, exploring how teams are scaling, architecting, and solving complex challenges with Rails.

On Rails is brought to you by The Rails Foundation, and hosted by Robby Russell of Planet Argon, a consultancy that helps teams modernize their Ruby on Rails applications.

All episodes of On Rails

Settings

Display

Language

Decides which stations you see first on the home page.

History

Recently played stations and episodes and your latest searches are only stored in this browser.

Notifications

A short notice when a podcast you follow has a new episode. Turn off single podcasts with the bell on their page.

Account

Save favorites – in the app and on the website.

Keyboard shortcuts

/
Open search
Space
Play or pause
← →
In the player: back 15 s, forward 30 s (episodes) · in a row: next tile
↑ ↓
In a row: target within the tile
Home / End
In a row: first or last tile
Esc
Close window or menu
?
This overview
Now playing

Go to station page

Play next

    Add episodes with “Play next” – they play after the current episode.