7つの入金外部サービスと連携して分かった実践的な”状態管理”設計パターン3選 @ Kaigi on Rails 2022

6
三谷 昌平 @shohei1913

今日の登壇資料です(公開設定できてなかったので再投稿mm) speakerdeck.com/shoheimitani/7…

2022-10-21 14:40:23
【¥339,154】にしこりさぶろ〜 @subroh_0508

決済周りの状態管理、恐怖心の方が強くて無意識に忌避してたきらいがあるけど、こうして丁寧に設計・実装してその例を共有してもらえると「おもしろそう!自分も挑戦してみようかな☺️」の気持ちになれますね💪 #kaigionrails

2022-10-21 14:19:47
expa / Shu Oogawara @expajp

すごく良い話だった フロー設計改善の過程ももしあれば聞いてみたいな #kaigionrails

2022-10-21 14:18:46
三谷 昌平 @shohei1913

@sugi511 B/43の場合は入金する口座のレコードをロックしつつ、外部サービス側のIDで重複チェックしてます。高速で送られてもロックで排他制御できるので守りきれないことは今の所ないですね。

2022-10-21 14:30:25
のり@あふりかCTOパパ @sugi511

webhookで送られてきたもので、高速で2回送られてくると冪等性を守りきれなくなったりするんだけど、そこらへんはどうしてるんだろうか(うちは、防ぎきれないから検知できるように送られてきたリクエストをガンガン保存して外部サービス側のIDとかで検知している) #kaigionrails

2022-10-21 14:18:30
ょを @yohfee

アウトボックスパターンとかも考えとくといい場合もあるかな #kaigionrails

2022-10-21 14:18:21
SMS Tech | 株式会社エス・エム・エス @BM_SMS_Tech

Kaigi on Rails2022のスポンサーブース(Room2)を出しています。 本日休憩時間の 14:40 〜 15:10 16:50 〜 17:20 に弊社開発チームの「ここがスゴイ!」というテーマで LTをしたいと思います! ぜひお気軽にお立ち寄りください #kaigionrails

2022-10-21 14:18:15
🍞👩🏻‍💻🇨🇦 @nappan23

すぐに業務に繋がる知識でめちゃくちゃ参考になりました。ありがとうございます🙏 #kaigionrails

2022-10-21 14:18:14
ゆうじ @yuji_developer

DBのトランザクション内でDBにアクセスする以外のことをやるのはやめようねという普通の話ではあるのよね。 #kaigionrails

2022-10-21 14:18:13
masa寿司 @masa_iwasaki

実際には決済プロバイダによって細かい違いが入ってきているはずなので、逆にここまで処理を共通化・抽象化して分類した上で実装までノウハウ共有してくれるのは貴重だな #kaigionrails

2022-10-21 14:17:51
kawaida @tamamushi_2

決済周りのフローメルペイさんの事例もすごい参考になった記憶 engineering.mercari.com/blog/entry/201… #kaigionrails

2022-10-21 14:16:24
kinoppyd @GhostBrain

つまり全部覚えるってことじゃないか! #kaigionrails

2022-10-21 14:16:04
のり@あふりかCTOパパ @sugi511

弊社のM-PESA APIとのやりとりとオーバラップするとこあるのでめちゃ分かる〜〜〜 #kaigionrails

2022-10-21 14:15:45
【¥339,154】にしこりさぶろ〜 @subroh_0508

テーブル設計もかなり具体的に共有してくれるの、すごくありがたい( ˘ω˘) 実務やらないとなかなか目にすることができない情報なので( ˘ω˘) #kaigionrails

2022-10-21 14:12:32
すぎうり @uproad3

起きたので2倍速追っかけ再生で追いかけてる #kaigionrails

2022-10-21 14:12:31
のり@あふりかCTOパパ @sugi511

外部サービスからのwebhook怖いよなぁ・・・ #kaigionrails

2022-10-21 14:12:16
rochefort @rochefort8

このスライドじっくり見たいわ #kaigionrails

2022-10-21 14:11:57
ohbarye @ohbarye

deposit_requestsのように非同期処理を挟む一連のライフサイクルにstatus持たせるのは、Stripeのpayment_intentsに代表されるように僕もよくやるパターン stripe.com/docs/api/payme… #kaigionrails

2022-10-21 14:11:45
ゆうじ @yuji_developer

そうだね、そうだね、やってたよ、みたいな気持ちになる発表だなぁ。 #kaigionrails

2022-10-21 14:11:36
kinoppyd @GhostBrain

トランザクションIDが大事に鳴るやつ #kaigionrails

2022-10-21 14:11:18
🍞👩🏻‍💻🇨🇦 @nappan23

なるほど一時的に状態異常あってもあとで直ればいいよな、たしかに、、、 #kaigionrails

2022-10-21 14:09:27
kawaida @tamamushi_2

今後トランザクション分けてってコメントするときに添えるのにめっちゃ便利な資料だ。 #kaigionrails

2022-10-21 14:09:12
しんくう @shinkuFencer

未来発生するイベントを考慮してバリデーションかけるのすごいキツそう #kaigionrails

2022-10-21 14:09:03