Shopify、在庫管理をRedisからMySQLへ移行し大規模スケール達成

Original : Shopify replaced Redis with MySQL for inventory reservations–and it scaled

Pourquoi c'est important

大規模ECにおけるMySQLの在庫管理への適用可能性を実証した事例として業界注目。

Shopifyは在庫予約システムをRedisからMySQL 8に移行した。SKIP LOCKEDや複合主キーを活用し、2025年ブラックフライデーのピーク時(毎分510万ドルの売上)でも高スループットを維持することに成功した。

Shopifyはチェックアウト時の在庫過剰販売(oversell)防止システムを、長年利用してきたRedisからMySQL 8ベースのアーキテクチャへ刷新した。同システムは決済処理中に在庫を一時的に「予約」し、同一商品の二重購入を防ぐ重要な役割を担う。

移行の背景には、同社の「統合データベース戦略」への転換がある。過去の移行試みは失敗に終わっていた。商品1件につき1行・数量カラムで管理する旧設計では、同時アクセス時のコンテンション(競合)が激しく、スケールが困難だった。

新設計では、MySQL 8の「SKIP LOCKED」機能を活用し、在庫ユニットごとに1行を割り当てる方式を採用。37signalsのデータベースベース負荷分散手法にヒントを得たという。複合主キーと接続可視性の制御も組み合わせることで、スループット目標を達成した。

2025年ブラックフライデーのピーク時には毎分510万ドルという記録的な売上を処理。移行後のシステムはこの高負荷に対応した。エンジニアリングチームは「最大のボトルネックは、観測・計測していた箇所ではなかった」と述べており、真の課題発見が成功の鍵だったと明かしている。

Source

shopify.engineering — Lire l'original →