Contenu connexe Similaire à Amazon Web Services の本気がみたいか !? スピードと高可用性を両立したゲームインフラの構築と事例 (20) Plus de Amazon Web Services Japan (20) Amazon Web Services の本気がみたいか !? スピードと高可用性を両立したゲームインフラの構築と事例2. AWS Gaming
森 祐孝(もり ゆうこう)
ソリューションアーキテクト
経歴
• メーカー系SIer、電⼦マネー運営(サーバソフト開発)
• 独⽴系SIer
• 情報通信キャリア向けのSIでPL、PM
• コンソール系ゲーム会社(テクニカルディレクター)
• ブラウザソーシャルゲーム、スマートフォン向けソーシャルゲーム
担当
• ソーシャルゲーム、コンソールゲーム系のお客様
• Amazon Lumberyard !(HDR、VR対応しました!)
⾃⼰紹介
6. AWS Gaming
ゲーム配信を世界中のリージョンがから選択可能
13のリージョン
1. ⽶国東部 (バージニア北部)
2. ⽶国⻄部 (北カリフォルニア)
3. ⽶国⻄部 (オレゴン)
4. AWS GovCloud (⽶国)
5. 南⽶ (サンパウロ)
6. 欧州 (アイルランド)
7. 欧州(フランクフルト)
8. アジアパシフィック (シンガポール)
9. アジアパシフィック (東京)
10.アジアパシフィック(シドニー)
11.アジアパシフィック (ソウル)
12.アジアパシフィック (ムンバイ)
13.中国 (北京)
35のアベイラビリティ・ゾーン
59のエッジロケーション
※来年中までにはさらに 4 のリージョン
と 9のアベイラビリティーゾーン予定
7. AWS Gaming
リージョンとAvailability Zone (AZ)
• 各リージョン内に複数の独⽴し
たAZ(データセンター群)が存在
• 各AZは互いに影響を受けないよ
うに、地理的・電源的・ネット
ワーク的に分離するように設計
されている
• AZ間は低レイテンシーの⾼速専
⽤線で接続されている
http://www.slideshare.net/A
mazonWebServices/spot301-
aws-innovation-at-scale-aws-
reinvent-2014
8. AWS Gaming
70を超えるクラウドサービスを提供
AWS Gaming
ENTERPRISE
APPS
DEVELOPMENT & OPERATIONSMOBILE SERVICESAPP SERVICESANALYTICS
Data
Warehousing
Hadoop/
Spark
Streaming Data
Collection
Machine
Learning
Elastic
Search
Virtual
Desktops
Sharing &
Collaboration
Corporate
Email
Backup
Queuing &
Notifications
Workflow
Search
Email
Transcoding
One-click App
Deployment
Identity
Sync
Single Integrated
Console
Push
Notifications
DevOps Resource
Management
Application Lifecycle
Management
Containers
Triggers
Resource
Templates
TECHNICAL &
BUSINESS
SUPPORT
Account
Management
Support
Professional
Services
Training &
Certification
Security
& Pricing
Reports
Partner
Ecosystem
Solutions
Architects
MARKETPLACE
Business
Apps
Business
Intelligence
Databases
DevOps
Tools
NetworkingSecurity Storage
Regions
Availability
Zones
Points of
Presence
INFRASTRUCTURE
CORE SERVICES
Compute
VMs, Auto-scaling,
& Load Balancing
Storage
Object, Blocks,
Archival, Import/Export
Databases
Relational, NoSQL,
Caching, Migration
Networking
VPC, DX, DNS
CDN
Access
Control
Identity
Management
Key
Management
& Storage
Monitoring
& Logs
Assessment
and reporting
Resource &
Usage Auditing
SECURITY & COMPLIANCE
Configuration
Compliance
Web application
firewall
HYBRID
ARCHITECTURE
Data
Backups
Integrated
App
Deployments
Direct
Connect
Identity
Federation
Integrated
Resource
Management
Integrated
Networking
API
Gateway
IoT
Rules
Engine
Device
Shadows
Device
SDKs
Registry
Device
Gateway
Streaming Data
Analysis
Business
Intelligence
Mobile
Analytics
13. AWS Gaming
Region
① HTTP APIを⽤いてログイン
② Game Assetsをダウンロード
③ Game Serverのマッチメイク
④ Serverへ接続
⑤ 離れた仲間と対戦
⑥ ゲームオーバー
オンラインゲームのフロー
EC2
EC2
14. AWS Gaming
Region
① HTTP APIを⽤いてログイン
② Game Assetsをダウンロード
③ Game Serverのマッチメイク
④ Serverへ接続
⑤ 離れた仲間と対戦
⑥ ゲームオーバー
⑦ HTTP APIを使って結果の書き込み
オンラインゲームのフロー
EC2
EC2
17. AWS Gaming
基本的なAWS上でのWEB + DBゲームサーバの構成
ELB
• WEB + DBゲームサーバ
• ユーザログイン
• ロビーサーバ
• スコアーボード
• プレゼントリスト
• 最適なリージョンの選択
• 2つ以上のAZで構築
• アプリ⽤Amazon EC2
• Elastic Load Balancing
• Amazon RDS
• Multi-AZ
EC2 EC2
AWS Region
18. AWS Gaming
「DBはRDS(Multi-AZ)」のメリット
• AWSでチューニング済み
• MySQL / PostgreSQL / Oracle / SQLServer
/ Maria DB / Auroraから選択可能
• ⼀時的なアクセス集中時にスペックを上げて(ス
ケールアップ)対応可能
• ユーザ増にもスペックUPとHD容量増で容易に対応
可能
• ⾃動バックアップ&Point In Time Recovery機能
で、トラブル時も5分前の状態まで戻せる
• 同期の冗⻑化(MultiAZ)オプションで万が⼀に備
える
EC2 EC2
ELB
AZ① AZ②
Web
App
Web
App
20. AWS Gaming
AWSサービス
• 容量無制限のオンラインストレージ
• ⾃動的に複数拠点に保存し、⾼い耐久性を実現
– 99.999999999%の堅牢性
• 静的ウェブサイトとしても利⽤可能
Amazon S3
• CDN(Contents Delivery Network)サービス
• 世界各地のエッジロケーションから⾼速配信
• キャッシュしてオリジンの負荷を軽減
Amazon
CloudFront
23. AWS Gaming
Auto Scalingによる自動拡大/縮小
• Auto Scaling
– EC2を負荷に応じて自動的に拡大/縮小させる仕組み
– オートヒーリング
– 例) CPU使用率が5分以上継続して70%以上だったら2台追加
Auto Scaling Group
ELB
CloudWatch
負荷状況を監視
EC2を追加構築
ELBの振り分けに追加
Web Web Web Web
25. AWS Gaming
ELB
Region
CloudFront
CDN
EC2 EC2EC2 EC2
DBリードが増加!
• Amazon S3 + CloudFront
• Game Assets
• ユーザフォト
• Custom Maps
• Auto Scaling group
• 動的キャパシティ
• ユーザの増加に合わせて
• オートヒーリング
• Amazon ElastiCache
• フルマネージド
• Memcached
• Redis
31. AWS Gaming
Amazon Aurora!
• Amazonがクラウド時代にあ
わせて作ったRDBMS
• MySQL5.6互換
• 最⼤64TBまで⾃動でスケール
• 15台のレプリカ
• ⾼速なクラッシュリカバリ
• ⾼速なフェールオーバ
• ポイントインタイムリカバリ
ELB
Region
EC2
CloudFront
CDN
W RRR
EC2
Aurora Cluster
34. AWS Gaming
Amazon Auroraによるコスト削減効果
性能向上によるDB 統合でノード削減も期待できる
Grani様の場合、DB統合も⾏い 年間 2,200万円超 のコスト削減効果
RDS (db.r3.4xlarge / gp2 /
OnDemand)
Hourly Daily Yearly
RDS for MySQL(MultiAZ + 1
ReadReplica)
$4.54 + $2.27 =
$6.81
$163.44 $59,655.60
Aurora (+ 1 Replica) $2.8 * 2 = $5.6 $134.40 $49,056.00
削減効果 ▲$1.21 ▲$29.04 ▲$10599.6
39. AWS Gaming
VPC Subnet
Availability Zone A Availability Zone B
VPC Subnet
Auto Scaling group
WEB WEB
VPC Subnet
JOBS
Server manager table
Amazon GameLift
CodeDeploy
Amazon
Gamelift
Game
Binary
バックエンドに関する経験は不要 !
41. AWS Gaming
Amazon GameLift
• セッションベースマルチプレイヤーゲーム
サーバのためのマネージド・サービス
• 設定したプレイヤーセッションによってイン
スタンスを⾃動でスケールアップ、ダウン
• 世界中のユーザへLow-latencyプレイヤ体験
を提供
• ダウンタイム無しでライブアップデート
• ゲームのDAU単位による料⾦体系
45. AWS Gaming
クラウドネイティブな
ゲームアーキテクチャ
Availability
Zone A
Availability
Zone B
S3
• APIゲームサーバ
• User Login
• Game List
• ランキングボード
• Challenges
• Lambdaファンクション
からAWSサービスを操作
• 認証にはCognitoを
利⽤
• EC2を利⽤した別システ
ムへのアクセスも可能
CloudFront
CDN
S3
AWS Region
API Gateway
Lambda
DynamoDB
Cognito
EC2
• インフラ構築
• インフラの運⽤管理
– キャパシティ
– スケール
– デプロイ
– 耐障害性
– モニタリング
– ロギング
– セキュリティパッチの適⽤
• ビジネスの差別化には直接繋がらない機能のアプリ実装
– 認証
– スロットリング
– スケーラビリティの確保
解決される課題
ゲーム制作で
本当に必要な
作業?
47. AWS Gaming
AWSサーバレスサービス (1/2)
• イベントをトリガーにコードを実⾏するコン
ピュートサービス
• コードを書いてアップロードするだけで使える、
フルマネージドなランタイム
• スケールからログまで全てマネージドで、時間課
⾦も100ms単位なのでコスト最適化しやすい
AWS Lambda
• フルマネージドでREST APIの作成・管理が可能
• バックエンドにLambdaやHTTPエンドポイントが
利⽤可能
• スロットリングやキャッシュ、ステージや認証も
Amazon
API Gateway
48. AWS Gaming
AWSサーバレスサービス (2/2)
• フルマネージドでスケールし、⾼い安定性を持っ
たNoSQLのKey-Valueデータベース
• レコードを分散保持し、3拠点複製により⾼耐久性
• AWS SDK等で簡単にDB操作が可能
Amazon
DynamoDB
• ユーザの認証・認可の基盤となるサービス
• 各種認証プロバイダと連携、ゲスト権限も可能
• 認証プロバイダとしての機能や、デバイス間の
データ共有機能も備える
Amazon
Cognito
52. AWS Gaming
API Gateway( /games GET - ゲームリスト取得)
DynamoDB Table
“games”
Lambda Function
“getGames”
API GW
/games GET
Response
Request
54. AWS Gaming
クラウドネイティブな
ゲームアーキテクチャ
Availability
Zone A
Availability
Zone B
S3
• APIゲームサーバ
• User Login
• Game List
• ランキングボード
• Challenges
• Lambdaファンクション
からAWSサービスを操作
• 認証にはCognitoを
利⽤
• EC2を利⽤した別システ
ムへのアクセスも可能
CloudFront
CDN
S3
AWS Region
API Gateway
Lambda
DynamoDB
Cognito
EC2
• インフラ構築
• インフラの運⽤管理
– キャパシティ
– スケール
– デプロイ
– 耐障害性
– モニタリング
– ロギング
– セキュリティパッチの適⽤
• ビジネスの差別化には直接繋がらない機能のアプリ実装
– 認証
– スロットリング
– スケーラビリティの確保
解決される課題
55. AWS Gaming
クラウドネイティブな
ゲームアーキテクチャ
Availability
Zone A
Availability
Zone B
S3
• APIゲームサーバ
• User Login
• Game List
• ランキングボード
• Challenges
• Lambdaファンクション
からAWSサービスを操作
• 認証にはCognitoを
利⽤
• EC2を利⽤した別システ
ムへのアクセスも可能
CloudFront
CDN
S3
AWS Region
API Gateway
Lambda
DynamoDB
Cognito
EC2
• インフラ構築
• インフラの運⽤管理
– キャパシティ
– スケール
– デプロイ
– 耐障害性
– モニタリング
– ロギング
– セキュリティパッチの適⽤
• ビジネスの差別化には直接繋がらない機能のアプリ実装
– 認証
– スロットリング
– スケーラビリティの確保
解決される課題
不要
56. AWS Gaming
クラウドネイティブな
ゲームアーキテクチャ
Availability
Zone A
Availability
Zone B
S3
• APIゲームサーバ
• User Login
• Game List
• ランキングボード
• Challenges
• Lambdaファンクション
からAWSサービスを操作
• 認証にはCognitoを
利⽤
• EC2を利⽤した別システ
ムへのアクセスも可能
CloudFront
CDN
S3
AWS Region
API Gateway
Lambda
DynamoDB
Cognito
EC2
• インフラ構築
• インフラの運⽤管理
– キャパシティ
– スケール
– デプロイ
– 耐障害性
– モニタリング
– ロギング
– セキュリティパッチの適⽤
• ビジネスの差別化には直接繋がらない機能のアプリ実装
– 認証
– スロットリング
– スケーラビリティの確保
解決される課題
⾯⽩いゲーム
開発に集中!
58. AWS Gaming
各アーキテクチャーでのメリット/デメリット
アーキテクト メリット デメリット
従来のゲーム
サーバアーキテクチャ
クライアント側は従来のノウハウをフ
ルに活かせる
実績が多く枯れた構成である
カスタマイズ性が⾼い
サーバのスペック、台数などインフ
ラを意識して設計する必要がある
サーバの運⽤は利⽤者に任されてい
る
Serverless
ゲームアーキテクチャ
(API Gateway)
クライアント側の実装は従来とあまり
変わらずノウハウを活かせる
サーバの運⽤、スケールはAWSに⼀任
CognitoによるセキュアなAPIアクセ
ス制御が可能
コスト効率が⾼い
新規性が⾼く、まだ枯れていない
Serverless
ゲームアーキテクチャ
(2-Tier Architecture)
インフラ運⽤、スケール管理は不要
CognitoによるセキュアなAPIアクセ
ス制御が可能
Web APIの設計が不要
最⼩限のパーツを組合せ
コストメリットが⾼い
新規性が⾼く、まだ枯れていない
クライアントサイドが各AWSリ
ソースに依存する
62. AWS Gaming
DynamoDB Streams + Lambdaを使った
値チェックや別テーブルへのコピー
• DynamoDB テーブル内の項目レベルの変更の時系列にキャプチャー
• DynamoDBへの書き込みに応じて値チェックをし、別テーブルの更新や
プッシュ通知を実行
• データチェックによってチート判定などにも利用可能
AWS Lambda
Amazon DynamoDB
Table and Streams
プッシュ通知
別テーブルを更新
Amazon ElastiCache
キャッシュの更新
65. AWS Gaming
MQTT
MQTT vs HTTPS:
• スループットが93倍あがる
• メッセージ送信において1/12の消費電⼒
• メッセージ受信において1/180の消費電⼒
• コネクション維持において1/2の消費電⼒
• ネットワークオーバーヘッドの8倍削減
Source: http://stephendnicholas.com/archives/1217
• M2M/IoTで利⽤されるコミュニケー
ションプロトコル
• OASIS スタンダードプロトコル
(v3.1.1)
• ライトウェイト
• Pub-Sub メッセージ交換モデル
• リソースや回線帯域が限られているデ
バイスで利⽤
• Facebook Messengerでも利⽤!
67. AWS Gaming
MQTTトピック – ワイルドカード “#” ”+“
Hello! Hello!
Hello!
X:11
Y:22
X:11
Y:22
X:11
Y:22
user1
user2 ワイルドカードを使って
必要なデータのみ
Subscribe
68. AWS Gaming
AWS IoT 全体構成
デバイス SDK
接続、認証、メッセージ交換
を⾏なうための
クライアントライブラリ
デバイスゲートウェイ
MQTT over WebSockets ,MQTTと
HTTPを利⽤した
デバイスとのコミュニケーション
認証と認可
セキュアな双⽅向の
認証と認可
ルールエンジン
ルールベースの
メッセージ変換と
AWSサービスや
外部エンドポイント
へのルーティング
AWSサービス
- - - - -
その他のサービス
デバイスシャドウ
デバイスステータスの永続化
アプリケーション
AWS
IoT API
デバイスレジストリ
デバイスのアイデンティティ
とマネージメント
69. AWS Gaming
AWS IoT AWSサービス
ルールエンジンは、受け取ったメッ
セージを評価し、適切に変換とエ
ンドポイントへの配信をルールに
従って実行
外部のエンドポイントは、Lambda
かSNSを使って呼び出す
Lambda functionの呼び出し
S3 bucketへのデータ格納
DynamoDBテーブルへの挿入、
更新と読み出し
SNS Topicまたは、Endpointに対
するパブリッシュ
Kinesis streamへのパブリッシュ
アクション
Amazon Firehoseへのパブリッシュ
AWS IoTへのリパブリッシュ
81. AWS Gaming
• Kinesis Streamを使ってストリーム
データを処理
– ⽣成されるデータをリアルタイムに近い
状況でデータ処理部に伝送
– ⽬的に応じた処理を並列処理が可能
• 書き込み、読み込みを並列に実行
• 出力結果をRedshiftに!
必要なデータはいち早く処理!
EC2
Kinesis Stream Redshift
82. AWS Gaming
• Spark on EMRへストリーム処理
• Kinesis Spout を介してStormへ
• EC2 カスタムWorkersを実⾏
更に多くの入出力データを扱う!
EC2
EC2
84. AWS Gaming
Amazon S3
Amazon Kinesis
Amazon DynamoDB
Amazon RDS (Aurora)
AWS Lambda
KCL Apps
Amazon
EMR
Amazon
Redshift
Amazon Machine
Learning
収集 処理 分析
保存
データ収集と
保存
データ処理イベント処理 データ分析
データ 答え
AWS上でのデータ分析基盤
87. AWS Gaming
AWS Summit Tokyo 2016 「Fate/Grand Orderにおける、ディライトワークス流 AWS 導入&活用術」より
https://speakerdeck.com/isoparametric/grand-orderniokeru-deiraitowakusuliu-aws-dao-ru-and-huo-yong-shu
AWS 導⼊事例:ディライトワークス株式会社
91. AWS Gaming
AWS Black Belt Online Seminarのご案内
AWSJ の Tech メンバーがAWSに関する様々な事を
日本語で紹介・解説する無料のオンラインセミナー
AWSについてもっと勉強したい方にオススメ!
AWS イベント 検索