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

超PayPay祭りを支える購入導線の負荷対策について

 超PayPay祭りを支える購入導線の負荷対策について

常澤邦幸 (ヤフー株式会社 / コマースグループショッピング統括本部プロダクション2本部 / 部長)

https://tech-verse.me/ja/sessions/245
https://tech-verse.me/en/sessions/245
https://tech-verse.me/ko/sessions/245

Tech-Verse2022
PRO

November 18, 2022
Tweet

More Decks by Tech-Verse2022

Other Decks in Technology

Transcript

  1. None
  2. 自己紹介 • 2007年〜 ヤフーオークション • 2013年〜 ヤフーショッピング • 2019年〜 ヤフーショッピング(注文決済領域)

    職歴 • 釣り • ゲーム 趣味 • ServerSide BE • WebAPI • 高負荷対策 技術
  3. Agenda - 超PayPay祭について - 解決のアプローチ ビジネス システム UI/UX 組織 -

    今後の課題
  4. ヤフーショッピング

  5. 2022年 2020年 2015年 2021年 〜 2014年 大型セールの歴史 ヤフーショッピングの大型セールの歴史 日本一優勝セール 年末感謝セール

    超PayPay祭 春 夏のPayPay祭 開始 いい買物の日 開始(〜2019) 超PayPay祭 開始 超PayPay祭 開催中 〜 〜 〜 2018年
  6. 0 2 4 6 8 10 12 14 we A

    B C D E F G H 1日あたりの取扱高の成長 ヤフーショッピングで単日で一番売れた日
  7. 0 2 4 6 8 10 12 14 we A

    B C D E F G H 秒間最大注文数の推移 1秒間あたりの最大注文数
  8. 0 2 4 6 8 10 12 14 we A

    B C D E F G H 一日の注文数の傾向 2019年いい買物の日
  9. 栄光と挫折

  10. 解決へのアプローチ 4種類のカテゴリで実施 システム 組織 UI/UX ビジネス

  11. 解決へのアプローチ 4種類のカテゴリで実施 システム 組織 UI/UX ビジネス

  12. セール期間の変更 セールの立て付けを変更しつつ負荷対策も Before 単日 After 複数日 ü セール期間を長く ü グランドフィナーレも

    2日間に ü ロスタイムとして 2時間の延長
  13. 解決へのアプローチ 4種類のカテゴリで実施 システム 組織 UI/UX ビジネス

  14. システム構成 購入導線 概略図 Acquiring Cart PayPay 注文 決済 PayPayGW PayPay

    PayPayカード 他 Wallet
  15. システム全般共通 量を増やす+量を調整する+閾値を守る Server+Database STEP1 スケール アウト&アップ 流量制限 STEP2 非同期化 限界値の設定

    STEP3 RateLimit
  16. スケールアウト&アップ Web/APIサーバの増設+Databaseのバージョンアップ(Oracle19c移行)を実施 Acquiring Cart PayPay 注文 決済 PayPayGW PayPay PayPayカード

    他 Wallet
  17. 非同期の導入 注文のDatabase書込+決済のDatabase書込+オーソリゼーションが対象 Acquiring Cart PayPay 注文 決済 PayPayGW PayPay PayPayカード

    他 Wallet
  18. RateLimitを設ける カートUIおよびPayPayGWとAcquiringで設定 Acquiring Cart PayPay 注文 決済 PayPayGW PayPay PayPayカード

    他 Wallet
  19. Databaseへのアプローチ 代表として注文のDatabaseに着目 Acquiring Cart PayPay 注文 決済 PayPayGW PayPay PayPayカード

    他 Wallet
  20. 注文Databaseの特徴 • 3node構成x2 • ストアIDを主キー • データ量は多い • 追加はユーザの注文時 •

    更新は主にストアから • 参照は一覧・詳細が主 • ストア・ユーザ共に参照実施 • ユーザからの一覧がネック 注文Databaseの問題点 Node間での参照・更新が多く待機イベントが発生していた。 実践!! 高可用性システム構築~RAC詳細編~ - Oracleより引用
  21. Before 注文Databaseは3Nodex2の6Node構成で各Node同じデータを保持 Contents Node1 Contents Node2 Contents Node3 Application Read/Write

    ①注文Insert ②一覧参照
  22. CQRSパターンの採用 データ ストアの読み取りと更新の操作を分離(コマンドクエリ責務分離) ストア更新・参照 STEP1 Sharding 参照対策 STEP2 ReadOnly ユーザ一覧対策

    STEP3 データソース 分離
  23. Sharding 主キーであるストア毎にアクセス先を変更し、待機イベントを削減 Contents Node1 Contents Node2 Contents Node3 Application A-Store

    B-Store C-Store Read/Write Read/Write Read/Write
  24. ReadOnly 参照用のクラスターを用意し、一部の参照はそちらにリクエストを逃がす。 Contents Node1 Contents Node2 Contents Node3 Application A-Store

    B-Store C-Store R/W R/W R/W Contents 各Node Readの一部 Dataguard
  25. データソースの分離 一番負荷の高いユーザの一覧の参照リクエストは別リソースを用意して対応 Contents Node1 Contents Node2 Contents Node3 Application A-Store

    B-Store C-Store R/W R/W R/W Contents 各Node Readの一部 Dataguard Application KVS Read (ユーザの一覧) Write
  26. 解決へのアプローチ 4種類のカテゴリで実施 システム 組織 UI/UX ビジネス

  27. 注文受付中表示 注文完了画面 注文履歴一覧画面

  28. 混雑予想を表示 - 混雑予測時間を表示 - 混雑緩和の見込み時間を表示

  29. - お詫び画面を用意 - 混雑予測を表示 - ご案内は負荷状況など緊急告 知に合わせて更新可能 RateLimitに達した場合

  30. 解決へのアプローチ 4種類のカテゴリで実施 システム 組織 UI/UX ビジネス

  31. 全体負荷試験 受注だけでなく参照含めて負荷試験を実施。実績値を元にRateLimitを設定。 TOP Search Item Cart Order Item

  32. ヤフー内の体制 CTOの元横断的に動ける体制に オーク ション CTO コマース インフラ ⾦融 統括 システム

    統括 データ 統括 ショッ ピング
  33. ショッピング内の体制 SREチームの立ち上げ 検索 SRE 商品 カート 注⽂ 決済 TOP

  34. 解決へのアプローチ 4種類のカテゴリで実施 システム 組織 UI/UX ビジネス 結果

  35. 0 2 4 6 8 10 12 14 we A

    B C D E F G H 一日の注文数の傾向 2021年 超PayPay祭(春)
  36. 0 2 4 6 8 10 12 14 we A

    B C D E F G H 注文数の比較 2019年いい買物の日 VS 2021年 超PayPay祭(春) ▪2019年 いい買物の日 ▪2021年 超PayPay祭(春)
  37. 今後の課題

  38. 今できてること • 受付中や混雑予想などを表示 →今までわからなかったことが伝えられた ユーザ向けUI/UXの磨き込み よりユーザに伝わるように 更に取り組みたいこと • セール開始時の注文増加対策 →対策を考えていく

    • 障害発生時や非同期処理が遅れたときの表示 →進捗状況がわからない、どう表示するか? • 買う前にユーザに待ってもらう仕組み →リアル店舗のレジ待ちの状態
  39. 今できてること • ツールでの告知やお知らせ枠はある ストア向け機能改善 よりストアも業務しやすくなるように 更に取り組みたいこと • 障害や遅延発生時など告知方法 →対応してほしい内容など伝えられるように →よりスムーズに告知できるよう

    • ストアも非同期の注文の状況がわからない →ストアにも進捗状況がを伝えられないか?
  40. 単一障害点の解消 Single Point of Failure Acquiring Cart PayPay 注文 決済

    PayPayGW PayPay PayPayカード 他 Wallet
  41. 緊急時の連携体制の見直し • 社内他部署との連携 • 役割の見直し • ユーザ・ストアへの告知も 障害時の連携体制 障害内容や対応についてを連携し、ユーザ・ストアファーストに動けるように

  42. ご静聴 ありがとうございました