Upgrade to Pro — share decks privately, control downloads, hide ads and more …

メルカードの常時ポイント還元開発の裏側 / Behind the Development of Mercard’s Point-Back Rewards System

mercari
October 14, 2023

メルカードの常時ポイント還元開発の裏側 / Behind the Development of Mercard’s Point-Back Rewards System

メルカードのGrowth施策である常時ポイント還元のバックエンドの仕組みとマイクロサービスアーキテクチャにおけるGrowth基盤の立ち位置、開発する上での設計判断を背景交えてお話できればと思います。

In this session, we will talk about the backend mechanisms behind Mercard's point-back rewards system, the position of the growth infrastructure in the microservice architecture, and design decisions made during development, including background information.

------
Merpay & Mercoin Tech Fest 2023は3日間のオンライン技術カンファレンスです。
IT企業で働くソフトウェアエンジニアおよびメルペイ・メルコインの技術スタックに興味がある方々を対象に2023年8月22日(火)、23日(水)、24日(木)の3日間、開催します。 Merpay & Mercoin Tech Fest は事業との関わりから技術への興味を深め、プロダクトやサービスを支えるエンジニアリングを知ることができるお祭りです。

今年のテーマは「Unleash Fintech」。 メルペイ・メルコインのこれまでの技術的な取り組みはもちろん、メルカリグループのFintech事業における新たな挑戦をお伝えします。 セッションでは事業を支える組織・技術・課題などへの試行錯誤やアプローチなど多面的にご紹介予定です。

メルペイ・メルコインが今後どのようにUnleash(解放)していくのか、ぜひ見に来てください。

■イベント関連情報
- 公式ウェブサイト:https://events.merpay.com/techfest-2023/
- 申し込みページ:https://mercari.connpass.com/event/286670/
- Twitterハッシュタグ: #MerpayMercoinTechFest
■リンク集
- メルカリ・メルペイイベント一覧:https://mercari.connpass.com/
- メルカリキャリアサイト:https://careers.mercari.com/
- メルカリエンジニアリングブログ:https://engineering.mercari.com/blog/
- メルカリエンジニア向けTwitterアカウント:https://twitter.com/mercaridevjp
- 株式会社メルペイ:https://jp.merpay.com/

mercari

October 14, 2023
Tweet

More Decks by mercari

Other Decks in Technology

Transcript

  1. 関連のマイクロサービス santa Kubernetes Engine Dependent microservices loyalty Kubernetes Engine defpay

    Kubernetes Engine payment Kubernetes Engine card Kubernetes Engine item-detail Kubernetes Engine payment-history Kubernetes Engine
  2. 関連のマイクロサービス Dependent microservices loyalty Kubernetes Engine defpay Kubernetes Engine payment

    Kubernetes Engine card Kubernetes Engine item-detail Kubernetes Engine payment-history Kubernetes Engine キャンペーンの管理・ポイント還元(本セッションの主役) santa Kubernetes Engine
  3. 関連のマイクロサービス Dependent microservices loyalty Kubernetes Engine defpay Kubernetes Engine payment

    Kubernetes Engine card Kubernetes Engine item-detail Kubernetes Engine payment-history Kubernetes Engine メルカード清算 お客さまのステージ管理 メルペイの決済 メルペイの決済履歴 santa Kubernetes Engine キャンペーンの管理・ポイント還元(本セッションの主役) メルカリの商品詳細 メルカードの発行・取引
  4. 関連のマイクロサービス Dependent microservices loyalty Kubernetes Engine defpay Kubernetes Engine payment

    Kubernetes Engine card Kubernetes Engine item-detail Kubernetes Engine payment-history Kubernetes Engine メルカード清算 お客さまのステージ管理 メルペイの決済 メルペイの決済履歴 santa Kubernetes Engine キャンペーンの管理・ポイント還元(本セッションの主役) メルカリの商品詳細 メルカードの発行・取引 gRPC APIやPub/Subで情報の受け渡し
  5. 関連のマイクロサービス Dependent microservices loyalty Kubernetes Engine defpay Kubernetes Engine payment

    Kubernetes Engine card Kubernetes Engine item-detail Kubernetes Engine payment-history Kubernetes Engine メルカード清算 お客さまのステージ管理 メルペイの決済 メルペイの決済履歴 santa Kubernetes Engine メルカリの商品詳細 メルカードの発行・取引 キャンペーンの管理・ポイント還元(本セッションの主役) gRPC APIやPub/Subで情報の受け渡し Growth Platform チームが開発の主担当
  6. ポイント還元のシステム構成 kubernetes cluster Processing result of santa Give inserntive Pub/Sub

    Subscriber Pub/Sub Publisher defpay Kubernetes Engine Cloud Pub/Sub santa Kubernetes Engine payment Kubernetes Engine Dependent microservices Send notification notirication Kubernetes Engine card Kubernetes Engine loyalty Kubernetes Engine payment Kubernetes Engine gPRC gPRC
  7. ポイント還元のシステム構成 kubernetes cluster Processing result of santa Give inserntive Pub/Sub

    Subscriber Pub/Sub Publisher defpay Kubernetes Engine Cloud Pub/Sub santa Kubernetes Engine payment Kubernetes Engine Dependent microservices Send notification notirication Kubernetes Engine card Kubernetes Engine loyalty Kubernetes Engine payment Kubernetes Engine gPRC gPRC ①メルカード請求の清算完了 ②清算済み請求情報を取得
  8. ポイント還元のシステム構成 kubernetes cluster Processing result of santa Give inserntive Pub/Sub

    Subscriber Pub/Sub Publisher defpay Kubernetes Engine Cloud Pub/Sub santa Kubernetes Engine payment Kubernetes Engine Dependent microservices Send notification notirication Kubernetes Engine card Kubernetes Engine loyalty Kubernetes Engine payment Kubernetes Engine gPRC gPRC ①メルカード請求の清算完了 ②清算済み請求情報を取得 ③メルカードのステータス・決済加盟店情報を取得(還元対象判定のため) ④お客さまのステージを取得(還元率を決定するため)
  9. ポイント還元のシステム構成 kubernetes cluster Processing result of santa Give inserntive Pub/Sub

    Subscriber Pub/Sub Publisher defpay Kubernetes Engine Cloud Pub/Sub santa Kubernetes Engine payment Kubernetes Engine Dependent microservices Send notification notirication Kubernetes Engine card Kubernetes Engine loyalty Kubernetes Engine payment Kubernetes Engine gPRC gPRC ①メルカード請求の清算完了 ②清算済み請求情報を取得 ③メルカードのステータス・決済加盟店情報を取得(還元対象判定のため) ④お客さまのステージを取得(還元率を決定するため) ⑥ポイントの付与と通知 ⑤還元対象の付与ポイント計算
  10. 付与予定ポイント表示のシステム構成 kubernetes cluster gRPC Server santa Kubernetes Engine gRPC Server

    item-detail Kubernetes Engine App(iOS, Android) API Gateway gateway-api Kubernetes Engine Dependent microservices gPRC gPRC card Kubernetes Engine loyalty Kubernetes Engine ①メルカリの商品金額を送信 (付与予定ポイントのリクエスト) gPRC
  11. 付与予定ポイント表示のシステム構成 kubernetes cluster gRPC Server santa Kubernetes Engine gRPC Server

    item-detail Kubernetes Engine App(iOS, Android) API Gateway gateway-api Kubernetes Engine Dependent microservices gPRC gPRC card Kubernetes Engine loyalty Kubernetes Engine ①メルカリの商品金額を送信 (付与予定ポイントのリクエスト) ②メルカードのステータスを取得 (還元対象判定のため) gPRC ③お客さまのステージを取得 (還元率を決定するため) ④ポイントを計算して付与予定ポイ ント・対象判定結果を返す
  12. 付与予定ポイント表示のシステム構成 kubernetes cluster gRPC Server santa Kubernetes Engine gRPC Server

    item-detail Kubernetes Engine App(iOS, Android) API Gateway gateway-api Kubernetes Engine Dependent microservices gPRC gPRC card Kubernetes Engine loyalty Kubernetes Engine ①メルカリの商品金額を送信 (付与予定ポイントのリクエスト) ②メルカードのステータスを取得 (還元対象判定のため) gPRC ③お客さまのステージを取得 (還元率を決定するため) ④ポイントを計算して付与予定ポイ ント・対象判定結果を返す ⑤還元対象者に付与予定ポイントを表示
  13. Cloud Spanner スキーマ CampaignID(PrimaryKey) キャンペーンID Name キャンペーン名称 StartAt キャンペーン開始日時 EndAt

    キャンペーン終了日時 UserFilters お客さまの還元対象判定フィルタ PaymentFilters 決済単位の還元対象判定フィルタ UpperLimit 還元上限 … Campaigns (Interleave: 親) CampaignStageRates (Interleave: 子) CampaignID(PrimaryKey) キャンペーンID Rate(PrimaryKey) ポイント還元率 StageRangeStart ステージ範囲の最小値 StageRangeEnd ステージ範囲の最大値 …
  14. Cloud Spanner スキーマ Campaigns (Interleave: 親) CampaignStageRates (Interleave: 子) CampaignID

    Name StartAt EndAt UserFilters PaymentFilters UpperLimit aaa メルカード還元(メルカリでの購入) - - - - - CampaignID Rate StageRangeStart StageRangeEnd aaa 1.0 10 10 aaa 1.1 11 11 … … … … aaa 4.0 40 40
  15. キャンペーンフィルタリング Campaigns CampaignID Name UserFilters PaymentFilters … aaa メルカード還元(メルカリでの購入) {mercard_status:[2,3]}

    {mercari_inner_payment:{}} … bbb メルカード還元(メルカリ以外のお買い物) {mercard_status:[2,3]} {mercari_outer_payment:{}, merchant:{shop_id:[xxx, xxx], Invert:true}} … UserFilters, PaymentFiltersにはJSON形式の文字列が格納される セットしたフィルタに応じて還元対象判定がチェックされる
  16. キャンペーンフィルタリング Campaigns CampaignID Name UserFilters PaymentFilters … aaa メルカード還元(メルカリでの購入) {mercard_status:[2,3]}

    {mercari_inner_payment:{}} … bbb メルカード還元(メルカリ以外のお買い物) {mercard_status:[2,3]} {mercari_outer_payment:{}, merchant:{shop_id:[xxx, xxx], Invert:true}} … UserFilters, PaymentFiltersにはJSON形式の文字列が格納される セットしたフィルタに応じて還元対象判定がチェックされる メルカードステータス の判定
  17. キャンペーンフィルタリング Campaigns CampaignID Name UserFilters PaymentFilters … aaa メルカード還元(メルカリでの購入) {mercard_status:[2,3]}

    {mercari_inner_payment:{}} … bbb メルカード還元(メルカリ以外のお買い物) {mercard_status:[2,3]} {mercari_outer_payment:{}, merchant:{shop_id:[xxx, xxx], Invert:true}} … UserFilters, PaymentFiltersにはJSON形式の文字列が格納される セットしたフィルタに応じて還元対象判定がチェックされる メルカードステータス の判定 メルカリ・メルカリ外と、 対象外加盟店の判定