Amazon Web Services ブログ

Tag: Gaming

大規模なゲームサーバを最大90%安いコストで運用する方法

Fortnite: Battle Royale, Warframe, そしてApex Legendsなど成功している多くのビデオゲームでは、プレイヤーがゲームの一部に無料でアクセスできる”Free-to-Play”モデルを採用しています。このようなゲームは、もはや低品質なものではなく、プレミアムな品質を必要とします。ビジネスモデルはコストの制約を受けていますが、そのような状況に対してAmazon EC2 スポットインスタンスは実行可能な低コストのコンピューティングオプションを提供します。カジュアルなマルチプレイヤーゲームはもちろん、マルチプレイヤーゲームサーバのワークロードを実行するAmazon EKSコンテナのオーケストレーションではプレイヤーへの影響を最小限に抑え、コストを最適化するメカニズムが必要となりますが、そのような場合にはスポットインスタンスの利用がフィットします。 スポットインスタンスはAWSクラウドの利用可能な予備のコンピュートキャパシティを提供することで、オンデマンドに比べて大幅な割引価格でご利用が可能です。スポットインスタンスによるコストを最適化によって、これまでと同じ予算でアプリーケーションのスループットを最大10倍にまでスケールできます。スポットインスタンスはフォールトトレラント(障害許容)なワークロードに最適です。マルチプレイヤーゲームサーバも例外ではありません。ゲームサーバの状態は、リアルタイムなプレイヤーの入力によって更新され、サーバは一時的な状態を保持します。ゲームサーバのワークロードは使い捨てになることが多く、スポットインスタンスを利用することでコンピュートにかかるコストを最大90%削減できます。このブログでは、スポットインスタンスを効果的に使用するためのゲームサーバワークロードの設計方法について説明します。 ゲームサーバワークロードの特徴 簡単に言えば、マルチプレイヤーゲームサーバは現在のキャラクターの位置と状態(主にアニメーション)を更新するためにほとんどの時間を費やします。残りの時間は、戦闘に関するアクションや移動、その他ゲームイベントに関連する画像の更新に費やされます。具体的にゲームサーバのCPUは、クライアントの位置情報を受信し、ゲームステートを計算し、その情報を特定の複数のクライアントに送信するという処理のためにネットワークI/Oを利用します。以上のことから、ゲームサーバのワークロードはカジュアルなマルチプレイヤーゲームには汎用インスタンスタイプ、ハードコアなマルチプレイヤーゲームにはコンピューティング最適化インスタンスタイプが適しています。 AWSはコンピューティング最適化(C4およびC5)や汎用(M5)をはじめとした多種多様なインスタンスタイプにおいてスポットインスタンスを提供しています。キャパシティはアベイラビリティゾーン内のインスタンスタイプごとに別々に変動するため、幅広いインスタンスタイプを使用することで同じ価格でより多くのコンピューティング能力を得ることができます。スポットインスタンスのベストプラクティスに関する情報はAmazon EC2 Spot Instancesの開始方法をご覧ください。 専用のゲームサーバを実行するためのソリューションの1つとして、Amazon GameLiftがあります。GameLiftはAWSの各リージョンでAmazon GameLift FleetIQやスポットインスタンスをデプロイします。FleetIQはプレイヤーのレイテンシ、インスタンス料金、そしてスポットインスタンスの中断(※)を気にしなくてもいいように中断レート(Interuption Rate)をベースとして新しいセッションをゲームサーバに振り分けます。より詳細な情報はAWS Game Techブログに掲載されている”Reduce Cost by up to 90% with Amazon GameLift FleetIQ and Spot Instances“をご覧ください。 (※)スポットインスタンスは空きリソースを提供している特性上、インスタンス需要に応じて中断されることがあります。詳しくはスポットインスタンスの中断をご覧ください。 その他のケースとして、マルチプレイヤーゲームサーバの展開にKubernetesやSwarm, Amazon ECSなどのコンテナベースのオーケストレーションによるゲームサーバのデプロイメントパターンを利用することができます。これらのシステムは大量のゲームサーバとしてデプロイされた複数のリージョンにまたがるDockerコンテナを管理します。本ブログの残りのパートではコンテナ化されたゲームサーバソリューションにフォーカスします。コンテナは軽量で、高速に起動し、ベースとなるインスタンスの使用率が向上するという特性があるため、ゲームサーバのワークロードに適しています。 なぜAmazon EC2 スポットインスタンスを利用するのか? スポットインスタンスは、使い捨てのゲームサーバワークロードを実行するための選択肢のひとつです。中断2分前に通知を受け取ることで、中断に備えることができます。インスタンスメタデータとAmazon CloudWatchによる通知処理の例を2つご紹介します。詳しくはこのブログの後半の「中断のハンドリング」および「ゲームサーバを冗長化するためには?」を参照してください。 スポットインスタンスは汎用およびコンピューティング最適化(C4およびC5)などゲームサーバのワークロードに適合するさまざまなEC2インスタンスタイプを提供します。また、スポットインスタンスは低い中断レートを提供します。スポットインスタンスアドバイザーは過去の履歴に基づいて、中断レートの低いインスタンスタイプを選択するのに役立ちます。 中断のハンドリング スポットインスタンスを使用する場合、中断によるプレイヤーへの影響を回避することが重要です。ここでは、GitHub上の”Spotable Game Server“で公開されているリファレンスアーキテクチャとサンプルコードによって、プレイヤー影響を避けるための戦略についてご紹介します。具体的には、Amazon EKSにおける、”kubectl drain”コマンドによるNode Drainageを例として挙げます。これにより、ノードのアンスケジューリング(解除)が可能となり、プレイヤーエクスペリエンスに影響を及ぼす可能性がある終了期間(terminationGracePeriodSeconds)にあるノード上で実行されているpodを削除します。その結果、podは正常に終了するシグナルがゲーム内に送信されている間も可動を続けます。 Node Drainage(ノードのドレイニング) Node […]

Read More

【開催報告】AWS re:Invent 2017 Gaming re:Cap

こんにちは。ソリューションアーキテクトの吉田です。 12/13(水)、Amazonの目黒オフィスでゲーム関係のお客様向けにre:Invent 2017のre:Capイベントを開催しました。直前のご案内にもかかわらず、100名超のお客様にご参加いただき、おかげ様で大盛況のイベントとなりました。   – AWS re:Invent 2017 New Release for Gaming re:Cap – まずはソリューションアーキテクトの畑より、re:Invent期間中に発表されたサービスと機能について解説しました。非常にたくさんのアップデートがあったため簡単な概要レベルのご紹介となりましたが、気になるサービスはぜひブログ記事やAWSドキュメントなどでチェックしてみてください。 Reinvent2017 recap-overview-pdf from Amazon Web Services Japan   – re:Invent 2017 ゲームセッションサマリー(1) – 次に、私吉田からre:Invent初日のGame Industry Dayで行われたブレイクアウトセッションやWorkshop、その他ゲームのお客様にチェックいただきたいセッションの概要についてご紹介しました。各ブレイクアウトセッションのSlideshareやYoutubeのリンクは資料に掲載してますので、ぜひご覧ください。 Reinvent2017 recap-gaming-session-1 from Amazon Web Services Japan   – re:Invent 2017 ゲームセッションサマリー(2) – そして最後に、Amazon Game Servicesの下田より、2つの注目ブレイクアウトセッションとして、”Amazon Game Studiosのゲーム向けのイベントベースのアナリティクス事例”と”Gearbox社のBattlebornでのGameLift導入事例”について取り上げ、海外におけるゲーム開発の現状などにも触れながら詳細を解説しました。 Reinvent2017 recap-gaming-session-2 from Amazon Web Services […]

Read More