Slide 1

Slide 1 text

#MerpayTechFest Session Title Payment distributed transaction case study Rui Gao Mepay, Payment Platform, Engineering Manager

Slide 2

Slide 2 text

#MerpayTechFest Mepay, Payment Platform, Engineering Manager Rui Gao 2018年10月にメルカリへ入社。現在決済基盤チームのエンジニアリングマネー ジャーを担当。入社する前には Yahoo! JAPANでHadoop HDFSの開発に従 事、株式会社お金のデザインでロボアドバイザー資産運用サービス THEO[テ オ]の開発を経験。

Slide 3

Slide 3 text

#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

Slide 30

Slide 30 text

#MerpayTechFest Customer Voice, from @tk8 Credit Design Team ● MessageQueueなどを介した非連続な処理になるため処理タイミング における一時的なデータの整合性などケアすべきポイントは増えます が、Status毎にプロセスを分けて考えることができるため処理のカプセ ル化による再利用性の向上、エッジケース含めた際の処理のシンプル化 や最適化ができる点、各プロセスを独立して開発できるためチーム開発 における並列性の観点など様々な視点で利益を享受することができまし た。 ● また、耐障害性においても自動復旧の仕組みが備わっているため運用コ ストの削減につながっています。 ● Repaymentの仕組みを使うことによって運用や開発における利益を継 続的に享受できるため運用コストはもちろん、新機能開発における工数 の削減にもつながっています

Slide 31

Slide 31 text

@tk8

Slide 32

Slide 32 text

#MerpayTechFest Failure handling evolution

Slide 33

Slide 33 text

#MerpayTechFest Failure handling evolution 2020年6月 「メルカリ」で「dポイント」が利用可 能に * Reference: mercari press

Slide 34

Slide 34 text

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

Slide 43

Slide 43 text

#MerpayTechFest Story 2019.2-3 iD決済 QRコード決済 コンビニエンスストアやレストラン、ドラッグスト ア、ファーストフード店をはじめ、全国約206万 か所の「iD」「メルペイ」加盟店で利用が可能に ※2021年3月末現在(iD/QR重複除く) 2020.7 メルペイスマート払い 「メルカリ」「メルペイ」における過去の利用実績 等を元に商品購入代金をチャージレスで後から 支払うことができる「メルペイスマート払い」に対 応 ネット決済 オフラインだけでなく、オンラインでもメル ペイでの支払いが可能に 2020.9 おくる・もらう 家族や友人にメルペイ残高・ポ イントを送ることが可能に 非接触型サービス 2019.4-5 ふえるお財布 貸付投資サービス「Funds」での メルペイ残高決済が可能に ※第2弾のファンドを2021年1月に実施 2020.11 2021.3 「d払い」「メルペイ」 の共通QRコード 「d払い」と「メルペイ」が1つのQRコードで 利用可能に バーチャルカード 簡単にカード番号を発行でき、多くのECサイトで のメルペイの利用が可能に マイナンバーカード (JPKI)での本人確認 マイナンバーカードの公的個人認証サービス (JPKI)を利用した本人確認の対応を開始 メルペイスマート払い(定額払い) 利用分を翌月以降分割して支払うこと ができる「定額払い」に対応 メルカリ寄付 売上金等からチャージされたメルペイ残 高を、希望する自治体等団体に寄付する ことが可能に

Slide 44

Slide 44 text

#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

Slide 45

Slide 45 text

#MerpayTechFest Story, New Challenge モノや信用に加えてあらゆる価値が交換できるマーケットプレイスへ 
 2021年4月28日に設立したメルコインでは、暗号資産やブロッ クチェーンに関するサービスの企画・開発を行っていきます。
 
 暗号資産事業に取り組むことで、「メルカリ」においては、売上 金のビットコインでの受取り機能の提供や、「メルペイ」におい ても決済・送金機能の提供に留まらず、与信、暗号資産・資産 運用の機能を一つのウォレットで提供していく等、より簡単に 金融サービスを利用できる環境を構築します。
 
 さらに、価値交換を実現するブロックチェーンの技術に取り組 むことで、NF (Non-fungible token)等、これまでのモノ・お金 に限らず、サービスやデジタルコンテンツなどのあらゆる価値 を誰もが簡単に交換できる新しい取引の形を創出していきま す。


Slide 46

Slide 46 text

#MerpayTechFest People in Payment Platform Team Payment ub-team 
 Balance ub-team
 @foghost
 @rui
 @knsh14
 @tengis
 @abcdefuji
 @ind
 @rossy
 @tanksuzuki
 @adler
 @mosakapi
 @kimQA
 @hao
 @kung
 @godriccao
 ettlement ub-team
 @rogerko @ktazoe @mihoyolo
 @m-chae
 @kaznishi
 @po-an(Andy)
 @mizkei


Slide 47

Slide 47 text

#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

Slide 51

Slide 51 text

#MerpayTechFest Thanks! Thanks for listening !!!