Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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