任天堂:新しい汎用ゲームサーバーを Google Kubernetes Engine、Cloud Spanner などを駆使して構築
Google Cloud Japan Team
世界中で愛好されている任天堂株式会社(以下、任天堂)の家庭用ゲーム機「Nintendo Switch」。そのオンライン マルチプレイを担う汎用ゲームサーバーの動作基盤に新たに Google Cloud が採用されました。多くのユーザーとの通信を処理しなければならないこの仕組みを、なぜ Google Cloud 上に構築したのか。どのような工夫を施すことで、安定性・可用性と運用負担の軽減を両立させたのか。構築に携わったエンジニアのお二人に話を伺いました。
利用しているサービス:
Google Kubernetes Engine、Agones、Anthos Service Mesh、Cloud Spanner、Cloud Load Balancing、Cloud Storage、Cloud Monitoring、Cloud Trace、Cloud Logging、BigQuery など
Google Cloud なら Kubernetes や Istio をフルマネージドで使える
今やゲームとインターネットは切り離せないもの。それは「Nintendo Switch」も例外ではありません。フレンドの状況を確認したり、オンライン ショップでゲームを購入、ダウンロードしたり、ゲーム内外のさまざまな部分でインターネットが活用されています。そうした中、「オンラインマルチプレイ」はゲームにとって、お客様に注目され、重要視される要素の一つです。多くのタイトルが、インターネットを通じて世界中のユーザーと対戦したり、協力したりといった遊び方を提供しています。
任天堂では「ニンテンドーDS」の頃から、オンラインマルチプレイの取り組みを開始。携帯型ゲーム機「ニンテンドー3DS」(2011 年発売)の時代に、ユーザー認証やマッチメイクなど、多くのタイトルで共通して使う機能を提供する汎用ゲームサーバーを構築し、その後も機能強化を繰り返しながら提供し続けてきました。そうした中、オンライン ユーザー数の増加や、ネット環境、プレイ環境の変化を受け、今後、さらにオンライン ゲームを発展・普及させていくため、2018 年、新技術も積極的に採り入れた「任天堂プラットフォーム向け汎用ゲームサーバー(NPLN)」を開発することになったと、技術開発部の開発担当、河原 太介 氏は言います。
「開発が大規模化して携わるエンジニアが増えたことと、利用タイトルの増加を踏まえ、NPLN では『マイクロ サービス指向』と『マルチテナント構成』の 2 つをコンセプトにシステム全体をコンテナベースで再設計しています。これらを実現するために、必要な Kubernetes や Istio をフルマネージドで利用できる GKE(Google Kubernetes Engine)と Anthos Service Mesh を擁する Google Cloud は我々のニーズに合致した選択肢でした。また、データベースについても、ひとつのインスタンスの中に複数タイトルのデータを入れるには、耐久性や可用性だけでなく、極めて高いスケーラビリティが必要で、そこに Cloud Spanner がマッチしました。」
2021 年のローンチ後、すでに複数のタイトルで導入が進む
NPLN のサービスはマイクロサービスで構成されており、Anthos Service Mesh でサービス メッシュを管理しています。クライアント(Nintendo Switch)からサービス メッシュのアクセスには Cloud Load Balancing を経由して接続します。GKE 上の各サービスは原則としてすべてステートレスに実装されており、ユーザー情報を含むステートフルな情報は Cloud Spanner や Cloud Storage(GCS)に格納。NPLN から出力されたメトリクスやログは Cloud Monitoring や Cloud Trace、Cloud Logging で収集・蓄積し、その一部は BigQuery に転送して必要に応じて分析できるようにしています。
なお、NPLN サーバーは原則としてマルチテナントで運用されていますが、極度に大きなトラフィックが予測される人気タイトルや、特殊な要件のタイトルについてはシングル テナントとして分離できるハイブリッド構成を実現。Anthos Service Mesh がその複雑化したルーティングを担当しています。
「NPLN には、製品環境と開発環境、検証環境など、複数の論理的な環境が存在し、それらに個別の GKE クラスタを割り当てることで独立して更新できるようにしています。また、マッチメイクの条件設定など、タイトルごとの設定値は環境によらず共通になることもあるため、設定値を集中管理できるように、これらの環境とはさらに別のクラスタに管理用のダッシュボードを用意しました。このクラスタが各環境のクラスタと横断して通信することで、ゲーム開発者が行った設定変更を自動的にすべての環境に反映できるように工夫しています。」(河原氏)
また、オンライン マルチプレイを支えるセッション管理サーバーの運用には、Google のオープンソース プロジェクトである Agones を活用。その狙いについて、技術開発部の開発担当、田中 翔也 氏は次のように説明します。
「NPLN では、ユーザー間でマッチメイクが成立すると、セッションという単位にまとめます。そして各セッションに、内製の軽量なインメモリ データベース機能を持つセッション管理サーバーである Gamesync を割り当てます。これはそれぞれが独立した Pod になっているのですが、そのライフサイクルは他の GKE クラスタの Pod とは大きく異なっています。そこで、NPLN ではそれを Agones を利用して管理しています。」
こうした仕組みの構築に際し、任天堂は Google Cloud のエキスパートからのコンサルティングを受けられる PSO(Professional Services Organization)を導入しました。
「チームとして Google Cloud を利用した大規模プロダクト開発が初めてだったため、設計に関する専門的なアドバイスや、ローンチのサポートを期待して PSO を導入しました。そのおかげで潜在的な不具合が見つかったり、ローンチ前に対策しておくべき問題を一通り解決したりすることができたので、導入した成果はあったと考えています。特に Cloud Spanner を使いこなすにあたり、我々のワークロードに合わせたチューニングや、Cloud Spanner の特性を考慮した負荷試験の実施方法などをアドバイスいただけたのはありがたかったですね。」(田中氏)
2021 年より運用が開始され、すでにソフトメーカー タイトルも含めた複数のゲームタイトルで利用され始めているという NPLN。もちろん、今後も機能強化していく予定で、そこに Google Cloud の各種プロダクトを活用していきたいと河原氏は語ります。
「Cloud Logging など、ログ周辺の機能を今後さらに活用していきたいですね。たとえば、NPLN のログをすべて載せてしまうのは現実的ではないため、GCS や BigQuery と連携する機能をうまく活用して、開発体験とコストの折り合いをつけられないか模索しているところです。もちろん、それ以外にも Anthos をさらに使いこなすことで運用の安定性を高めつつ管理コストを削減したり、Cloud Spanner と BigQuery の連携、Google Cloud Managed Service for Prometheus を導入したりなど、やりたいことはたくさんあり、幅広い知識や興味を持ったエンジニアを求めています。この記事やゲームサーバーに興味を持っていただけたらぜひご検討ください!」(河原氏)
〒601-8501 京都市南区上鳥羽鉾立町 11-1
1889 年に創業し、1983 年に発売した「ファミリーコンピュータ」以降、家庭用ゲーム専用機のハードウェアとソフトウェアの開発・製造・販売を手がけるグローバル企業。2017 年に発売された「Nintendo Switch」は、全世界で 1 億台を超える大ヒット商品となった。2021 年にはユニバーサル・スタジオ・ジャパンにテーマパーク「スーパー・ニンテンドー・ワールド」をオープン。ゲーム以外の分野においても、任天堂 IP の活用を積極的に推し進めている。
インタビュイー(写真左から)
技術開発部 プラットフォーム技術開発グループ サブマネージャー 河原 太介 氏
技術開発部 プラットフォーム技術開発グループ 田中 翔也 氏
その他の導入事例はこちらをご覧ください