決済のトランザクション管理術 / How to Manage Payment Transaction
by
Masato Ohba
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
#megurorb 決済のトランザクション管理術 決済のトランザクション管理術 @ohbarye Meguro.rb#19
Slide 2
Slide 2 text
#megurorb 決済のトランザクション管理術 すべてを 記録する
Slide 3
Slide 3 text
#megurorb 決済のトランザクション管理術 決済処理を例にした 分散トランザクション管理の一例 話すこと
Slide 4
Slide 4 text
#megurorb 決済のトランザクション管理術 分けることのできない 一連の情報処理の単位 トランザクションとは
Slide 5
Slide 5 text
#megurorb 決済のトランザクション管理術 こんなやつ この block に含まれるタスクが全て実行 されるか、あるいは全く実行されないこと を保証しなければならない
Slide 6
Slide 6 text
#megurorb 決済のトランザクション管理術 トランザクション単位 シーケンス図にすると 簡単? >
Slide 7
Slide 7 text
#megurorb 決済のトランザクション管理術 難しいのは “分散”トランザクション ネットワーク上の2つ以上の ホストが関連するトランザクション
Slide 8
Slide 8 text
#megurorb 決済のトランザクション管理術 トランザクション単位 クレカ決済の一例
Slide 9
Slide 9 text
#megurorb 決済のトランザクション管理術 *トランザクション単位がでか い *通信を挟む 最初の例との差分 *データを記録するホストが複数 *両者で整合性を保ちたい *システム境界をまたぐ *外的要因に影響を受ける
Slide 10
Slide 10 text
#megurorb 決済のトランザクション管理術 考えうる失敗例 ネットワーク通信は基本的に失敗する可 能性がある 決済ゲートウェイ側でエラー 事業者側でエラー 一方からは成功に見えるがもう一方からは 失敗扱いになる、なんてことも
Slide 11
Slide 11 text
#megurorb 決済のトランザクション管理術 障害が起きることを 前提とした設計にする すべての障害可能性を事前に潰すのは不可能
Slide 12
Slide 12 text
#megurorb 決済のトランザクション管理術 具体的な方針 ➔ 1. 進行状況をできる限り詳細に記録する ◆ (optional) 疑わしくてもサービス役務提供しておく ➔ 2. データ不整合を検知できるようにする ◆ 偽陽性を許容する ➔ 3. 検知されたものについては一つ一つ精査する
Slide 13
Slide 13 text
#megurorb 決済のトランザクション管理術 1. 進行状況をできる限り詳細に記録する 購入要求受付 与信成功 確定要求成功 サービス提供
Slide 14
Slide 14 text
#megurorb 決済のトランザクション管理術 2. データ不整合を検知できるようにする
Slide 15
Slide 15 text
#megurorb 決済のトランザクション管理術 3. 検知されたものについては一つ一つ精査する 一重積んではユーザーのため 二重積んでは金のため... 続けるとパターンが見えてくる。 より精度の高いやり方や、自動化の兆 しが出てきます
Slide 16
Slide 16 text
#megurorb 決済のトランザクション管理術 記録さえ残しておけば、あとでどうにかできる 記録がなければ、どうしようもない なので すべてを記録する のが第一歩
Slide 17
Slide 17 text
#megurorb 決済のトランザクション管理術 Thank you!