[セッションレポート]AWSとAmazon Game Techでゲーム開発と運営の効率向上 #CEDECSAPPORO

2019.10.05

もこ@札幌オフィスです。

本記事はCEDEC+SAPPORO 2019 AWSとAmazon Game Techでゲーム開発と運営の効率向上のセッションレポートです。

セッションレポート

Game Tech: ゲームに使えるAWSサービス

ゲームサーバー

TwitchなどもAmazonグループ

世界最大のゲーム企業がAWSを利用している

日本の中でも非常に多くのゲームに採用されている

ゲームについてのAWSの概要

  • カイゼン

数分でサーバー、データベースを起動

数クリックで利用できる可用性やスケーラビリティの高いマネージドサービス

従量課金、RI

→従量課金、時間課金でユーザー数が多い時はサーバーを多めに、ユーザー数が少ないときはサーバーを少なめにできる

  • イノベーション

ペタバイトクラスのゲームログ分析

リアルタイムプレイなど

165を超えるAWSサービスがあり、各サービスを組み合わせて、容易にこれまで出来なかったことを実現できる

常にサービスアップデートがかかり、成長し続ける、2018年のアップデート数は+1957回!

→95%はユーザーからのフィードバックで出来ている

現在は23リージョンを提供していて、冗長化された100GbEによる高速で安全な専用船ネットワークがある

サーバーはNitro System アーキテクチャ

ゲームで使うのには様々な選択肢があり、従来どおり仮想サーバー、EC2を使う場合もあるし、コンテナを使う場合もあるし、Lambdaでサーバーレスもあり、GameSparks, GameLiftなどなど多数の選択肢がある。

ゲームにおけるAWS利用

EC2

仮想サーバー

多くの種類のEC2インスタンスタイプがある。

I/Oに特化したEC2、Computing特化したEC2

最適なEC2を利用してコスト効率のいいものを利用できる

最新のC5 インスタンスのアップデートも

3.0GHz Intel Xeon Scalable Processors

コスト効率よくEC2を使う購入方法がある

  • オンデマンドインスタンス: スタンダードな一般敵な従量課金
  • リザーブドインスタンス: 1年か3年の利用予約で 25~75%前後の割引
  • スポットインスタンス: 使われていないEC2を入札して最大90%のコストカット
  • Dedicated Host: 物理サーバー

2017年11月〜 スポットインスタンスの価格安定化のアップデートで、より安全にスポットインスタンスを利用できるうように

最低限の負荷はRIでカバー、スケールアウト分をSpot/On Demandインスタンスで利用

コンテナサービス

EKS(Kubernetes)やEC2監理不要のFargateなど

Fargate: サーバーを気にしないでコンテナを起動することが可能

Amazon Aurora

クラウドに最適化されたデータベースサービス

Mysql 5.6, 5.7 PostgreSQL9.6と互換性

3AZ(データセンター)の6本のディスクに書き込み、2本のディスク障害でもRead/Write可能で、3本のディスク障害でもRead可能

64TBまで、自動でDiskを10GB単位でスケールアウトすることが可能

こちらも従量課金

その他にもデータベースサービスが複数あり、

Key/ValueならDynamoDB、Graphならneptuneなど、利用用途にあわせてサービスを使える

ElastiCache

フルマネージドでMemcached / Redidが利用可能。

RDSのキャッシュなどで利用することが可能。

攻撃対策

Ddos対策: WS Shield SQLインジェクションなど: AWS WAF 脆弱性検知: Inspector

Serverless

Lambdaを利用して作成したコードをアップロードすることで、サーバーの監理不要でコードを実行できる。

最大15分の処理が可能。

CDN

Amazon CloudFront 大容量キャパシティーを持つ地理的に分散したサーバー群からコンテンツをキャッシュしたり代理配信をするサービス

187のロケーションでキャッシュして、一番近くのロケーションからコンテンツを返すことが可能。

低レイテンシーで提供ができ、オリジンサーバーの負荷を下げることも可能。

CloudFrontのEventを利用してLambdaを利用することができる

→Lambda@Edge

Lambda@Edge

187の接続ポイントでLambda@Edgeが展開され、一番近くの接続ポイントで処理することも可能。

Lambda@Edge を使ったゲームプレイヤーへのカスタムコンテンツの配信

ユーザーの近いところで処理でき、オリジンの負荷を下げることができ、素早くレスポンスを返すことができる。

Amazon GameLift

簡単高速コスト効率の高いゲームサーバー、マッチメイク機能を提供

GameLift

IDとPortをユーザーに返して、空いているサーバーにマッチさせる機能など

Flex Match: クイックに利用できるフレキシブルなマッチングソリューション

マッチ設定をJSONで設定できる

FleetIQ: Fleet構成にSpotインスタンスを含めてコストを削減でき、安定稼働ができる

Alexsaでゲームと連携することもできる

事例

EpicGames(Fortnite), Nintendo, PlayStation などなど、、多数の事例あり

スポットインスタンス採用率100%などの事例 DeNAのQCTマネジメント IaaS利用のベストプラクティス [AWS Summit Tokyo 2019]

開発パイプラインの開発効率(CI/CD)

クラウドを利用してCI/CD。

開発者は開発ビルドの手間、スケールなどの手間なども削減し、クリエイティブな活動に集中して作品の質を高めることに注力可能となる。

設備投資を抑えつつ、拠点拡大、開発拠点のグローバル展開も容易。

クラウドは欲しい時にボタン1つ押すだけでcomputing環境が手に入り、初期コストも無い。従量課金。 →スケーラビリティ

可用性 →物理的なサーバーのトラブル対応、メンテナンスなどはしなくていい。

最終的なゲームのビルドには数時間かかるプロジェクトが沢山

AWS上のコンピューティングリソースを利用すれば、一時的にコア数が高いサーバーを複数起動し、並列で処理することが可能

クラウドで並列化することで、自由に組み合わせることができる

AWSを利用してテストを並列で処理する。

最近のゲームは買いきりではなく、アップデートができる

アップデートごとにエラーが発生してしまい、数日サービスが止まると損失が出て、サービスを止まることが無いようにしなければならない。

CI/CDを利用してテストを自動化することが重要

ビルドを加速させるために、Scale In/Outをして、1台のインスタンスでビルドが10時間かかる場合、10台のインスタンスで1時間で処理が可能 →時間課金なので、料金は変わらずに時間を稼げる

MonoプロジェクトをIL2CPPを利用して並列でビルドをすると複数スレッドでビルドを高速化することが可能。

感想

AWSを利用してゲーム業界向けに展開することも可能!

AWSの様々なサービスを組み合わせることもでき、従量課金で必要な時に必要な量を数クリック展開できる!

スポットインスタンス/リザーブドインスタンス、などを利用して大幅なコストカットが可能!