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
#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!