#MerpayTechFest
Agenda
Background
Transaction Status Management
Failure Handling and Recovery
Summary
02
03
04
01
Slide 4
Slide 4 text
#MerpayTechFest
Agenda
Background
Transaction Status Management
Failure Handling and Recovery
Summary
02
03
04
01
Slide 5
Slide 5 text
#MerpayTechFest
Background
Case: Repayment transaction of Smart Pay
Slide 6
Slide 6 text
#MerpayTechFest
Background
Case: Repayment transaction of Smart Pay
2020年7月
メルペイスマート払いに「定額払い」登場
Slide 7
Slide 7 text
#MerpayTechFest
Related Microservices
smart-pay-service payment-service
balance-service
debt-service
* Using fake service names to hide internal information
message queue
Slide 8
Slide 8 text
#MerpayTechFest
Related Microservices
smart-pay-service payment-service
balance-service
debt-service
* Using fake service names to hide internal information
message queue
Slide 9
Slide 9 text
#MerpayTechFest
Microservice API
payment-service
CreatRepayment
CaptureRepayment
Void/CancelRepayment
...
balance-service
CreateConsumption
CaptureConsumption
Void/CancelConsumption
debt-service
CreateRepayment
CaptureRepayment
CancelRepayment
Related Microservices(API)
Slide 10
Slide 10 text
#MerpayTechFest
Fundamentals & Preconditions
1. BASE
a. Basically Available
b. Soft-state
c. Eventual consistency
2. TCC
a. Try
b. Confirm
c. Cancel
3. Idempotence
* Reference: マイクロサービスにおける決済トランザクション管理
Slide 11
Slide 11 text
#MerpayTechFest
Agenda
Background
Transaction Status Management
Error Handling and Recovery
Summary
02
03
04
01
Slide 12
Slide 12 text
#MerpayTechFest
Definition
Status Business logical status
ResourceStatus High level status for status machine
Phase/RollbackPhase
Detail status for status machine
during transition
Transaction Status Management
Slide 13
Slide 13 text
#MerpayTechFest
ResourceStatus & Phase
1
2
3
4
Slide 14
Slide 14 text
#MerpayTechFest
Status
Slide 15
Slide 15 text
#MerpayTechFest
Transition: init --> paid
Slide 16
Slide 16 text
#MerpayTechFest
Transition: init --> paid
Steps
1. DebtService.CreateRepayment
Authorize debt
2. BalanceService.CreateConsumption
Authorize user balance
3. Publish Resource Notification to message queue
Key point for auto recovery
Slide 17
Slide 17 text
#MerpayTechFest
Transition: init --> paid, phases
Slide 18
Slide 18 text
#MerpayTechFest
Received request
Authorized debt
Authorized user balance
Published Resource Notification
Return response -
Transition: init --> paid (Succeed)
Slide 19
Slide 19 text
#MerpayTechFest
Status
Slide 20
Slide 20 text
#MerpayTechFest
Received request
Authorized debt
Authorize user balance failed
Authorized user balance rollbacked
Authorized debt rollbacked
Return response(error) -
Transition: init --> paid (Failed)
Slide 21
Slide 21 text
#MerpayTechFest
● Error: business logic related error
a. Not Found
b. Not Enough Debt Balance
c. Not Enough Balance
● Failure: network issue, system incident
a. Aborted
b. Timeout
c. Unavailable
Error and Failure
Slide 22
Slide 22 text
#MerpayTechFest
Agenda
Background
Transaction Status Management
Failure Handling and Recovery
Summary
02
03
04
01
Slide 23
Slide 23 text
#MerpayTechFest
Failure Handling and Recovery
Failure Solution
temporary network failure worker layer retry, ms ~ s
Continuous spike resource request queue layer retry, m ~ h
incident Recovery batch, hourly, data of 3 days
Slide 24
Slide 24 text
#MerpayTechFest
Recovery batch: Cron Job
Slide 25
Slide 25 text
#MerpayTechFest
Edge Case
Slide 26
Slide 26 text
#MerpayTechFest
Edge Case Handling, payment-service perspective
Slide 27
Slide 27 text
#MerpayTechFest
Received request
Authorized debt
Authorized user balance
Published Resource Notification
Return response(Failed) -
Edge Case
Slide 28
Slide 28 text
#MerpayTechFest
Edge Case Handling, smart-pay-service perspective
smart-pay-service payment-service
balance-service
debt-service
* Using fake service names to hide internal information
message queue
Slide 29
Slide 29 text
#MerpayTechFest
Edge Case Handling, smart-pay-service perspective
#MerpayTechFest
Case:
Escrow transaction of mercari with d point
Slide 35
Slide 35 text
#MerpayTechFest
Case:
Escrow transaction of mercari with d point
speciality:
● Data revising with external system could be very time
consuming (days)
● UX trade off
Slide 36
Slide 36 text
#MerpayTechFest
Transition: init --> paid
Case: Escrow transaction of mercari with d point
Slide 37
Slide 37 text
#MerpayTechFest
Rollback d point charge
Slide 38
Slide 38 text
#MerpayTechFest
Repayment v.s. Escrow with d Point
● Repayment
a. Priority: retry to push transition forward
b. Dependency: internal services main
● Escrow
a. Priority: rollback to unfreeze user balance
b. Dependency: external service involved
Slide 39
Slide 39 text
#MerpayTechFest
Agenda
Background
Transaction Status Management
Failure Handling and Recovery
Summary
02
03
04
01
Slide 40
Slide 40 text
#MerpayTechFest
Summary
Slide 41
Slide 41 text
#MerpayTechFest
Summary
● Goal
○ BASE
■ Basically Available
■ Soft-state
■ Eventual consistency
● Tech
○ MicroService
○ Idempotent API
○ TCC
○ Status Machine
○ Recovery Batch
○ Message Queue
Slide 42
Slide 42 text
#MerpayTechFest
Story
Merpay payment distributed transaction mechanism is
evolving along with company business growth!
#MerpayTechFest
Story
2019.2-3
Mercari payment
transaction
2020.7
Repayment
transaction
2020.9
Personal Transfer
transaction
2019.4-5
More and more
2020.11 2021.3
Mercari payment
transaction with d point
Merpay payment
transaction
Merpay payment
transaction with virtual
card
#MerpayTechFest
We are Hiring!!
メルペイ採用ページよりご応募をお願いします。
※APPLICATION DETAILSに本日のSessionにご参加頂いた旨ご記載ください。
Slide 48
Slide 48 text
#MerpayTechFest
We are Hiring!! Payment Platform Team
※気軽くカジュアル面談どうぞ
Slide 49
Slide 49 text
Mission
信用を創造して、なめらかな社会を創る
Building trust for a seamless society
Slide 50
Slide 50 text
Value
一人では達成できない大きなミッション
を、チームの力を合わせ、全員が最大の
パフォーマンスを発揮することで実現し
ます。
世の中にインパクトを与えるイノベーショ
ンを生み出すため、全員が大胆にチャレ
ンジし、数多くの失敗から学び、実践しま
す。
メンバー全員がその道のプロフェッショ
ナルとしてオーナーシップを持ち、日々
の学びを怠らず、成果や実績にコミットし
ます。
Go
Bold
大胆にやろう
All for
One
全ては成功のために プロフェッショナル
であれ
Be
a Pro