ShopifyがRedisをMySQLに置き換えて在庫管理をスケール

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

Mengapa Ini Penting

大規模ECにおけるMySQLの在庫管理適用可能性を実証し、Redis依存の再考を促す事例

Shopifyは在庫予約システムをRedisからMySQL 8に移行し、2025年ブラックフライデーのピーク時に毎分510万ドルの売上処理を達成した。

Shopifyは長年Redisで運用してきた在庫予約システムをMySQL 8に移行し、高負荷トラフィック下でのスケール目標を達成したことをエンジニアリングブログで公表した。

在庫予約システムは、チェックアウト時に同一商品が複数の購入者に販売される「oversell(過剰販売)」を防ぐ仕組みで、支払い処理中に短時間の在庫ホールドを行う。2025年ブラックフライデーのピーク時には、Shopifyプラットフォーム上で毎分510万ドルという過去最高の売上が記録され、すべてのトランザクションが在庫システムを通過した。

移行の鍵となったのはMySQL 8の「SKIP LOCKED」機能だ。従来の「商品ごとに1行・数量カラムで管理」する設計では競合(コンテンション)が発生していたが、「在庫ユニットごとに1行」とする設計に変更することで問題を解消した。この手法は37signalsのデータベースベースの負荷分散アプローチからヒントを得たという。

複合主キーおよびコネクションの可視性制御も組み合わせることで、高スループットを実現。移行チームは「本当のボトルネックは観測・計測していた箇所ではなかった」と述べており、計測の盲点が最大の教訓だったとしている。

Sumber

shopify.engineering — Baca artikel asli →