コンテナベースのゲームバックエンドアーキテクチャ - ゲーム業界レンズ

コンテナベースのゲームバックエンドアーキテクチャ

このセクションでは、コンテナベースのゲームバックエンドアーキテクチャについて概説します。

コンテナを使用してゲームバックエンドをホストする方法を示すリファレンスアーキテクチャ図。
コンテナを使用したゲームバックエンドのホスティング
  1. プレイヤーは、ゲームクライアントソフトウェアを使用してゲームにアクセスします。ゲームクライアントソフトウェアは、ゲームプラットフォーム、デジタルストアフロント、または Amazon CloudFront などのコンテンツ配信ネットワーク (CDN) からの直接ダウンロードを通じて、プレイヤーに配信できます。CDN は、エッジロケーションでキャッシュを提供し、コンテンツをダウンロードするユーザーのパフォーマンスを向上させます。例えば、CloudFront を使用して、ゲームクライアントソフトウェアだけでなく、ゲームアセットやその他のコンテンツもプレイヤーに配信できます。

  2. Global Accelerator は、トラフィックの高速化とカスタマイズ可能なコントロールを提供することで、プレイヤーゲームクライアントからロードバランサーへのトラフィックのルーティング、マルチリージョンやフェイルオーバーを目的としたリージョン間でのトラフィックのルーティングに役立ちます。ゲームバックエンド REST API のカスタムドメイン名は、トラフィックを Global Accelerator のエンドポイントにルーティングするように Route 53 で設定します。 Shield Advanced は、アクセラレーターとゲームバックエンドに DDoS 緩和機能を提供します。

  3. NAT ゲートウェイと Application Load Balancer は、ゲームバックエンドが使用する各アベイラビリティーゾーンのパブリックサブネットにデプロイすることで、リージョンでの高可用性を確保します。 ウェブアプリケーションファイアウォール は、Application Load Balancer にデプロイすることで、レイヤー 7 のウェブトラフィックフィルタリングを提供します。

  4. ゲームバックエンドは、回復力を高めるために複数のアベイラビリティーゾーンに分散したプライベートサブネットで、 Amazon EKS クラスター内にデプロイした個々のコンテナベースのマイクロサービスのコレクションとしてホストします。オートスケーリングにより、リソース使用率 (通常はプレイヤーの需要と関連する) に基づいて、サービスとクラスターノードの容量が動的に調整されます。この場合、 Cluster Autoscaler はクラスター内のノード数を自動的に調整するのに対し、 Horizontal Pod Autoscaler はクラスター内にデプロイしたポッドを自動的にスケールします。

  5. ゲームとプレイヤーのデータは、複数のアベイラビリティーゾーンにまたがるプライベートサブネットにデプロイしたバックエンドデータベースとキャッシュに保存され、プライマリノードとレプリカノードとの間でレプリケートされます。Aurora は、プレイヤープロファイル、エンタイトルメント、ゲーム内購入などのユースケースによく使用されます。これらのユースケースでは、クエリ要件が複雑になる可能性があり、MySQL や PostgreSQL のリレーショナルデータモデリング機能が役立つ場合があります。ElastiCache for Redis は、ハイパフォーマンスのリーダーボードの構築や pub/sub メッセージングに役立ちます。また、アクセス頻度の高いデータをキャッシュしてレイテンシーを短縮したり、データベースへの負荷を軽減したりするためにも役立ちます。DynamoDB は、予測不能なアクセスパターンに最適なフルマネージドの NoSQL データストアです。プレイヤーやゲームの状態データ、セッションデータ、インベントリ、アイテムストアなどのユースケースや、オーバーヘッドを最小限に抑えたグローバルデータベースを必要とするユースケースにおいて、実質的に無制限のスループットまでスケールできます。

  6. バックグラウンドで処理できる作業 (リーダーボードの更新やフレンド登録の依頼など) を実行するには、非同期処理のワークフローを使用する必要があります。この種の作業を Amazon SQS キューにプッシュするようにゲームバックエンドを設定して、ゲームの成長に合わせてスケールできるようにするか、あるいは Amazon SNS トピックを使用して作業を多数のコンシューマーアプリケーションキューに分散して並列処理を行うことを検討します。また、 Lambda 関数 を使用してイベント駆動方式で処理を実行すると、コンピューティングインフラストラクチャのコストと管理オーバーヘッドを低減できます。存続期間が長いワークフローや、複数のステップを使用してタスクを調整する必要があるワークフローの場合は、 Step Functions を使用してワークフロー全体をオーケストレートすることを検討します。Amazon EventBridge を使用すると、AWS のサービスやカスタムアプリケーションイベントに応答する関数を開始できます。