View a markdown version of this page

GAMEREL03-BP01 ゲームサーバーの中断を監視し、データを使用してホスティングアーキテクチャを改善し、信頼性目標を達成する - ゲーム業界レンズ

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

GAMEREL03-BP01 ゲームサーバーの中断を監視し、データを使用してホスティングアーキテクチャを改善し、信頼性目標を達成する

ゲームサーバーメトリクスと、ロード時のレイテンシーの増加などのパフォーマンスの障害や低下がプレイヤーの動作に与える影響を経時的にモニタリングし、ゲームの信頼性要件を満たすようにゲームサーバーホスティング戦略を調整できるようにします。パフォーマンスが低下するゲームサーバーインフラストラクチャは、プレイヤーに影響を与えている場合は直ちにサービスから削除するか、サーバーでホストされているアクティブなプレイヤーセッションがない場合にプロアクティブに交換する必要があります。

このベストプラクティスを活用しない場合のリスクレベル:

実装のガイダンス

ゲームが REST APIs としてホストされているシナリオでは、システムの信頼性を従来のウェブアプリケーションアーキテクチャのように管理できます。このアーキテクチャでは、複数のサーバー間でトラフィックを分散的に負荷分散して、サーバー障害のリスクを軽減できます。

リアルタイムの同期ゲームプレイの場合、ゲームセッションは通常、仮想マシンまたはゲームサーバーインスタンスで実行されているゲームサーバープロセスでホストされます。これは、ゲームプレイ状態をパフォーマンスの高い方法で維持し、接続されたゲームクライアントにレプリケートする必要があるためです。この実装は、プレイヤーのエクスペリエンスが、ゲームセッションをホストするゲームサーバープロセスのパフォーマンスと信頼性に密接に結合されていることを意味します。このタイプのアーキテクチャにより、ゲームサーバーの信頼性の管理は従来のアプローチよりも複雑になります。

ゲームサーバーの障害の影響を軽減するには、Amazon Amazon ElastiCache (Redis OSS) や Amazon  MemoryDB などの高可用性キャッシュまたはデータベースに対してプレイヤーのゲーム状態の非同期更新を継続的に実行するようにゲームを設定します。サーバーに障害が発生した場合、プレイヤーの最後に保存されたゲーム状態を外部データストアから取得し、そのセッションを新しいゲームサーバーインスタンスに復元できます。

ただし、このアプローチは、この外部状態を管理するためのコストと複雑さを追加し、状態の変化が非常に頻繁で、パフォーマンスの高いインメモリキャッシュデータストアを導入してもレプリケーションラグが発生し、セッションを復元するには大きすぎるため、高速または競争的なゲームには適していない可能性があります。この種のゲームの場合、最適な方法は、サーバーが失われたのを受け入れてプレイヤーをゲームロビーに送り返して別のセッションを見つけるか、別のゲームセッションに自動的にリダイレクトすることです。

サーバーの中断の原因に関する有用なログデータをキャプチャして、後で問題を調査できるようにします。Amazon GameLift は、 フリートの問題をデバッグするためのガイダンスを提供し、 Amazon GameLift フリートインスタンスにリモートアクセス する機能を提供します。

実装手順

  • ゲームサーバーメトリクスのパフォーマンス低下をモニタリングし、必要に応じてパフォーマンスが低下しているサーバーを削除または置き換えて信頼性を維持します。

  • Amazon ElastiCache または MemoryDB を非同期ゲーム状態の更新に使用して、可能であればサーバー障害後のセッション復旧を有効にします。

  • フリートのモニタリングとリモートアクセスに Amazon GameLift などのツールを活用して、調査とデバッグのためにサーバーの中断に関する詳細なログデータをキャプチャします。