Applibot presents Smartphone Game on AWS
-
Upload
kenta-yasukawa -
Category
Technology
-
view
548 -
download
4
Transcript of Applibot presents Smartphone Game on AWS
AWS の活用で変わるこれからのゲームインフラの構築と運用2014 年 7 月 4 日アマゾンデータサービスジャパン株式会社シニアソリューションアーキテクト安川 健太
Applibot presents SmartphoneGame on AWS
自己紹介
安川 健太 (@thenkentiest)• AWS ソリューションアーキテクト• 担当するお客様の範囲
• スタートアップ• ゲーム・ソーシャルサービス• 時々エンタープライズ
略歴• エリクソンリサーチにて M2M や SNS + IoT な感じの技術の研究開発• ユーザとして触った AWS に感銘を受けて 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
CTO の皆様の悩み
• 毎回なんかある度にこれをやってたら寝れません。。。
ゲーム提供者様のよくあるお悩みインフラ増強に時間がかってユーザ増に間に合わない
サーバを買っても余るようになったらどうしようインフラ担当が 24 時間つきっきりで疲弊してる
ハードウェアや DC 障害への備えとか…わかってるけど…
ほんとはゲームを面白くすることに時間使いたいですよね…?
本来やりたかった面白いゲームの開発に集中してほしい
AWS を使って
多数のゲーム会社様ご利用実績
「膨大なゲームトラフィックを処理するためのインフラを一人で構築、運用するには、 AWSしか選択肢がありませんでした。」
「 Amazon Redshift がリリースされた時は衝撃的でした。」
「 AWS サポートの迅速さと問題解決能力、費用対効果は非常に高い水準にあると思います。」
最新の事例はこちらから http://www.awsmicrosite.jp/game/
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
お客様のフィードバックに基づくイノベーション
2007 2008 2009 2010 2011 2012 2013
9 24 48 61 82
159
280新サービス・機能追加の数
今日のアジェンダ
• 進化し続けるコンピュートサービス Amazon EC2- 新しいインスタンスタイプ- 新しいディスクオプション- Docker への対応
• パフォーマンスの壁を越えてスケールするために- Amazon ElastiCache のアップデート- Amazon DynamoDB の活用法
• 増え続けるデータの解析もお任せ- Amazon Redshift と Amazon Kinesis でデータ解析
進化し続けるコンピュートサービス Amazon EC2
多種多様なインスタンスタイプ
GPU一般用途
バランス型メモリ最適化
ストレージと IO最適化
コンピュート最適化
CR1M2CC2C1 HI1 HS1 CG1M1
多種多様なインスタンスタイプ
GPU一般用途 メモリ最適化
ストレージと IO最適化
コンピュート最適化
CR1M2CC2C1 HI1 CG1M1
G2M3 R3C3 I2 HS1T2
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
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
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
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
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
T2 で負荷をかけた際の CPU クレジット使用量と残高
• CloudWatch で確認可能
ディスク IO も望みのスペックを指定できます
EBS プロビジョンド IOPS
• ディスクの IO 性能 (IOPS) を指定できる• IOPS 値の指定は 100 ~ 4000 で 1 刻みが可能
- (Standard な EBS の IOPS は、約 100 程度 )• 複数ボリュームを組み合わせてさらに高い IO 性能も実現可能
EBS 最適化オプション
• EBS 用にネットワーク帯域を最適化• 確保される帯域は、 500Mbps か 1000Mbps (インスタンスタ
イプ
新規追加された 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
gp2 のバースト時のパフォーマンス
• ベースパフォーマンスを超える I/Oが要求されると、一定時間バーストが発生する
• バースト終了後はベースパフォーマンス (1GB あたり 3IOPS )が維持される
• 1TB をプロビジョニングすると常時3000IOPS のパフォーマンスを継続できる(= Provisioned IOPS と同等 )
General Purpose(SSD) ボリュームのパフォーマンス仕様( I/O 負荷継続時、ボリュームサイズ毎)IOPS
分
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 時 )
AWS Elastic Beanstalk for Docker2014/04/24 http://bit.ly/1f8Bd7z
Meets
Amazon Linux AMI 2014.03 から Docker をサポート
パフォーマンスの壁を越えてスケールするために
Amazon ElastiCache とは
構築• キャッシュクラスタを数クリックで起動• EC2同様、初期費用無し、時間単位の従量課金移行
• 2種類のエンジン (memcached, redis) をサポート• 既存アプリケーションの変更不要
運用• 可用性を向上させる機能• モニタリング、自動障害検出、復旧、拡張、パッチ管理機
能を提供セキュリティ
• セキュリティグループ、 VPC 対応
gumi さんでのご利用事例
Case Study http://www.slideshare.net/hommatomonori/elasticache-for-redis
アベイラビリティゾーンをまたいだ Replication構成
リードレプリカを複数のアベイラビリティゾーンにデプロイ可能• 同一 AZ のリードレプリカを参照し高速なデータ取得が可能に• プライマリノード側の AZ 障害時のデータ保全が可能に
Availability Zone - a Availability Zone - b
非同期レプリケーション
東京リージョン
SET
GET
SET
GET
App App
リードレプリカ昇格
リードレプリカをプライマリに昇格可能昇格は数分が必要
• ダウンが発生するため、クライント側でエラーハンドリングは必要• アプリ修正不要(プライマリの endpoint が変わらない)
① ① unlink
② SYNC
③ DNS change
Backup & Restore for ElastiCache Redis
スナップショット• 一日1回自動スナップショット。 S3 にデータを保存• 任意のタイミングで手動スナップショット取得可能• 今までご自身で EC2 Redis経由で行ったバックアップが不要となる
2014/4/24
slaveof
Redis
RDB copy
restore
snapshot
Amazon DynamoDB
NoSQL as a Service
超高速・予測可能な一貫したパフォーマンスシームレスなスケーラビリティと低コスト
運用管理必要なし
低レイテンシ、 SSD
プロビジョンスループット
無限に使えるストレージ
ADMIN
DynamoDB の知られざる強力な機能
• Conditional Update
• 「キーにマッチするレコードが存在したら / しなかったら」や「この値が○○以上 /以下だったら」という条件付き書き込み /更新ができる
• Attribute への Add操作、 Atomic Counter• Attribute が Number型なら足し算 /引き算、 Set型ならそのセットに
対して値を追加
◯☓ ゲームのステート管理
◯☓ ゲーム
{ Id : abecd, Players : [ Alice, Bob ], State : STARTED, Turn : Bob, Top-Right : O}
Game Item
◯☓ ゲーム
AmazonDynamoDB
Alice Bob
◯☓ ゲーム
AmazonDynamoDB
Alice Bob
Update: Top-Left : X Turn : Alice
◯☓ ゲーム – 今のままだとチートが可能
Alice Bob (1)
AmazonDynamoDB
Bob (2) Bob (3)
◯☓ ゲーム – 今のままだとチートが可能
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
◯☓ ゲーム – 今のままだとチートが可能
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
Conditional Update を使った楽観的ロック
現在の特定の Attribute に特定の値が入っていた場合にのみ更新を実施条件が合わなかったら更新せずに終了(但し、 1 つのアイテムのみで適用可能)
修正版 ゲーム◯☓
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
修正版 ゲーム◯☓
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
修正版 ゲーム◯☓
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
データの解析も AWS なら簡単には初めて大きくスケール
Elastic MapReduce
DynamoDB RedShift
S3
データが S3 にあれば、あとは必要に応じて解析クラスタを起動して利用できる
シンプルなログ解析システムの例
各エンド端末でログをファイルに書き出す定期的に 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
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
前のシステムにサーバのログも追加
サーバログも S3 に収集Redshift で読み込んで解析外部解析サービスの利用も可
EC2
外部解析サービス
Tableau + Redshift
DynamoDB のデータも解析に利用
Game のバックエンドに DynamoDBRedshift に直接読み込み可Redshift でうまくデータを結合 EC2
EMR を使ってデータを前処理
EMR でログファイルの ETL 処理EMR で DynamoDB上のデータも前処理
EC2
Amazon Kinesis でリアルタイム分析も
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
Kinesis を使ったリアルタイムデータ処理
Kinesis にデータストリームを入力複数の Writer と Reader が共存可もちろんデータの Redshift への読み込みも
EC2
EC2
Spark コネクタもあります
EC2
EC2
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"}
FPS のリアルタイムヒートマップ
イベントを解析しながらユーザにアクションを促すシステムの例
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
まとめ
進化し続けるコンピュートサービス Amazon EC2• 新しいインスタンスタイプ• 新しいディスクオプション• Docker への対応
パフォーマンスの壁を越えてスケールするために• Amazon ElastiCache のアップデート• Amazon DynamoDB の活用法
増え続けるデータの解析もお任せ• Amazon Redshift と Amazon Kinesis でデータ解析
AWS Summit Tokyo 2014
2014 年 7 月 17 日 ( 木 ) ~ 18 日 ( 金 )グランドプリンス新高輪 ( 国際館パミール )来場無料 ( 要事前登録 )http://www.awssummittokyo.com/• 申し込み受付開始通知メール受付開始!