Google Cloud Next Tokyo ’24 にて行われたセッション「同時接続数 185 万人を支えたパルワールドのインフラ最前線」のレポートです。
Google Cloud Next Tokyo ’24 とは?
2024 年 8 月 1、2 日の 2 日間でパシフィコ横浜で開催されている、Google Cloud が主催する国内最大級規模のイベントです。
https://cloudonair.withgoogle.com/events/next-tokyo-24
登壇者
株式会社ポケットペア リードネットワークエンジニア
中條 博斗 氏
株式会社ポケットペア リードインフラエンジニア
西北 尚史 氏
株式会社ポケットペア SRE
笹 和成 氏
セッション内容
パルワールド(Palworld)とは?
パルワールドは Steam と XBOX で展開されているオープンワールドサバイバルゲームです。
今年の 1 月にリリースされてまもなく世界的に大ヒットし、1 ヶ月ほどで 1500 万本の売上に達しているビッグタイトルとなっています。
そんな大ヒットとは裏腹に、X では以下のポストが話題となっていました。
開発者側はここまで多くのユーザー数は予想していなかったとのことで、当初はリソースの継ぎ足しで乗り切っていた結果このような予測金額となってしまったと語られていました。
これを受けて、アーキテクチャの見直しとコスト削減に向けた施策に取り組んだという内容になっています。
では、具体的に実際にどのような施策を講じられたのかを見ていきます。
マルチプレイと Google Cloud
本ゲームのマルチプレイは P2P 通信と専用ホストサーバーを立てて行う 2 種類の方法があります。
このうち、専用ホストサーバーに関連する部分で Google Cloud を利用しており、API サーバーと公式ゲームサーバーの構築を行っているようでした。
API サーバー
API サーバーは主に以下の役割となっています。
- 公式サーバー、コミュニティサーバーの一覧機能を提供
- 不適切なチャットやプレイヤー名などのテキストフィルター
アーキテクチャは以下です。
ポイントとして以下の観点を挙げられていました。
- GKE を採用したことによりスケーラビリティを確保し、ゲームのアップデートなどによる負荷変動へ自動的に対応することで運用工数を大きく削減していること
- Cloud CDN でサーバー一覧や検索結果をキャッシュすることで負荷軽減を行い、キャッシュヒット率は30~40%ほどで一定の成果を上げていること
- 当初想定していた 30 万サーバー(10QPS)程度のデータベースでは大量の update 処理を行いながらの検索処理に耐えられないことがわかったため、Cloud Spanner を採用したこと
- 当初 PGAdapter を利用していたが、CPUの負荷に問題があったため Google Standard SQL へ移行してパフォーマンスを向上させたこと
このような継続した取り組みによって、今もパルワールドが支えられているんですね。
公式ゲームサーバー
公式ゲームサーバーでも同時に複数人のユーザーがプレイするため、API サーバーと同様に GKE を採用されていました。
公式ゲームサーバーは StatefulSet を利用して 1 台の Pod で運用、セーブデータは PersistentVolume に保存しています。
また、ゲームクライアントはノードの HostPort に直接接続する形となっております。
GKE を使用することで、最小限のサーバー管理で済むことやライフサイクルによって運用負担も低減しているとのことでした。
また、ストレージのバックアップ・リストア機能が完備されていること、対象サーバーをマニフェスト化することでGitでの管理を実現できたことも利点として挙げられていました。
具体的には以下のようなポイントがありました。
終わりに
爆発的なユーザーの増加にも関わらず、安定したサーバーを提供できている裏にはこのような努力があるんだなと実感しました。
ゲーム系の開発に限らず、負荷試験や検証の重要性をより一層感じることができたセッションでした!