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
53
呼び出し順で、 売上金額を回収できなくした話
Hayato Nakamura
May 22, 2024
Tweet
Share
More Decks by Hayato Nakamura
See All by Hayato Nakamura
定時実行の設定が難しいから、 仕組みで解決をしている話
chikin14niwa
0
96
N+1はダメなのか? システムを落としたあの日より
chikin14niwa
0
23
重要だけど、 よく忘れる仕様との付き合い方
chikin14niwa
0
75
Sessionの衝突から学んだPHPのSession作成方法 @CakeJP 2023/12/13 エンジニア小話会 PHPを語り合おう
chikin14niwa
0
280
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
19
3.1k
Done Done
chrislema
182
16k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
What's in a price? How to price your products and services
michaelherold
244
12k
It's Worth the Effort
3n
183
28k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.3k
A Philosophy of Restraint
colly
203
16k
YesSQL, Process and Tooling at Scale
rocio
170
14k
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取得系はリンクの共有だけでアクセスが発生する。 ◦ アクセスに依存した処理が発生する場合は、そのアクセスがユーザの 意思かどうかを確認できることが望ましい。 - まとめ -