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

大型イベントにおけるゲームサーバのキャパシティプランニング

 大型イベントにおけるゲームサーバのキャパシティプランニング

\積極的に技術発信を行なっております/

▽ Twitter/COLOPL_Tech
https://twitter.com/colopl_tech

▽ connpassページ
http://colopl.connpass.com

▽ COLOPL Tech Blog
http://blog.colopl.dev

COLOPL Inc.

June 30, 2023
Tweet

More Decks by COLOPL Inc.

Other Decks in Technology

Transcript

  1. 大型イベントにおける
    ゲームサーバの
    キャパシティプランニング
    野中 智矢

    View Slide

  2. 氏名  :
    部署  :
    自己紹介
    2019年に新卒入社してから現在まで
    白猫プロジェクト NEW WORLD'S(以降白猫)の
    運用、開発を担当
    野中 智矢
    技術基盤本部 第1バックエンドエンジニア部
    第1グループ 第1チーム
    2

    View Slide

  3. イベント開催時に起こる問題
    周年やコラボなどの大型イベントリリース時には通常の何倍
    ものアクセスが来る(スパイクアクセス)
    なんかいい感じの画像
    オートスケールだとスケールが間に合わないので事前に大量
    のゲームサーバを構えることでリリースに耐える必要がある
    3
    イベントリリース! →

    View Slide

  4. 今回の話題
    周年、コラボイベントなどの大型イベントのリリース時に
    どのような方法でゲームサーバの台数を決めるのか?
    →DAU(Daily Active User)・過去の記録・CPU効率
     を元に見積もっています
    4

    View Slide

  5. 実際の計算式
    ① 目標DAU ✖ DAUに対するピーク時のユーザー割合
      = 想定ピークUU
    ② 想定ピークUU ✖ 1ユーザーあたりの想定RPM
      = 想定ピークRPM
    ③ 想定ピークRPM ÷ CPU効率 ÷ 目標CPU使用率
      = イベントリリース時の台数!!
    5

    View Slide

  6. 実際の計算式
    ① 目標DAU ✖ DAUに対するピーク時のユーザー割合
      = 想定ピークUU
    ② 想定ピークUU ✖ 1ユーザーあたりの想定RPM
      = 想定ピークRPM
    ③ 想定ピークRPM ÷ CPU効率 ÷ 目標CPU使用率
      = イベントリリース時の台数!!
    6
    🤔

    View Slide

  7. 過去の記録として今回は以下の数値を仮で用意しました
    これらの数値を参考に式を1個づつ紐解いていきます
    7
    数値を当てはめながら紐解いていく
    台数 DAU
    リリース時(ピーク)
    RPM UU CPU使用率
    60台 80万 100万 10万 80%

    View Slide

  8. 1個づつ紐解いていく
    目標DAU ✖ DAUに対するピーク時のユーザー割合
     = 想定ピークUU
    想定ピークUU ✖ 1ユーザーあたりの想定RPM
     = 想定ピークRPM
    想定ピークRPM ÷ CPU効率 ÷ 目標CPU使用率
     = イベントリリース時の台数!!
    8

    View Slide

  9. 1個づつ紐解いていく
    目標DAU ✖ DAUに対するピーク時のユーザー割合
     = 想定ピークUU
    想定ピークUU ✖ 1ユーザーあたりの想定RPM
     = 想定ピークRPM
    想定ピークRPM ÷ CPU効率 ÷ 目標CPU使用率
     = イベントリリース時の台数!!
    9

    View Slide

  10. 目標DAU
    目標DAUとはイベントリリース当日にくるDAUのこと
    この目標DAUを元にリリース時の台数を決めていきます
    DAUという分かりやすい指標を元とすることによって
    他セクションとの認識のすり合わせが円滑になる
    利点があります
    10

    View Slide

  11. 目標DAU
    イベント当日にくるDAUを主に以下から予測する
    ● 内容への期待値、熱量といった定性的な要素を加味して
    プランナーが算出したDAU
    ● 過去実績を元にデータサイエンティストが機械的に
    算出したDAU
    11

    View Slide

  12. 目標DAU
    今回は例として...
    各セクションとすり合わせた結果、今回のDAUは最高で
    100万人はきそうだぞ
    →目標DAUが決まった
    12

    View Slide

  13. 1個づつ紐解いていく
    100万人(目標DAU) ✖ DAUに対するピーク時のユーザー割合
     = 想定ピークUU
    想定ピークUU ✖ 1ユーザーあたりの想定RPM
     = 想定ピークRPM
    想定ピークRPM ÷ CPU効率 ÷ 目標CPU使用率
     = イベントリリース時の台数!!
    13

    View Slide

  14. 1個づつ紐解いていく
    100万人(目標DAU) ✖ DAUに対するピーク時のユーザー割合
     = 想定ピークUU
    想定ピークUU ✖ 1ユーザーあたりの想定RPM
     = 想定ピークRPM
    想定ピークRPM ÷ CPU効率 ÷ 目標CPU使用率
     = イベントリリース時の台数!!
    14

    View Slide

  15. DAUに対するピーク時のユーザー割合
    この割合が分かると目標DAUからリリース時にくるUUを予想
    することができるので、重要な指標となる
    今回は先程あげた過去の記録を参考にします
    15
    台数 DAU
    リリース時(ピーク)
    RPM UU CPU使用率
    60台 80万 100万 10万 80%

    View Slide

  16. DAUに対するピーク時のユーザー割合
    過去の記録は....
    DAUは80万人でピーク時には10万人がきていました!
    80万人(DAU) ÷ 10万人(UU) = 8%
    →DAUに対するピーク時のユーザー割合が決まった
    16

    View Slide

  17. あとは式に当てはめる
    これで想定ピークUUを求められるようになりました!
    100万人(目標DAU) ✖ 8%(DAUに対するピーク時のユーザー割合)
     = 8万人(想定ピークUU)!!
    おおよそ8万人がピーク時にくると予想できた
    17

    View Slide

  18. さらに紐解いていく
    100万人(目標DAU) ✖ 8%(DAUに対するピーク時のユーザー割合)
     = 8万人(想定ピークUU)!!
    8万人(想定ピークUU) ✖ 1ユーザーあたりの想定RPM
     = 想定ピークRPM
    想定ピークRPM ÷ CPU効率 ÷ 目標CPU使用率
     = イベントリリース時の台数!!
    18

    View Slide

  19. さらに紐解いていく
    100万人(目標DAU) ✖ 8%(DAUに対するピーク時のユーザー割合)
     = 8万人(想定ピークUU)!!
    8万人(想定ピークUU) ✖ 1ユーザーあたりの想定RPM
     = 想定ピークRPM
    想定ピークRPM ÷ CPU効率 ÷ 目標CPU使用率
     = イベントリリース時の台数!!
    19

    View Slide

  20. 1ユーザーあたりの想定RPM
    この値を見積もることによって想定ピークUUから
    想定ピークRPMを導き出すことができる
    これも過去の記録を参考にします
    20
    台数 DAU
    リリース時(ピーク)
    RPM UU CPU使用率
    60台 80万 100万 10万 80%

    View Slide

  21. 1ユーザーあたりの想定RPM
    過去の記録は....
    ピーク時のDAUは10万人で1分間に100万件のリクエストが送
    られてきていました!
    100万rpm ÷ 10万人 = 10rpm
    →1ユーザーから送られる想定RPMが分かった
    21

    View Slide

  22. 式に当ていく
    これで想定ピークRPMを求められるようになりました!
    8万人(想定ピークUU) ✖ 10rpm(1ユーザーあたりの想定RPM)
     = 80万rpm(想定ピークRPM)!!
    おおよそ80万rpmがピーク時にくると予想できた
    22

    View Slide

  23. 最後の式を紐解いていく
    100万人(目標DAU) ✖ 8%(DAUに対するピーク時のユーザー割合)
     = 8万人(想定ピークUU)!!
    8万人(想定ピークUU) ✖ 10rpm(1ユーザーあたりの想定RPM)
     = 80万rpm(想定ピークRPM)!!
    80万rpm(想定ピークRPM) ÷ CPU効率 ÷ 目標CPU使用率
     = イベントリリース時の台数!!
    23

    View Slide

  24. 最後の式を紐解いていく
    100万人(目標DAU) ✖ 8%(DAUに対するピーク時のユーザー割合)
     = 8万人(想定ピークUU)!!
    8万人(想定ピークUU) ✖ 10rpm(1ユーザーあたりの想定RPM)
     = 80万rpm(想定ピークRPM)!!
    80万rpm(想定ピークRPM) ÷ CPU効率 ÷ 目標CPU使用率
     = イベントリリース時の台数!!
    24

    View Slide

  25. CPU効率
    ここではCPU1%辺りに捌けるRPM数をCPU効率としています
    CPU効率は以下の計算式で求めることができます
    RPM ÷ ゲームサーバー台数 ÷ 平均CPU使用率 = CPU効率
    1台あたりのRPM
    25

    View Slide

  26. CPU効率
    過去の記録は....
    サーバー60台で100万件のリクエストを捌きました!
    平均のCPU使用率は80%です!
    100万rpm ÷ 60台 = 1.7万rpm(1台あたりのRPM)
    1.7万rpm ÷ 80%(平均CPU使用率) = 212rpm(CPU効率)
    →CPU効率が分かった
    26

    View Slide

  27. 最後の式を紐解いていく
    100万人(目標DAU) ✖ 8%(DAUに対するピーク時のユーザー割合)
     = 8万人(想定ピークUU)!!
    8万人(想定ピークUU) ✖ 10rpm(1ユーザーあたりの想定RPM)
     = 80万rpm(想定ピークRPM)!!
    80万rpm(想定ピークRPM) ÷ 212rpm(CPU効率) ÷ 目標CPU使用率
     = イベントリリース時の台数!!
    27

    View Slide

  28. 100万人(目標DAU) ✖ 8%(DAUに対するピーク時のユーザー割合)
     = 8万人(想定ピークUU)!!
    8万人(想定ピークUU) ✖ 10rpm(1ユーザーあたりの想定RPM)
     = 80万rpm(想定ピークRPM)!!
    80万rpm(想定ピークRPM) ÷ 212rpm(CPU効率) ÷ 目標CPU使用率
     = イベントリリース時の台数!!
    最後の式を紐解いていく
    28

    View Slide

  29. 目標CPU使用率
    ピーク時の想定RPMとCPU効率から合計のCPU使用率が予想
    できる
    80万rpm(想定ピークRPM) ÷ 212rpm(CPU効率)
     = 3773%(合計CPU使用率)
    合計で3773%のCPUが使用される事が分かっているので
    目標のCPU使用率で割れば台数が求められる
    例として今回は50%を目標とする
    29

    View Slide

  30. 今回のイベントは75台と想定できた!
    100万人(目標DAU) ✖ 8%(DAUに対するピーク時のユーザー割合)
     = 8万人(想定ピークUU)!!
    8万人(想定ピークUU) ✖ 10rpm(1ユーザーあたりの想定RPM)
     = 80万rpm(想定ピークRPM)!!
    80万rpm(想定ピークRPM)÷212rpm(CPU効率)÷50%(目標CPU使用率)
     = 75台(イベントリリース時の台数)!!
    30

    View Slide

  31. ちなみに、、、
    通常のイベントなどでは想定ピークRPMをDAUではなく
    前回のイベントなどのピークRPM前日比などで決めています
    前回のイベントのピークRPM前日比がわかれば
    当日のピークRPM ÷ 前日のピークRPM = ピークRPM前日比
    今回のイベントの当日のピーク時の想定RPMが予想できる
    前日のピークRPM ✖ ピークRPM前日比 = 当日のピークRPM
    31

    View Slide

  32. 最後に
    大型イベントのリリースではDAU・過去の記録・CPU効率を元に
    キャパシティプランニングを行なっている
    ただし、この見積もり方は大まかな指標です
    ● CPU1%で捌けるRPM数や1ユーザーから送られてくるRPM数など
    は変わり続けている
    ● 負荷に関わる外的要因は他にもたくさんある
    (各APIのレイテンシ、ユーザーが持つデータ量、etc…)
    イベントの内容や蓄積された過去の記録を元に考察して
    精度の高いキャパシティプランニングをすることが重要
    32

    View Slide