Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
新米を「売り越さない」、Aurora DSQLで作る在庫ゼロ死守の限定ドロップEC
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yuuki Yamashita
October 31, 2026
Technology
100
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
新米を「売り越さない」、Aurora DSQLで作る在庫ゼロ死守の限定ドロップEC
Yuuki Yamashita
October 31, 2026
More Decks by Yuuki Yamashita
See All by Yuuki Yamashita
cdk deployとcdkd deploy、実際にデプロイして5倍速近くの差を実測した
yama3133
1
120
CloudWatch Logsのコスト最適化:どこまでAIに任せてどこから人間が承認すべきか
yama3133
1
190
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
720
私の推しは「聞いてから進む」AIです -AI-DLCに一人でアプリを作らせた話
yama3133
1
210
予算度外視で面倒臭い社内版X 作りました
yama3133
1
82
「今盗んで、後で解く」に備える ― AWSのポスト量子暗号入門
yama3133
2
370
LTのテーマ どうきめてる?〜5つの型と私のやり方〜
yama3133
2
140
消えない 動かない 効かない
yama3133
1
170
承認ゲートは何を守っているのか? AIエージェントの自律購入を実測した結果
yama3133
1
240
Other Decks in Technology
See All in Technology
Flutter Webを「SDK」として配る — 50以上のゲームを支える埋め込みアーキテクチャ
masayukisuda
0
160
Claude for Google Workspaces ポン出し/claude-for-google-workspace-slide-conversion
emiki
0
13k
スクラム祭り2026福井トラック_閉じたループから価値のスパイラルへ
kc_nakanishi
0
200
How we choose session proposals
kawaguti
PRO
1
190
Vibe-to-Spec開発_実践ガイド
happysamurai294
0
120
Microsoft のサポート ライフサイクルを理解する
murachiakira
PRO
0
230
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
2
630
国際カードブランドルール変更に伴うクレジットカード決済取引仕様変更について
k1style
0
270
LLMの知識とAIエージェント
happysamurai294
0
130
GitHub、使う?使わない?
happysamurai294
0
120
Filter What the LLM Reads: RAG Governance with AgentCore Gateway
yakumo
1
130
2拠点SRE活動始めてみた | sogaoh's LT @ ホンマでっかSRE勉強会 #3
sogaoh
PRO
0
190
Featured
See All Featured
So, you think you're a good person
axbom
PRO
2
2.2k
Paper Plane
katiecoart
PRO
5
54k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.7k
Mind Mapping
helmedeiros
1
420
First, design no harm
axbom
PRO
2
1.4k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
720
A Soul's Torment
seathinner
8
3.8k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.4k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Transcript
新米を「売り越さない」 Aurora DSQLで作る、在庫ゼロ死守の限定ドロップEC KomeKaigi 2026 2026年10月31日 山下 祐樹
山下 祐樹 長崎県長崎市出身 初オフライン登壇から本日でちょうど1年 AWS Community Builder(AI Engineering) 2026 Japan
All AWS Certifications Engineers JAWS-UG ビジネスストラテジー支部 (Bussiness-JAWS)運営・立ち上げメンバー
新米の限定販売、買いに行きますか?
その「売り切れ」、作ったことは?
売れないはずの101袋目「売り越し」 在庫は100袋 開始と同時に、3000人がアクセス 101袋目が売れたら、お詫びと返金が始まる
え、なんで売り越すの?
こうなりがち 残り1袋を、2人が同時に買いにきた 残り1袋を見る 在庫を0にして注文 Aさん 2袋売れた 残り1袋を見る Bさん 在庫を0にして注文
見てから減らすまでに、すき間がある その一瞬に、別の人が割り込んでくる DBが1台なら、ロックで1列に並べて防げる 東京とソウルにDBがあると、並ばせるだけで遅い
じゃあ、どう防ぐの?
椅子取りゲームを思い出してください 音楽が止まったら、全員が一斉に座りにいく 座れるのは、先に座った1人だけ 座れなかった子は、次の回にやり直し
これが「楽観的並行性制御(OCC)」 最初は遠慮しない。最後に審判が決める 椅子取りゲーム データベース 一斉に座りにいく 待たずに書き込みを始める 審判が勝ちを決める COMMITの瞬間に衝突を判定 座れなかったらやり直し 負けた処理をリトライ
Amazon Aurora DSQL サーバーレスの分散SQLデータベース PostgreSQLと互換 複数リージョンで、同じデータを読み書きできる
審判は、COMMITの瞬間に現れる 書き込みの途中では、誰も待たせない 衝突したかどうかは、COMMITで判定 負けた側には、エラー 40001 が返る 分離レベルは Repeatable Read で固定
購入処理はこれだけ BEGIN; UPDATE inventory SET stock = stock - 1
WHERE product_id = $1 AND stock > 0; INSERT INTO orders (product_id, user_ref, ...); COMMIT; -- 負けるとここで 40001
負けたら、少し待ってやり直す 待ち時間は 10ms、20ms、40ms と倍々に 毎回、ランダムに少しずらす 全員が同じ瞬間にやり直すのを防ぐため
よし、作ってみよう!
作ったのは「DROPZERO」 限定ドロップのECサイト Next.js + Vercel + Aurora DSQL 画面はスニーカー。 今日は新米1袋と読み替えて
まずは東京1か所 Aurora DSQL 東京 アプリ(Next.js) ブラウザ
ソウルを足す Aurora DSQL 東京 アプリ(Next.js) 同じデータ ブラウザ Aurora DSQL ソウル
大阪は「見届け役」 Aurora DSQL 東京 アプリ(Next.js) 同じデータ ブラウザ 大阪(witness) Aurora DSQL
ソウル
3000人、呼んでみよう!
負荷のかけ方 在庫100の商品を、1つだけ用意 東京とソウルの2か所から、合計3000リクエスト k6で、50並列の一斉購入
1回目 90件がエラーに リトライの上限は8回 売り越しは0→でも90件が500エラー 在庫は減っていない→競合に負け続けて諦めた購入
上限を40回にしたら、ちょうど100! 100 購入できた数 0 売り越し エラーも0→最終在庫は東京もソウルも0で一致
買えた人ほど、待たされる 226ms 856ms 全リクエストの中央値 購入できた100件の中央値 いちばん遅い購入は13.6秒。負けて、やり直した分だけ伸びる
人が承認すれば、もっと安全?
売り越しは、承認なしでも0 在庫20を200件で奪い合い、承認側だけ待たせた 承認待ち 承認ありの成功率 売り越し 0秒 7% 0 1秒 4%
0 3秒 0% 0 5秒 0% 0
3秒待つと、1袋も買えない 7% 承認待ち 0秒 0% 承認待ち 3秒 待っている間に、即購入側が在庫を食べ切る
承認は、安全装置じゃない 売り越しを防いでいるのは、DSQLのOCC 承認で払っているのは、スピード 承認の役目は、買いすぎや誤発注を止めること
ご清聴いただきありがとうございました