$30 off During Our Annual Pro Sale. View Details »

Merpay Tech Fest 2021_メルペイのキャンペーンの舞台裏 〜Growthを支...

Merpay Tech Fest 2021_メルペイのキャンペーンの舞台裏 〜Growthを支える仕組み〜 / Behind the Scenes of Merpay's Campaign - Systems to Support Growth

Merpay Tech Fest 2021は5日間のオンライン技術カンファレンスです。

IT企業で働くソフトウェアエンジニアおよびメルペイの技術スタックに興味がある方々を対象に2021年7月26日(月)から7月30日(金)までの5日間、開催します。 Merpay Tech Festは事業との関わりから技術への興味を深め、プロダクトやサービスを支えるエンジニアリングを知れるお祭りです。 セッションでは事業を支える組織・技術・課題などへの試行錯誤やアプローチを紹介予定です。お楽しみに!

■イベント関連情報
- 公式ウェブサイト:https://events.merpay.com/techfest-2021/
- 申し込みページ:https://mercari.connpass.com/event/215035/
- Twitterハッシュタグ: #MerpayTechFest

■リンク集
- メルカリ・メルペイイベント一覧:https://mercari.connpass.com/
- メルカリキャリアサイト:https://careers.mercari.com/
- メルカリエンジニアリングブログ:https://engineering.mercari.com/blog/
- メルカリエンジニア向けTwitterアカウント:https://twitter.com/mercaridevjp
- 株式会社メルペイ:https://jp.merpay.com/

mercari

July 29, 2021
Tweet

More Decks by mercari

Other Decks in Technology

Transcript

  1. #MerpayTechFest #MerpayTechFest 株式会社メルペイ Product Engineering Div. CD & UX Growth

    Team Yoshiki Ogawa 2013年DeNAに新卒入社し、ソーシャルゲーム 新規タイトル 立ち上げや運用業務を通じて、サーバサイドおよびネイティブア プリ 開発に携わる。2018年12月、バックエンドエンジニアとして メルペイ入社。Growth UXチームおよびメルペイクーポンマイク ロサービス テックリードを担当。
  2. #MerpayTechFest Growthを支えるマイクロサービス • Coupon Service (メルペイクーポン) • Santa Service (ポイント還元)

    • MynumPoint Service (マイナポイント) • Opzilla (運用管理ツール) etc... そ 他、様々なメルペイマイクロサービス群と連携して機能を実現
  3. #MerpayTechFest Coupon Service • クーポン画面 一部 WebViewで構築 • バックエンド(Go)とフロントエンド(Node.js+Vue.js)で構成される ・iD

    設定 有無 ・メルペイ残高 etc... ClientApp WebView Node.js + Vue.js merpay-coupon-web merpay-coupon-service Coupon DB Cloud Spanner merpay-api Other Services...
  4. #MerpayTechFest Santa Service お客様 Actionをトリガーとしてインセンティブ 付与を行う 例え • メルペイを使った購入をトリガーにポイントを付与 •

    本人確認をトリガーにポイントを付与 • 定額払い 精算をトリガーにポイントを付与 ※既に終了済み キャンペーンが含まれます
  5. #MerpayTechFest 特徴 • PubSub drivenであり、全て インセンティブ付与 非同期で処理さ れる ◦ 決済系など、他

    重要なマイクロサービスへ影響を与えない • 冪等性を担保した作りになっている ◦ 処理途中でエラーが発生しても、自動でリトライされ処理される • お客様 ステータスなど 変動性 高い情報 保持しない ◦ 都度該当 情報を管理するmicroserviceに最新 情報を問い合わせている ◦ 過去キャンペーン 参加履歴など、事前抽出が可能な変動性 ない情報 自身 で保持する場合もある
  6. #MerpayTechFest merpay-santa-service 1st Subscribers Give insentive Send notification microservice Dependent

    microservices on campaign filtering microservice microservice microservice microservice and more... 2nd Subscriber Publisher PubSub Publisher Publisher Publisher Subscriber Subscriber Subscriber Subscriber microservice Subscriber Subscriber
  7. #MerpayTechFest merpay-santa-service 1st Subscribers Give insentive Send notification microservice Dependent

    microservices on campaign filtering microservice microservice microservice microservice and more... 2nd Subscriber Publisher PubSub Publisher Publisher Publisher Subscriber Subscriber Subscriber Subscriber microservice Subscriber Subscriber お客様 ActionをトリガーとしてPubSub Messageを Publishするmicroservice
  8. #MerpayTechFest merpay-santa-service 1st Subscribers Give insentive Send notification microservice Dependent

    microservices on campaign filtering microservice microservice microservice microservice and more... 2nd Subscriber Publisher PubSub Publisher Publisher Publisher Subscriber Subscriber Subscriber Subscriber microservice Subscriber Subscriber ・外部サービス PublisherからメッセージをSubscribe ・メッセージ 状態を確認し、処理不要なメッセージ 捨てる ・必要な情報を抽出してInternal SubscriberにメッセージをPublish
  9. #MerpayTechFest and more... merpay-santa-service 1st Subscribers Give insentive Send notification

    microservice Dependent microservices on campaign filtering microservice microservice microservice microservice and more... 2nd Subscriber Publisher PubSub Publisher Publisher Publisher Subscriber Subscriber Subscriber Subscriber microservice Subscriber Subscriber ・External SubscriberからメッセージをSubscribe ・有効な各キャンペーンに対して、条件にマッチするか判定する ・付与するポイント額を計算する
  10. #MerpayTechFest merpay-santa-service 1st Subscribers Give insentive Send notification microservice Dependent

    microservices on campaign filtering microservice microservice microservice microservice and more... 2nd Subscriber Publisher PubSub Publisher Publisher Publisher Subscriber Subscriber Subscriber Subscriber microservice Subscriber Subscriber キャンペーン条件 チェックに必要な情報を保持する各microservice merpay-santa-serviceから リクエストを受けて、 実際にインセンティブを付与したり、Push通知を行うmicroservice
  11. #MerpayTechFest merpay-santa-service 1st Subscribers Give insentive Send notification microservice Dependent

    microservices on campaign filtering microservice microservice microservice microservice and more... 2nd Subscriber Publisher PubSub Publisher Publisher Publisher Subscriber Subscriber Subscriber Subscriber microservice Subscriber Subscriber
  12. #MerpayTechFest merpay-santa-service Give insentive Send notification microservice Dependent microservices on

    campaign filtering microservice microservice microservice microservice and more... 2nd Subscriber Subscriber Subscriber Subscriber microservice Self-healing Batch Santa DB Cloud Spanner Message Message
  13. #MerpayTechFest キャンペーンマスターデータ ID キャンペーンID Name キャンペーン名 AccountingCode 経理上集計するために使用するコード StartAt キャンペーン開始時間

    EndAt キャンペーン終了時間 RewardType 割合還元 or 固定額還元 RewardAmount 還元% or 還元額 Filters フィルタリング条件(還元条件を表す) RewardTimingType ポイント付与タイミング (即時 or 翌日) RewardUpperLimitForPurchase 1度 決済に対する還元額上限 RewardUpperLimitForPeriod キャンペーン期間内 還元額上限 ・・・ ・・・
  14. #MerpayTechFest フィルタリングと キャンペーン毎にフレキシブルに条件設定を行うため 機能 設定内容 キャンペーン マスタデータにJSON形式で保存される ポイントバッククーポン 場合 下記

    ようなフィルタリング条件となる • 201円以上 決済 • 特定 加盟店で 決済 • クーポンを使用済みであること JSON [ {"name":"amount","filter_data":{"min_amount":201}}, {"name":"merchant","filter_data":{"merchant_ids":["id_1","id_2"]}}, {"name":"coupon_entry","filter_data":{"coupon_key":"sample_key"}} ]
  15. #MerpayTechFest SantaServiceとCouponService 連携 • ポイントバッククーポンで 、SantaService 仕組みでポイント付与 • クーポン 使用状態をSantaServiceに通知

    CouponService SantaService メルペイ で決済 条件を満たした決済? (101円以上, 指定店舗, ...) クーポン使っている? ポイントバック!
  16. #MerpayTechFest スケーラビリティ ある運用 • 多く キャンペーンやクーポンを並行して実施 ◦ 特にクーポン 同時に管理しなけれ いけない数が多い

    • 特定 作業者がボトルネックにならないような運用 ◦ エンジニア不要で、データ作成、QA、本番反映が可能
  17. #MerpayTechFest データ管理 • GitHub上にyamlデータとして保存 • データベース上 カラムと1対1に対応 • CI(CircleCI/GitHubAction)により、データバリデーション/リリース自動化 •

    yaml -> Spanner マイグレーションスクリプトによって環境に反映 • リリース時に差分を確認しやすい/軽微な修正が容易 クーポンデータ for CouponService キャンペーン設定 for SantaService
  18. #MerpayTechFest 今後 展望 • お店で お支払い みならず、「メルペイスマート払い」 「メルコイン」といったメルペイプロダクト 多様に進化 •

    各機能 魅力をお客様に届けるため 「GrowthPlatform」とし て、柔軟かつスピーディーにキャンペーン実施が可能な基盤づくりを 進めていく
  19. #MerpayTechFest まとめ • メルペイ グロースに関わるマイクロサービス 詳細や技術的な特 徴について紹介しました • スケーラビリティ あるキャンペーン運用

    ため 工夫について紹 介しました Growthチーム メルペイ 様々なプロダクトに 幅広く関わること できる面白いポジションです!