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

超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

November 18, 2022
Tweet

More Decks by Tech-Verse2022

Other Decks in Technology

Transcript

  1. 自己紹介
    • 2007年〜 ヤフーオークション
    • 2013年〜 ヤフーショッピング
    • 2019年〜 ヤフーショッピング(注文決済領域)
    職歴
    • 釣り
    • ゲーム
    趣味
    • ServerSide BE
    • WebAPI
    • 高負荷対策
    技術

    View full-size slide

  2. Agenda
    - 超PayPay祭について
    - 解決のアプローチ
    ビジネス
    システム
    UI/UX
    組織
    - 今後の課題

    View full-size slide

  3. ヤフーショッピング

    View full-size slide

  4. 2022年
    2020年
    2015年
    2021年

    2014年
    大型セールの歴史
    ヤフーショッピングの大型セールの歴史
    日本一優勝セール
    年末感謝セール
    超PayPay祭 春
    夏のPayPay祭
    開始
    いい買物の日
    開始(〜2019)
    超PayPay祭
    開始
    超PayPay祭
    開催中



    2018年

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  7. 0
    2
    4
    6
    8
    10
    12
    14
    we A B C D E F G H
    一日の注文数の傾向
    2019年いい買物の日

    View full-size slide

  8. 栄光と挫折

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  11. セール期間の変更
    セールの立て付けを変更しつつ負荷対策も
    Before
    単日
    After
    複数日
    ü セール期間を長く
    ü グランドフィナーレも
    2日間に
    ü ロスタイムとして
    2時間の延長

    View full-size slide

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

    View full-size slide

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

    Wallet

    View full-size slide

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

    View full-size slide

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

    Wallet

    View full-size slide

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

    Wallet

    View full-size slide

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

    Wallet

    View full-size slide

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

    Wallet

    View full-size slide

  19. 注文Databaseの特徴
    • 3node構成x2
    • ストアIDを主キー
    • データ量は多い
    • 追加はユーザの注文時
    • 更新は主にストアから
    • 参照は一覧・詳細が主
    • ストア・ユーザ共に参照実施
    • ユーザからの一覧がネック
    注文Databaseの問題点
    Node間での参照・更新が多く待機イベントが発生していた。
    実践!! 高可用性システム構築~RAC詳細編~ - Oracleより引用

    View full-size slide

  20. Before
    注文Databaseは3Nodex2の6Node構成で各Node同じデータを保持
    Contents
    Node1
    Contents
    Node2
    Contents
    Node3
    Application
    Read/Write
    ①注文Insert ②一覧参照

    View full-size slide

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

    View full-size slide

  22. Sharding
    主キーであるストア毎にアクセス先を変更し、待機イベントを削減
    Contents
    Node1
    Contents
    Node2
    Contents
    Node3
    Application
    A-Store B-Store C-Store
    Read/Write Read/Write
    Read/Write

    View full-size slide

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

    View full-size slide

  24. データソースの分離
    一番負荷の高いユーザの一覧の参照リクエストは別リソースを用意して対応
    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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  35. 0
    2
    4
    6
    8
    10
    12
    14
    we A B C D E F G H
    注文数の比較
    2019年いい買物の日 VS 2021年 超PayPay祭(春)
    ■2019年 いい買物の日
    ■2021年 超PayPay祭(春)

    View full-size slide

  36. 今後の課題

    View full-size slide

  37. 今できてること
    • 受付中や混雑予想などを表示
    →今までわからなかったことが伝えられた
    ユーザ向けUI/UXの磨き込み
    よりユーザに伝わるように
    更に取り組みたいこと
    • セール開始時の注文増加対策
    →対策を考えていく
    • 障害発生時や非同期処理が遅れたときの表示
    →進捗状況がわからない、どう表示するか?
    • 買う前にユーザに待ってもらう仕組み
    →リアル店舗のレジ待ちの状態

    View full-size slide

  38. 今できてること
    • ツールでの告知やお知らせ枠はある
    ストア向け機能改善
    よりストアも業務しやすくなるように
    更に取り組みたいこと
    • 障害や遅延発生時など告知方法
    →対応してほしい内容など伝えられるように
    →よりスムーズに告知できるよう
    • ストアも非同期の注文の状況がわからない
    →ストアにも進捗状況がを伝えられないか?

    View full-size slide

  39. 単一障害点の解消
    Single Point of Failure
    Acquiring
    Cart
    PayPay
    注文 決済
    PayPayGW
    PayPay
    PayPayカード

    Wallet

    View full-size slide

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

    View full-size slide

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

    View full-size slide