applibot presents smartphone game on aws

63
AWS ののののののの のののののののののののののののののの 2014 の 7 の 4 の ののののののののののののののののののの のののののののののののののののの のの のの Applibot presents SmartphoneGame on AWS

Upload: kenta-yasukawa

Post on 30-Jun-2015

549 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Applibot presents Smartphone Game on AWS

AWS の活用で変わるこれからのゲームインフラの構築と運用2014 年 7 月 4 日アマゾンデータサービスジャパン株式会社シニアソリューションアーキテクト安川 健太

Applibot presents SmartphoneGame on AWS

Page 2: Applibot presents Smartphone Game on AWS

自己紹介

安川 健太 (@thenkentiest)• AWS ソリューションアーキテクト• 担当するお客様の範囲

• スタートアップ• ゲーム・ソーシャルサービス• 時々エンタープライズ

略歴• エリクソンリサーチにて M2M や SNS + IoT な感じの技術の研究開発• ユーザとして触った AWS に感銘を受けて AWS ソリューションアーキテク

トに(↑イマココ)

Page 3: Applibot presents Smartphone Game on AWS

洗練されたスケーラブルなアプリケーションの構築を助ける幅広く、深いプラットフォーム

豊富な品揃え

Page 4: Applibot presents Smartphone Game on AWS

30 を超える AWS ビルディングブロックSupport CertificationTrainingProfessional Services

Technology Partners Consulting Partners AWS MarketplaceEcosystemElastic Beanstalk for Java, Node.js, Python, Ruby, PHP and .Net

OpsWorksCloudFormation

Containers & Deployment (PaaS)

Management &AdministrationIAM CloudWatchCloudTrail APIs and SDKsManagement ConsoleCloud HSM Command Line Interface

Direct Connect Route 53VPCNetworking

Analytics

Data PipelineRedshiftEMR Kinesis SWFSNS SQS CloudSearchSES AppStreamCloudFront

Application Services

WorkSpaces

Regions Availability Zones Content Delivery POPs

Storage GatewayS3 EBS Glacier Import/Export DynamoDB ElastiCache

StorageCompute Databases

RDS

MySQL, PostgreSQLOracle, SQL Server

Elastic Load BalancerEC2 Auto Scaling

Page 5: Applibot presents Smartphone Game on AWS

CTO の皆様の悩み

• 毎回なんかある度にこれをやってたら寝れません。。。

ゲーム提供者様のよくあるお悩みインフラ増強に時間がかってユーザ増に間に合わない

サーバを買っても余るようになったらどうしようインフラ担当が 24 時間つきっきりで疲弊してる

ハードウェアや DC 障害への備えとか…わかってるけど…

ほんとはゲームを面白くすることに時間使いたいですよね…?

Page 6: Applibot presents Smartphone Game on AWS

本来やりたかった面白いゲームの開発に集中してほしい

AWS を使って

Page 7: Applibot presents Smartphone Game on AWS

多数のゲーム会社様ご利用実績

「膨大なゲームトラフィックを処理するためのインフラを一人で構築、運用するには、 AWSしか選択肢がありませんでした。」

「 Amazon Redshift がリリースされた時は衝撃的でした。」

「 AWS サポートの迅速さと問題解決能力、費用対効果は非常に高い水準にあると思います。」

最新の事例はこちらから http://www.awsmicrosite.jp/game/

Page 8: Applibot presents Smartphone Game on AWS

30 を超える AWS ビルディングブロックSupport CertificationTrainingProfessional Services

Technology Partners Consulting Partners AWS MarketplaceEcosystemElastic Beanstalk for Java, Node.js, Python, Ruby, PHP and .Net

OpsWorksCloudFormation

Containers & Deployment (PaaS)

Management &AdministrationIAM CloudWatchCloudTrail APIs and SDKsManagement ConsoleCloud HSM Command Line Interface

Direct Connect Route 53VPCNetworking

Analytics

Data PipelineRedshiftEMR Kinesis SWFSNS SQS CloudSearchSES AppStreamCloudFront

Application Services

WorkSpaces

Regions Availability Zones Content Delivery POPs

Storage GatewayS3 EBS Glacier Import/Export DynamoDB ElastiCache

StorageCompute Databases

RDS

MySQL, PostgreSQLOracle, SQL Server

Elastic Load BalancerEC2 Auto Scaling

Page 9: Applibot presents Smartphone Game on AWS

お客様のフィードバックに基づくイノベーション

2007 2008 2009 2010 2011 2012 2013

9 24 48 61 82

159

280新サービス・機能追加の数

Page 10: Applibot presents Smartphone Game on AWS

今日のアジェンダ

• 進化し続けるコンピュートサービス Amazon EC2- 新しいインスタンスタイプ- 新しいディスクオプション- Docker への対応

• パフォーマンスの壁を越えてスケールするために- Amazon ElastiCache のアップデート- Amazon DynamoDB の活用法

• 増え続けるデータの解析もお任せ- Amazon Redshift と Amazon Kinesis でデータ解析

Page 11: Applibot presents Smartphone Game on AWS

進化し続けるコンピュートサービス Amazon EC2

Page 12: Applibot presents Smartphone Game on AWS

多種多様なインスタンスタイプ

GPU一般用途

バランス型メモリ最適化

ストレージと IO最適化

コンピュート最適化

CR1M2CC2C1 HI1 HS1 CG1M1

Page 13: Applibot presents Smartphone Game on AWS

多種多様なインスタンスタイプ

GPU一般用途 メモリ最適化

ストレージと IO最適化

コンピュート最適化

CR1M2CC2C1 HI1 CG1M1

G2M3 R3C3 I2 HS1T2

Page 14: Applibot presents Smartphone Game on AWS

M3 インスタンス - 汎用タイプ

• Intel Xeon E5-2670 (Sandy Bridge)

• SSD のインスタンスストレージ

CPU 性能、メモリー、ネットワークのバランスがとれたタイプ

特徴 モデル vCPU メモリ(GiB)

SSDストレージ(GB)

オンデマンド料金(東京 )

m3.medium 1 3.75 1 x 4 $0.101

m3.large 2 7.5 1 x 32 $0.203

m3.xlarge 4 15 2 x 40 $0.405

m3.2xlarge 8 30 2 x 80 $0.810

Page 15: Applibot presents Smartphone Game on AWS

C3 インスタンス - CPU 最適化

• Intel Xeon E5-2670 v2 (Ivy Bridge)

• SSD インスタンスストレージ• 低レイテンシー、低ジッタ、高い

秒間あたりのパケット性能を持つ拡張されたネットワーク(SR-IOV, VPC のみ )

• クラスタリングサポート

CPU 性能に特化したタイプ。 CPU あたりの料金が最も安い

特徴モデル vCPU メモリ

(GiB)SSDストレージ(GB)

オンデマンド料金(東京 )

c3.large 2 7 2 x 16 $0.128c3.xlarge 4 14 2 x 40 $0.255c3.2xlarge 8 28 2 x 80 $0.511c3.4xlarge 16 55 2 x 160 $1.021c3.8xlarge 32 108 2 x 320 $2.043

Page 16: Applibot presents Smartphone Game on AWS

R3 インスタンス - メモリ最適化

• Intel Xeon E5-2670 v2 (Ivy Bridge)

• SSD インスタンスストレージ

• 低レイテンシー、低ジッタ、高い秒間あたりのパケット性能を持つ拡張されたネットワーク (SR-IOV, VPC のみ )

メモリに特化したタイプ。メモリ GiB あたりの料金が最も安い

特徴モデル vCPU メモリ

(GiB)SSDストレージ(GB)

オンデマンド料金(東京 )

r3.large 2 15 1 x 32 $0.210r3.xlarge 4 30.05 1 x 80 $0.420r3.2xlarge 8 61 1 x 160 $0.840r3.4xlarge 16 122 1 x 320 $1.680r3.8xlarge 32 244 2 x 320 $3.360

Page 17: Applibot presents Smartphone Game on AWS

I2 インスタンス - ストレージ最適化

• Intel Xeon E5-2670 v2 (Ivy Bridge)

• SSD インスタンスストレージ• TRIM サポート• 低レイテンシー、低ジッタ、高い秒

間あたりのパケット性能を持つ拡張されたネットワーク(SR-IOV, VPC のみ )

ストレージに最適化されており、高いランダム I/O 性能、 IOPS を提供i2.8xlarge で秒間 365,000 超のランダムリードと秒間 315,000 超のランダムライト

特徴 モデル vCPU メモリ(GiB)

SSDストレージ(GB)

オンデマンド料金(東京 )

i2.xlarge 4 30.05 1 x 800 $1.051

i2.2xlarge 8 61 2 x 800 $2.101

i2.4xlarge 16 122 4 x 800 $4.202

i2.8xlarge 32 244 8 x 800 $8.404

Page 18: Applibot presents Smartphone Game on AWS

T2 インスタンス – バースト可能汎用タイプ

• Intel Xeon Family• HVM のみ対応

- 安価に HVM を利用できる

- PVM は使えない• 1 分間 CPU を使いきれる

クレジットを 1 時間毎に受け取り

普段はコンピュータパワーをそれほど必要としないが、間欠的に多くのコンピュータリソースが必要となる用途に

特徴 タイプ vCPU メモリ(GiB)

CPUクレジット

オンデマンド料金(東京 )

t2.micro 1 1.0 6 cr/h $0.020

t2.small 1 2.0 12 cr/h $0.040

t2.medium 2 4.0 24 cr/h $0.080

m3.medium(参考)

1 3.75 - $0.101

Page 19: Applibot presents Smartphone Game on AWS

T2 で負荷をかけた際の CPU クレジット使用量と残高

• CloudWatch で確認可能

Page 20: Applibot presents Smartphone Game on AWS

ディスク IO も望みのスペックを指定できます

Page 21: Applibot presents Smartphone Game on AWS

EBS プロビジョンド IOPS

• ディスクの IO 性能 (IOPS) を指定できる• IOPS 値の指定は 100 ~ 4000 で 1 刻みが可能

- (Standard な EBS の IOPS は、約 100 程度 )• 複数ボリュームを組み合わせてさらに高い IO 性能も実現可能

Page 22: Applibot presents Smartphone Game on AWS

EBS 最適化オプション

• EBS 用にネットワーク帯域を最適化• 確保される帯域は、 500Mbps か 1000Mbps (インスタンスタ

イプ

Page 23: Applibot presents Smartphone Game on AWS

新規追加された gp2 (General Purpose SSD) ボリューム

Volume Type General Purpose(SSD) Provisioned IOPS(SSD) Magnetic ( 旧 Standard)

ユースケース • 起動ボリューム• 仮想デスクトップ環境• 開発およびテスト環境• 間欠的に負荷がかかる

データベース

• 高い I/O パフォーマンスを継続的に要求するアプリケーション

• 大規模なデータベースなど

• アクセス頻度の低いデータ

• コストを最重要視する場合

ボリュームサイズ

1GiB から 1TiB まで 10GiB から 1TiB まで 1GiB から 1TiB まで

パフォーマンス ・ベースは 1GiB あたり3IOPS・ 3000IOPS までバースト可能

プロビジョニング次第( 1 ボリュームあたりの上限は 4000IOPS )

平均 100IOPS

数百 IOPS までバースト可

料金(東京リージョン)

• 1GB あたり 1ヶ月$0.12

• 1GB あたり 1ヶ月$0.142

• 1 IOPS あたり 1ヶ月$0.114

• 1GB あたり 1ヶ月$0.08

• 100万 I/O リクエストあたり $0.08

Page 24: Applibot presents Smartphone Game on AWS

gp2 のバースト時のパフォーマンス

• ベースパフォーマンスを超える I/Oが要求されると、一定時間バーストが発生する

• バースト終了後はベースパフォーマンス (1GB あたり 3IOPS )が維持される

• 1TB をプロビジョニングすると常時3000IOPS のパフォーマンスを継続できる(= Provisioned IOPS と同等 )

General Purpose(SSD) ボリュームのパフォーマンス仕様( I/O 負荷継続時、ボリュームサイズ毎)IOPS

Page 25: Applibot presents Smartphone Game on AWS

IOPS と I/O Credit 残高の関係IOPS

I/O Credit残高

初期状態でI/O Credit 残高は

5,400,000

I/O Credit が残っている間はバース

ト。 3000IOPS出る

バースト中は I/O Credit の残高を取り崩す形とな

残高が 0 になるとバーストは終

残高が 0 になるとI/O性能もベースパフォーマンスに戻る

I/O 負荷がベースパフォーマンスを下回ると Credit が貯金される

再び高負荷が発生すると、 I/O Credit の残高に応じてバース

ベースパフォーマンス(gp2 500GB 時 )

Page 26: Applibot presents Smartphone Game on AWS

AWS Elastic Beanstalk for Docker2014/04/24 http://bit.ly/1f8Bd7z

Meets

Amazon Linux AMI 2014.03 から Docker をサポート

Page 27: Applibot presents Smartphone Game on AWS

パフォーマンスの壁を越えてスケールするために

Page 28: Applibot presents Smartphone Game on AWS

Amazon ElastiCache とは

構築• キャッシュクラスタを数クリックで起動• EC2同様、初期費用無し、時間単位の従量課金移行

• 2種類のエンジン (memcached, redis) をサポート• 既存アプリケーションの変更不要

運用• 可用性を向上させる機能• モニタリング、自動障害検出、復旧、拡張、パッチ管理機

能を提供セキュリティ

• セキュリティグループ、 VPC 対応

Page 29: Applibot presents Smartphone Game on AWS

gumi さんでのご利用事例

Case Study http://www.slideshare.net/hommatomonori/elasticache-for-redis

Page 30: Applibot presents Smartphone Game on AWS

アベイラビリティゾーンをまたいだ Replication構成

リードレプリカを複数のアベイラビリティゾーンにデプロイ可能• 同一 AZ のリードレプリカを参照し高速なデータ取得が可能に• プライマリノード側の AZ 障害時のデータ保全が可能に

Availability Zone - a Availability Zone - b

非同期レプリケーション

東京リージョン

SET

GET

SET

GET

App App

Page 31: Applibot presents Smartphone Game on AWS

リードレプリカ昇格

リードレプリカをプライマリに昇格可能昇格は数分が必要

• ダウンが発生するため、クライント側でエラーハンドリングは必要• アプリ修正不要(プライマリの endpoint が変わらない)

① ① unlink

② SYNC

③ DNS change

Page 32: Applibot presents Smartphone Game on AWS

Backup & Restore for ElastiCache Redis

スナップショット• 一日1回自動スナップショット。 S3 にデータを保存• 任意のタイミングで手動スナップショット取得可能• 今までご自身で EC2 Redis経由で行ったバックアップが不要となる

2014/4/24

slaveof

Redis

RDB copy

restore

snapshot

Page 33: Applibot presents Smartphone Game on AWS

Amazon DynamoDB

NoSQL as a Service

超高速・予測可能な一貫したパフォーマンスシームレスなスケーラビリティと低コスト

運用管理必要なし

低レイテンシ、 SSD

プロビジョンスループット

無限に使えるストレージ

ADMIN

Page 34: Applibot presents Smartphone Game on AWS

DynamoDB の知られざる強力な機能

• Conditional Update

• 「キーにマッチするレコードが存在したら / しなかったら」や「この値が○○以上 /以下だったら」という条件付き書き込み /更新ができる

• Attribute への Add操作、 Atomic Counter• Attribute が Number型なら足し算 /引き算、 Set型ならそのセットに

対して値を追加

Page 35: Applibot presents Smartphone Game on AWS

◯☓ ゲームのステート管理

Page 36: Applibot presents Smartphone Game on AWS

◯☓ ゲーム

{ Id : abecd, Players : [ Alice, Bob ], State : STARTED, Turn : Bob, Top-Right : O}

Game Item

Page 37: Applibot presents Smartphone Game on AWS

◯☓ ゲーム

AmazonDynamoDB

Alice Bob

Page 38: Applibot presents Smartphone Game on AWS

◯☓ ゲーム

AmazonDynamoDB

Alice Bob

Update: Top-Left : X Turn : Alice

Page 39: Applibot presents Smartphone Game on AWS

◯☓ ゲーム – 今のままだとチートが可能

Alice Bob (1)

AmazonDynamoDB

Bob (2) Bob (3)

Page 40: Applibot presents Smartphone Game on AWS

◯☓ ゲーム – 今のままだとチートが可能

Bob (1)

AmazonDynamoDB

Bob (2)Bob (3)

Update: Turn : Alice Top-Left : X

Update: Turn : Alice Mid : X

State : STARTED,Turn : Bob,Top-Right : O

Update: Turn : Alice Low-Right : X

Page 41: Applibot presents Smartphone Game on AWS

◯☓ ゲーム – 今のままだとチートが可能

Bob (1)

AmazonDynamoDB

Bob (2)Bob (3)

Update: Turn : Alice Top-Left : X

Update: Turn : Alice Mid : X

State : STARTED,Turn : Alice,Top-Right : O,Top-Left : X,Mid: X,Low-Right: X

Update: Turn : Alice Low-Right : X

Page 42: Applibot presents Smartphone Game on AWS

Conditional Update を使った楽観的ロック

現在の特定の Attribute に特定の値が入っていた場合にのみ更新を実施条件が合わなかったら更新せずに終了(但し、 1 つのアイテムのみで適用可能)

Page 43: Applibot presents Smartphone Game on AWS

修正版 ゲーム◯☓

Bob (1)

Amazon DynamoDB

Bob (2)Bob (3)

Update: Turn : Alice Top-Left : XExpect: Turn : Bob Top-Left : null

State : STARTED, Turn : Bob, Top-Right : O

Update: Turn : Alice Mid : XExpect: Turn : Bob Mid : null

Update: Turn : Alice Low-Right : XExpect: Turn : Bob Low-Right : null

Page 44: Applibot presents Smartphone Game on AWS

修正版 ゲーム◯☓

Bob (1)

AmazonDynamoDB

Bob (2)Bob (3)

State : STARTED, Turn : Bob, Top-Right : O

Update: Turn : Alice Top-Left : XExpect: Turn : Bob Top-Left : null

Update: Turn : Alice Low-Right : XExpect: Turn : Bob Low-Right : null

Update: Turn : Alice Mid : XExpect: Turn : Bob Mid : null

Page 45: Applibot presents Smartphone Game on AWS

修正版 ゲーム◯☓

Bob (1)

AmazonDynamoDB

Bob (2)Bob (3)

State : STARTED, Turn : Alice, Top-Right : O, Top-Left : X

Update: Turn : Alice Top-Left : XExpect: Turn : Bob Top-Left : null

Update: Turn : Alice Mid : XExpect: Turn : Bob Mid : null

Update: Turn : Alice Low-Right : XExpect: Turn : Bob Low-Right : null

Page 46: Applibot presents Smartphone Game on AWS

データの解析も AWS なら簡単には初めて大きくスケール

Page 47: Applibot presents Smartphone Game on AWS

Elastic MapReduce

DynamoDB RedShift

S3

データが S3 にあれば、あとは必要に応じて解析クラスタを起動して利用できる

Page 48: Applibot presents Smartphone Game on AWS

シンプルなログ解析システムの例

各エンド端末でログをファイルに書き出す定期的に S3 に Upload定期的に Redshift に読み込みBIツールを使って Redshift 解析

2014-01-24,nateware,e4df,login2014-01-24,nateware,e4df,gamestart2014-01-24,nateware,e4df,gameend2014-01-25,nateware,a88c,login2014-01-25,nateware,a88c,friendlist2014-01-25,nateware,a88c,gamestart

Page 49: Applibot presents Smartphone Game on AWS

Amazon Redshift

リーダーノード• SQL エンドポイント• メタデータの保存• クエリ実行のコーディネート

コンピュートノード• カラムナ型のストレージ• Amazon S3 を介したデータの

ロード、バックアップ、リストア• Amazon DynamoDB からの並列ロード

シングルノードでも利用可能

10 GigE(HPC)

IngestionBackupRestore

SQL Clients/BI Tools

128GB RAM

16TB disk

16 cores

Amazon S3/DynamoDB

JDBC/ODBC

128GB RAM

16TB disk

16 coresCompute Node

128GB RAM

16TB disk

16 coresCompute Node

128GB RAM

16TB disk

16 coresCompute Node

LeaderNode

Page 50: Applibot presents Smartphone Game on AWS

前のシステムにサーバのログも追加

サーバログも S3 に収集Redshift で読み込んで解析外部解析サービスの利用も可

EC2

外部解析サービス

Page 51: Applibot presents Smartphone Game on AWS

Tableau + Redshift

Page 52: Applibot presents Smartphone Game on AWS

DynamoDB のデータも解析に利用

Game のバックエンドに DynamoDBRedshift に直接読み込み可Redshift でうまくデータを結合 EC2

Page 53: Applibot presents Smartphone Game on AWS

EMR を使ってデータを前処理

EMR でログファイルの ETL 処理EMR で DynamoDB上のデータも前処理

EC2

Page 54: Applibot presents Smartphone Game on AWS

Amazon Kinesis でリアルタイム分析も

Page 55: Applibot presents Smartphone Game on AWS

Amazon Kinesisリアルタイムでビッグデータを取り込むためのサービス

Data Sources

App.4

[Machine Learning]

AWS

Endp

oint

App.1

[Aggregate & De-Duplicate]

Data Sources

Data Sources

Data Sources

App.2

[Metric Extraction]

S3

DynamoDB

Redshift

App.3[Sliding Window

Analysis]

Data Sources

Availability Zone

Shard 1

Shard 2

Shard N

Availability Zone

Availability Zone

Page 56: Applibot presents Smartphone Game on AWS

Kinesis を使ったリアルタイムデータ処理

Kinesis にデータストリームを入力複数の Writer と Reader が共存可もちろんデータの Redshift への読み込みも

EC2

EC2

Page 57: Applibot presents Smartphone Game on AWS

Spark コネクタもあります

EC2

EC2

Page 58: Applibot presents Smartphone Game on AWS

FPS のリアルタイム分析

PUT "kills" {"game_id":"e4b5","map":"Boston","killer":38,"victim":39,"coord":"274,591,48"}

PUT "kills" {"game_id":"e4b5","map":"Boston","killer":13,"victim":27,"coord":"101,206,35"}

PUT "kills" {"game_id":"e4b5","map":"Boston","killer":38,"victim":39,"coord":"165,609,17"}

PUT "kills" {"game_id":"e4b5","map":"Boston","killer":6,"victim":29,"coord":"120,422,26"}

PUT "kills" {"game_id":"30a4","map":"Los Angeles","killer":34,"victim":18,"coord":"163,677,18"}

PUT "kills" {"game_id":"30a4","map":"Los Angeles","killer":20,"victim":37,"coord":"71,473,20"}

PUT "kills" {"game_id":"30a4","map":"Los Angeles","killer":21,"victim":19,"coord":"332,381,17"}

PUT "kills" {"game_id":"30a4","map":"Los Angeles","killer":0,"victim":10,"coord":"14,108,25"}

PUT "kills" {"game_id":"6ebd","map":"Seattle","killer":32,"victim":18,"coord":"13,685,32"}

PUT "kills" {"game_id":"6ebd","map":"Seattle","killer":7,"victim":14,"coord":"16,233,16"}

PUT "kills" {"game_id":"6ebd","map":"Seattle","killer":27,"victim":19,"coord":"16,498,29"}

PUT "kills" {"game_id":"6ebd","map":"Seattle","killer":1,"victim":38,"coord":"138,732,21"}

Page 59: Applibot presents Smartphone Game on AWS

FPS のリアルタイムヒートマップ

Page 60: Applibot presents Smartphone Game on AWS

イベントを解析しながらユーザにアクションを促すシステムの例

AWS

Endp

oint

Kinesis App.1

Kinesis App.2

Redshift

DynamoDB

Kinesis App.3

Availability Zone

Shard 1Shard 2Shard N

Availability Zone

Availability Zone

RDS

Data analyst

BI tool

Page 61: Applibot presents Smartphone Game on AWS

まとめ

進化し続けるコンピュートサービス Amazon EC2• 新しいインスタンスタイプ• 新しいディスクオプション• Docker への対応

パフォーマンスの壁を越えてスケールするために• Amazon ElastiCache のアップデート• Amazon DynamoDB の活用法

増え続けるデータの解析もお任せ• Amazon Redshift と Amazon Kinesis でデータ解析

Page 62: Applibot presents Smartphone Game on AWS

AWS Summit Tokyo 2014

2014 年 7 月 17 日 ( 木 ) ~ 18 日 ( 金 )グランドプリンス新高輪 ( 国際館パミール )来場無料 ( 要事前登録 )http://www.awssummittokyo.com/• 申し込み受付開始通知メール受付開始!

Page 63: Applibot presents Smartphone Game on AWS