Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
呼び出し順で、 売上金額を回収できなくした話
Search
Hayato Nakamura
May 22, 2024
0
73
呼び出し順で、 売上金額を回収できなくした話
Hayato Nakamura
May 22, 2024
Tweet
Share
More Decks by Hayato Nakamura
See All by Hayato Nakamura
定時実行の設定が難しいから、 仕組みで解決をしている話
chikin14niwa
0
110
N+1はダメなのか? システムを落としたあの日より
chikin14niwa
0
29
重要だけど、 よく忘れる仕様との付き合い方
chikin14niwa
0
88
Sessionの衝突から学んだPHPのSession作成方法 @CakeJP 2023/12/13 エンジニア小話会 PHPを語り合おう
chikin14niwa
0
370
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
What's in a price? How to price your products and services
michaelherold
246
12k
Writing Fast Ruby
sferik
628
62k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
580
Fireside Chat
paigeccino
39
3.6k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.9k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
A Modern Web Designer's Workflow
chriscoyier
696
190k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
Optimizing for Happiness
mojombo
379
70k
Transcript
© Cake.jp Co.Ltd. All Right Reserved.|Confidential 呼び出し順で、 売上金額を回収できなくした話
中村 隼人
2 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 自己紹介 • 名前
◦ 中村 隼人 • 業務 ◦ バックエンドエンジニア(PHP/Kotlin/TypeScript) • おすすめ🍰 ◦ 子どもが野菜を食べてくれる ◦ 大人が食べてもおいしい
3 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 特注商品の発注システムの開発 リクエスト=即契約かつキャンセル不可のAPIの呼び出し後に、 お客様から注文キャンセルが可能な状態を作った。
発生事象
4 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 設計→デザイン修正時にAPI呼び出し結果の情報が必要になり、 不用意に呼び出し回数を追加した。 原因
5 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 元の設計 お客様 Cake.jp
外部API サーバ 注文 注文一覧ページ 仮予約 注文リスト 注文確定 注文確定 注文結果通知
6 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 失敗したときの実装 お客様 Cake.jp
外部API サーバ 注文 注文一覧ページ 仮予約 注文リスト 注文確定 注文確定 注文結果通知 注文確定 注文結果通知
7 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 失敗したときの実装 お客様 Cake.jp
外部API サーバ 注文 注文一覧ページ 仮予約 注文リスト 注文確定 注文確定 注文結果通知 注文確定 注文結果通知 ここまでは キャンセル可能 だった ここで 課金だった
8 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 修正したときの実装 お客様 Cake.jp
外部API サーバ 注文 注文一覧ページ 仮予約 注文リスト 注文確定 注文確定 注文結果通知 注文確定 注文結果通知 キャンセル不可 にした
9 © Cake.jp Co.Ltd. All Right Reserved.|Confidential 気付けなかった理由 お客様 Cake.jp
外部API サーバ 注文 注文一覧ページ 仮予約 注文リスト 注文確定 注文確定 注文結果通知 注文確定 注文結果通知 ・LINEなどで共有されるとLINEからのア クセスがあることを失念していた。 ・注文一覧ページアクセス=注文確定と いうユーザ行動を疑ってなかった。 注文確定自体は下で行 われるため、課金タイミ ングのズレが実感とず れた。
10 © Cake.jp Co.Ltd. All Right Reserved.|Confidential • 課金タイミングの確認はまじで大事。 ◦
特に2種類以上のステータスを管理の場合は、見える形で管理するの が望ましい。 • LINEなどのOGP取得系はリンクの共有だけでアクセスが発生する。 ◦ アクセスに依存した処理が発生する場合は、そのアクセスがユーザの 意思かどうかを確認できることが望ましい。 - まとめ -