Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
No content
Slide 2
Slide 2 text
自己紹介 • 2007年〜 ヤフーオークション • 2013年〜 ヤフーショッピング • 2019年〜 ヤフーショッピング(注文決済領域) 職歴 • 釣り • ゲーム 趣味 • ServerSide BE • WebAPI • 高負荷対策 技術
Slide 3
Slide 3 text
Agenda - 超PayPay祭について - 解決のアプローチ ビジネス システム UI/UX 組織 - 今後の課題
Slide 4
Slide 4 text
ヤフーショッピング
Slide 5
Slide 5 text
2022年 2020年 2015年 2021年 〜 2014年 大型セールの歴史 ヤフーショッピングの大型セールの歴史 日本一優勝セール 年末感謝セール 超PayPay祭 春 夏のPayPay祭 開始 いい買物の日 開始(〜2019) 超PayPay祭 開始 超PayPay祭 開催中 〜 〜 〜 2018年
Slide 6
Slide 6 text
0 2 4 6 8 10 12 14 we A B C D E F G H 1日あたりの取扱高の成長 ヤフーショッピングで単日で一番売れた日
Slide 7
Slide 7 text
0 2 4 6 8 10 12 14 we A B C D E F G H 秒間最大注文数の推移 1秒間あたりの最大注文数
Slide 8
Slide 8 text
0 2 4 6 8 10 12 14 we A B C D E F G H 一日の注文数の傾向 2019年いい買物の日
Slide 9
Slide 9 text
栄光と挫折
Slide 10
Slide 10 text
解決へのアプローチ 4種類のカテゴリで実施 システム 組織 UI/UX ビジネス
Slide 11
Slide 11 text
解決へのアプローチ 4種類のカテゴリで実施 システム 組織 UI/UX ビジネス
Slide 12
Slide 12 text
セール期間の変更 セールの立て付けを変更しつつ負荷対策も Before 単日 After 複数日 ü セール期間を長く ü グランドフィナーレも 2日間に ü ロスタイムとして 2時間の延長
Slide 13
Slide 13 text
解決へのアプローチ 4種類のカテゴリで実施 システム 組織 UI/UX ビジネス
Slide 14
Slide 14 text
システム構成 購入導線 概略図 Acquiring Cart PayPay 注文 決済 PayPayGW PayPay PayPayカード 他 Wallet
Slide 15
Slide 15 text
システム全般共通 量を増やす+量を調整する+閾値を守る Server+Database STEP1 スケール アウト&アップ 流量制限 STEP2 非同期化 限界値の設定 STEP3 RateLimit
Slide 16
Slide 16 text
スケールアウト&アップ Web/APIサーバの増設+Databaseのバージョンアップ(Oracle19c移行)を実施 Acquiring Cart PayPay 注文 決済 PayPayGW PayPay PayPayカード 他 Wallet
Slide 17
Slide 17 text
非同期の導入 注文のDatabase書込+決済のDatabase書込+オーソリゼーションが対象 Acquiring Cart PayPay 注文 決済 PayPayGW PayPay PayPayカード 他 Wallet
Slide 18
Slide 18 text
RateLimitを設ける カートUIおよびPayPayGWとAcquiringで設定 Acquiring Cart PayPay 注文 決済 PayPayGW PayPay PayPayカード 他 Wallet
Slide 19
Slide 19 text
Databaseへのアプローチ 代表として注文のDatabaseに着目 Acquiring Cart PayPay 注文 決済 PayPayGW PayPay PayPayカード 他 Wallet
Slide 20
Slide 20 text
注文Databaseの特徴 • 3node構成x2 • ストアIDを主キー • データ量は多い • 追加はユーザの注文時 • 更新は主にストアから • 参照は一覧・詳細が主 • ストア・ユーザ共に参照実施 • ユーザからの一覧がネック 注文Databaseの問題点 Node間での参照・更新が多く待機イベントが発生していた。 実践!! 高可用性システム構築~RAC詳細編~ - Oracleより引用
Slide 21
Slide 21 text
Before 注文Databaseは3Nodex2の6Node構成で各Node同じデータを保持 Contents Node1 Contents Node2 Contents Node3 Application Read/Write ①注文Insert ②一覧参照
Slide 22
Slide 22 text
CQRSパターンの採用 データ ストアの読み取りと更新の操作を分離(コマンドクエリ責務分離) ストア更新・参照 STEP1 Sharding 参照対策 STEP2 ReadOnly ユーザ一覧対策 STEP3 データソース 分離
Slide 23
Slide 23 text
Sharding 主キーであるストア毎にアクセス先を変更し、待機イベントを削減 Contents Node1 Contents Node2 Contents Node3 Application A-Store B-Store C-Store Read/Write Read/Write Read/Write
Slide 24
Slide 24 text
ReadOnly 参照用のクラスターを用意し、一部の参照はそちらにリクエストを逃がす。 Contents Node1 Contents Node2 Contents Node3 Application A-Store B-Store C-Store R/W R/W R/W Contents 各Node Readの一部 Dataguard
Slide 25
Slide 25 text
データソースの分離 一番負荷の高いユーザの一覧の参照リクエストは別リソースを用意して対応 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
Slide 26
Slide 26 text
解決へのアプローチ 4種類のカテゴリで実施 システム 組織 UI/UX ビジネス
Slide 27
Slide 27 text
注文受付中表示 注文完了画面 注文履歴一覧画面
Slide 28
Slide 28 text
混雑予想を表示 - 混雑予測時間を表示 - 混雑緩和の見込み時間を表示
Slide 29
Slide 29 text
- お詫び画面を用意 - 混雑予測を表示 - ご案内は負荷状況など緊急告 知に合わせて更新可能 RateLimitに達した場合
Slide 30
Slide 30 text
解決へのアプローチ 4種類のカテゴリで実施 システム 組織 UI/UX ビジネス
Slide 31
Slide 31 text
全体負荷試験 受注だけでなく参照含めて負荷試験を実施。実績値を元にRateLimitを設定。 TOP Search Item Cart Order Item
Slide 32
Slide 32 text
ヤフー内の体制 CTOの元横断的に動ける体制に オーク ション CTO コマース インフラ ⾦融 統括 システム 統括 データ 統括 ショッ ピング
Slide 33
Slide 33 text
ショッピング内の体制 SREチームの立ち上げ 検索 SRE 商品 カート 注⽂ 決済 TOP
Slide 34
Slide 34 text
解決へのアプローチ 4種類のカテゴリで実施 システム 組織 UI/UX ビジネス 結果
Slide 35
Slide 35 text
0 2 4 6 8 10 12 14 we A B C D E F G H 一日の注文数の傾向 2021年 超PayPay祭(春)
Slide 36
Slide 36 text
0 2 4 6 8 10 12 14 we A B C D E F G H 注文数の比較 2019年いい買物の日 VS 2021年 超PayPay祭(春) ■2019年 いい買物の日 ■2021年 超PayPay祭(春)
Slide 37
Slide 37 text
今後の課題
Slide 38
Slide 38 text
今できてること • 受付中や混雑予想などを表示 →今までわからなかったことが伝えられた ユーザ向けUI/UXの磨き込み よりユーザに伝わるように 更に取り組みたいこと • セール開始時の注文増加対策 →対策を考えていく • 障害発生時や非同期処理が遅れたときの表示 →進捗状況がわからない、どう表示するか? • 買う前にユーザに待ってもらう仕組み →リアル店舗のレジ待ちの状態
Slide 39
Slide 39 text
今できてること • ツールでの告知やお知らせ枠はある ストア向け機能改善 よりストアも業務しやすくなるように 更に取り組みたいこと • 障害や遅延発生時など告知方法 →対応してほしい内容など伝えられるように →よりスムーズに告知できるよう • ストアも非同期の注文の状況がわからない →ストアにも進捗状況がを伝えられないか?
Slide 40
Slide 40 text
単一障害点の解消 Single Point of Failure Acquiring Cart PayPay 注文 決済 PayPayGW PayPay PayPayカード 他 Wallet
Slide 41
Slide 41 text
緊急時の連携体制の見直し • 社内他部署との連携 • 役割の見直し • ユーザ・ストアへの告知も 障害時の連携体制 障害内容や対応についてを連携し、ユーザ・ストアファーストに動けるように
Slide 42
Slide 42 text
ご静聴 ありがとうございました