Kyash法人送金サービスでのトランザクション管理について
by
Manabu Ejima
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Kyash 法人送金サービスでの トランザクション管理について Kyash TechTalk #2 - Serverside のシステム構成とアーキテクチャ 2022 年4 月18 日 Manabu Ejima 1
Slide 2
Slide 2 text
今日の内容 複数のマイクロサービスにまたがるトランザクション管理の設計の 話 Saga パターンとかではない シーケンス図を使って説明します 2
Slide 3
Slide 3 text
Kyash 法人送金サービスとは ギグワーカーの人たちがオンデマンドで売上金/ 報酬を即座にKyash 残 高に送金できるようにするサービス 3
Slide 4
Slide 4 text
ギグワーカーのメリット いつでも受取可能 ポイント還元 ATM などで現金化も可能 4
Slide 5
Slide 5 text
プラットフォーマーのメリット 安価な送金手数料 API 連携 他社との競争優位性向上 5
Slide 6
Slide 6 text
Kyash のメリット 手数料を収益源にできる 新規ユーザー獲得 6
Slide 7
Slide 7 text
導入検討お願いします https://www.kyash.co/lp/kyash-for-business-account 7
Slide 8
Slide 8 text
振り込み API のトランザクションの話 8
Slide 9
Slide 9 text
用語の整理 以降社内で使われている呼び方を使います Kyash 法人送金サービス -> Payout ギグワーカー -> ユーザー プラットフォーマー -> パートナー 9
Slide 10
Slide 10 text
振り込み API の内部処理 トランザクションの記録 パートナーからの出金 ユーザーの存在確認 ユーザーへの入金 入金履歴の保存 会計用データの保存 お知らせの保存 Push 通知 10
Slide 11
Slide 11 text
サービスごとの役割 Payout サービス トランザクションの記録 パートナーからの出金 11
Slide 12
Slide 12 text
サービスごとの役割 Topup サービス ユーザーの存在確認 ユーザーへの入金 会計用データの保存 入金履歴の保存 お知らせの保存 12
Slide 13
Slide 13 text
サービスごとの役割 Notification サービス Push 通知 13
Slide 14
Slide 14 text
シーケンス図の中で使われる処理 シンプルにするため以下に絞る Payout サービス トランザクションの記録 パートナーからの出金 Topup サービス ユーザーへの入金 14
Slide 15
Slide 15 text
同期処理だけの場合 とりあえずたたき台 どういう問題が発生するか探る 15
Slide 16
Slide 16 text
16
Slide 17
Slide 17 text
17
Slide 18
Slide 18 text
18
Slide 19
Slide 19 text
19
Slide 20
Slide 20 text
同期処理だけでやろうとすると 入出金処理がアトミックにならない 入金だけ残った場合リカバリが完了する前にユーザーに使われて しまう可能性 出金だけ残った場合リカバリが完了する前にパートナーの口座が 残高不足になる可能性 振り込み失敗したにもかかわらず履歴・お知らせ・Push 通知などが 記録・送信されてしまう 入出金キャンセル時にリカバリが必要 20
Slide 21
Slide 21 text
非同期処理を導入する Topup 側を変更 トランザクションを2 段階にする リクエスト 確定 or キャンセル トランザクションを記録する SQS を使って非同期で入金の確定・キャンセル処理をする 21
Slide 22
Slide 22 text
22
Slide 23
Slide 23 text
23
Slide 24
Slide 24 text
24
Slide 25
Slide 25 text
同期処理の場合の問題点 入出金処理がアトミックにならない 履歴・お知らせ・Push 通知などが記録・送信されてしまう 入出金キャンセル時にリカバリが必要 25
Slide 26
Slide 26 text
非同期処理を導入することによって 入出金処理がアトミックにならない アトミックに近い状態になる ただしタイミングによっては入出金キャンセルが間に合わない 場合がある 履歴・お知らせ・Push 通知などが記録・送信されてしまう 確定時しか記録・送信されないようになる 入出金キャンセル時にリカバリが必要 自動リカバリできるようになる 26
Slide 27
Slide 27 text
27
Slide 28
Slide 28 text
ご清聴ありがとうございました! 28