ShopifyがRedisをMySQLに置き換え在庫予約をスケール
원제: Shopify replaced Redis with MySQL for inventory reservations–and it scaled
왜 중요한가
大規模EC基盤がRedisを廃してMySQLのみで高頻度在庫管理を実現した事例は、データベース統一戦略の実現可能性を示す重要な技術的証左となる。
Shopifyは2026年5月12日、在庫予約システムをRedisからMySQLに移行し、2025年ブラックフライデーのピーク時に毎分510万ドルの売上を処理したと発表した。MySQL 8のSKIP LOCKED機能と商品単位の行設計を採用し、高スループット目標を達成した。
Shopifyのエンジニアリングチームは、チェックアウト時の二重販売防止(オーバーセルプロテクション)システムをRedisからMySQLへ移行した経緯を公式ブログで公開した。
購入者が「購入を完了する」をクリックした際、決済処理中に在庫を一時的に確保することで、複数の購入者が同一の最後の在庫を同時に確保してしまう問題を防ぐ仕組みだ。これまでは長年Redisで運用されていたが、統一データベース戦略への移行に伴いMySQLへの切り替えが課題となった。
初期の試みでは、数量カラムを持つ単一行の設計ではコンテンション(競合)が発生し失敗。MySQL 8で導入されたSKIP LOCKED機能を活用し、商品ごとに1行ではなく在庫ユニットごとに1行を持つ設計に変更した。この設計は37signalsのデータベースベース負荷分散アプローチに着想を得ている。さらに複合主キーと接続の可視性制御も組み合わせた。
2025年ブラックフライデーのピーク時には毎分510万ドルという過去最高の売上を記録し、同システムはすべてのトランザクションの在庫処理を担った。チームは「最大の教訓はデータベース設計ではなく、実際のボトルネックが観測・計測していた箇所とは異なる場所にあったことの発見だった」と述べている。