ゲームプラットフォーム on AWS
Amazon Data Services Japan
2013.09.27
クラウドコンピューティングとは?
スケールアップ、ダウンが容易
初期投資が不要 実際の使用分 のみ支払い
セルフサービスなインフラ
ビジネススピードの改善
低額な利用価格
Deploy
Nu
mb
er
of
EC
2 In
sta
nces
4/12/2008 4/14/2008 4/15/2008 4/16/2008 4/18/2008 4/19/2008 4/20/2008 4/17/2008 4/13/2008
3日間で40から5,000サーバへ
ピーク時にEC2が5,000 インスタンスにスケール
Facebookで アプリを公開
40インスタンス以下でサービスを開始
アップロードした写真、動画、音楽をもとに、 ビデオクリップをオンラインで作成できるサービス
Deploy
AWSサービス一覧 お客様のアプリケーション
認証 AWS IAM
モニタリング Amazon
CloudWatch
Web管理画面 Management
Console
デプロイと自動化 AWS Elastic Beanstalk AWS Cloud Formation
AWS OpsWorks
IDEプラグイン Eclipse
Visual Studio
ライブラリ & SDKs Java, PHP, .NET, Python, Ruby,
node.js
Development &
Administration
AWS グローバルインフラ Geographical Regions, Availability Zones, Points of Presence AZ Region
ネットワーク & ルーティング Amazon VPC / Amazon Elastic Load Balancer / Amazon Route 53 /AWS Direct Connect
Infrastructure
Service
コンピュータ処理 Amazon EC2
Auto Scale
ストレージ Amazon S3 Amazon EBS
Amazon Glacier AWS StorageGateway
データベース Amazon RDS
Amazon DynamoDB Amazon ElastiCache
Amazon Redshift
コンテンツ配信 Amazon CloudFront
メッセージ Amazon SNS Amazon SQS Amazon SES
分散処理 Elastic MapReduce
検索エンジン Amazon Cloud Search
トランスコード Amazon Elastic Transcoder
ワークフロー管理 Amazon SWF
Application
Service
5 5
CTOの皆様の悩み
• 毎回なんかある度にこれをやってたら寝れません。。。
ゲーム提供者様のよくあるお悩み
インフラ増強に時間がかってユーザ増に間に合わない
サーバを買っても余るようになったらどうしよう
インフラ担当が24時間つきっきりで疲弊してる
ハードウェアやDC障害への備えとか…わかってるけど…
6
そんな悩みは捨てて、ビジネスを加速させられます
AWSを使えば
7
多数のゲーム会社様ご利用実績
「膨大なゲームトラフィックを処理するためのインフラを一人で構築、運用するには、AWSしか選択肢がありませんでした。」
「Amazon Redshiftがリリースされた時は衝撃的でした。」
「AWSサポートの迅速さと問題解
決能力、費用対効果は非常に高い水準にあると思います。」
最新の事例はこちらから http://www.awsmicrosite.jp/game/
8
AWS主要サービス
9 9
Amazon EC2(Elastic Compute Cloud)
• 数分で起動し、1時間ごとの従量課金で利用可能な仮想サーバ
• スケールアップ/ダウン、アウト/インが即座に可能
• x86系のOSをサポートし、自由にソフトウェアインストール、セットアップが可能
1 任意のゾーンに 分散配置可能
リージョン
EC2
アベイラビリティゾーンB アベイラビリティゾーンA
10 10
EC2のオートスケール機能
• 負荷に応じてEC2の台数の自動増減が可能
– ピーク対応が楽に! CPU負荷が80%が5分間続いたらサーバを1台増やす
CPU負荷が30%が15分間続いたらサーバを1台減らす
• オートスケールする方法は...
– ポリシーによる突発的なピークアクセス時
– 時間指定による事前自動制御
事前に取得したシステムイメージから新規サーバを起動
AutoScaling
11 11
Elastic Load Balancing(ELB)
• 従量課金でご利用いただけるロードバランサー
• アベイラビリティゾーンをまたいだロードバランシング
• オートスケール機能と合わせて利用可能
AZ-b
アベイラビリティゾーンA
APP Web DB
APP Web DB
アベイラビリティゾーンB DCレベルでの冗長性
12 12
Amazon RDS(Relational Database Service)
• マネージドRDBMSサービス
• バックアップやフェイルオーバーに対応したDBを数クリックで利用可能
• サポートRDBMS
自動 バックアップ
RDS
アベイラビリティゾーンA アベイラビリティゾーンB
自動フェイル オーバ
パッチ更新
13 13
Virtual Private Cloud
• クラウド内に、専用のネットワークを構築
• 既存の設備を活かしたハイブリッドクラウド環境が構築可能
プライベート サブネット
VPC Subnet
パブリック サブネット
VPC Subnet
InternetGW
オンプレミス
専用NW領域
Internet
専用線
InternetVPN VPN GW
Region
ハイブリッドクラウド
14 14
Amazon Redshift
• フルマネージドData Warehouse as a Service
– カラムナ型の超並列演算を特徴とするクラスタをサービスとして提供
– 従量課金で始められる数TB ~数PB まで拡張可能
– インスタンスの従量課金(初期費用、ライセンス費用不要)
BIツール
リーダー ノード
コンピュートノード
コンピュートノード
コンピュートノード
JDBC/ODBC
10GigE Mesh
SQL エンドポイント: • クエリーの並列化 • 結果を生成
クエリー実行ノード • “N” スケールア
ウトを実現 • ローカルディス
ク
S3, DynamoDB, EMRとの統合
15
AWS活用方法
16 16
スケールに応じて構成を拡張・再利用
DNS Amazon Route53
Webサーバ Amazon EC2
Single AZ Single AZ
DNS Amazon Route53
Webサーバ Amazon EC2
ロードバランサー Amazon ELB
DBサーバ Amazon RDS
Multi Tier構成
17 17
AMIを用いたインスタンス複製
AMIはインスタンス作成に使用するイメージテンプレートです。
• AWSやサードパーティもAMIを提供 – https://aws.amazon.com/amis/
– https://aws.amazon.com/marketplace/
• 自由にAMI (カスタムAMI)を作成・利用可能
• カスタムAMIからEC2インスタンスを何台でも起動できる
• 作成したAMIは他者と共有可能
Instance
Amazon Simple
Storage Service
(S3)
Amazon Linux AMI
Availability Zone Availability Zone
Custom AMI
標準AMIから起動したインスタンスをカスタ
マイズ
カスタムAMIを使って、インスタンスを複数台起動
18 18
スケールに応じて構成を拡張・再利用
DNS Amazon Route53
ロードバランサー Amazon ELB
DBサーバ Amazon RDS
自動レプリケーション リードレプリカ Amazon RDS
Multi AZ
マルチAZ(スタンバイ) Amazon RDS
Webサーバ Amazon EC2
キャッシュサーバ AmazonElastiCache
CDN Amazon CloudFront
19 19
スケールに応じて構成を拡張・再利用
Deployment AWS CloudFormation
Template
構成のテンプレート化
テンプレートから構成を複製
20 20
グローバルデプロイメント
US East Region
Sao Paulo Region
EU Region
Sydney Region
Tokyo Region
DNS Amazon Route53 Latency Base Routing
ユーザ
ユーザ
ユーザ ユーザ
ユーザ
CDN Amazon CloudFront Global Caching Edge
21
ゲームプラットフォームにおける 各種AWSサービスの活用
22 22
AWSサービス一覧 お客様のアプリケーション
認証 AWS IAM
モニタリング Amazon
CloudWatch
Web管理画面 Management
Console
デプロイと自動化 AWS Elastic Beanstalk AWS Cloud Formation
AWS OpsWorks
IDEプラグイン Eclipse
Visual Studio
ライブラリ & SDKs Java, PHP, .NET, Python, Ruby,
node.js
Development & Administration
AWS グローバルインフラ Geographical Regions, Availability Zones, Points of Presence AZ Region
ネットワーク & ルーティング Amazon VPC / Amazon Elastic Load Balancer / Amazon Route 53 /AWS Direct Connect
Infrastructure Service
コンピュータ処理 Amazon EC2
Auto Scale
ストレージ Amazon S3 Amazon EBS
Amazon Glacier AWS StorageGateway
データベース Amazon RDS
Amazon DynamoDB Amazon ElastiCache
Amazon Redshift
コンテンツ配信 Amazon CloudFront
メッセージ Amazon SNS Amazon SQS Amazon SES
分散処理 Elastic MapReduce
検索エンジン Amazon Cloud Search
トランスコード Amazon Elastic Transcoder
ワークフロー管理 Amazon SWF
Application Service
23 23
S3による静的コンテンツ配信
• ゲームで使用するデータ(画像、アイコン、動画、ステージデータ)やパッチなど、静的コンテンツをすべてS3でホスティング
• EC2はAPIコールやゲームロジック、動的に生成されるHTMLだけで使用
動的/静的混在配信 Webサイト
動的ページ 静的ファイル
役割分担による 負荷分散
Internet
24 24
Amazon S3の特徴
• 堅牢性・可用性
– 地理的に離れた3箇所以上のDCに冗長に保持
– データロストに対して自動発見・修復
– 99.999999999%の堅牢性(低冗長化オプション:99.99%)
– 99.99%の可用性
– 2つのDCで同時にデータロストが発生しても耐えられる設計
• Webサイト機能
– 静的なWebサイトのホスティングをS3で
– ファイルをS3に保存して、Website機能をONにするだけ
25 25
Q4 2006 Q4 2007 Q4 2008 Q4 2009 Q4 2010 Q4 2011 Q4 2012 1Q 2013
Amazon S3全体の成長率
29億 140億 400億 1,020億
2,620億
7,620億
20%DOWN 20%DOWN
13%DOWN
5%DOWN
28%DOWN
S3の価格推移
1.3兆
26 26
2.キャッシュコンテンツをユーザに送信
Contents Delivery Network
• ユーザからのアクセスを、最も近いエッジサーバに誘導することで、ユーザのアクセサビリティを向上
• エッジサーバでは、コンテンツのキャッシングを行い、オリジンに負荷をかけず、効率的に配信
クライアント オリジン配信サーバ
Amazon Cloud Front
(Edge Location)
1.最適なエッジに リクエスト
3.エッジにキャッシュがなければオリジンにリクエスト
5.キャッシュコンテンツをユーザに送信
4.エッジにコンテンツ を送信
キャッシュ コンテンツ
レスポンス向上 負荷軽減
27 27
Cloud Frontの動作
• 最適エッジへの誘導
クライアント Cloud Front DNS
地理情報
cloudfront.net DNS
Cloud Front Edge
Cloud Front Edge
Cloud Front Edge
DNS Resolver ① CFの名前解決 xxx.cloudftont.net
② IPアドレス問合せ
③ 最適なEdgeアドレスの応答
④ 最適なEdgeに アクセス
オリジン配信サーバ
⑤ キャッシュが無ければオリジンから取得
28
Elastic Load
Balancing
Amazon CloudFront
www.mysite.com
CloudFrontとS3によるコンテンツ配信
28
Dynamic Content
Amazon EC2
Static Content
Amazon S3
Your Users
ユーザはまず CloudFront へ 最低レイテンシへの誘導 TCP最適化 永続化コネクション
CloudFront から Origin 10オリジンまでパターン指定で振分け
各オリジンへは永続化コネクション キャッシュ生存時間も設定可能
29 29
ログもS3に集約
web server
web server
web server
Amazon Elastic Map Reduce
データがS3にあれば、各種解析サービスとの連携は容易
Amazon Redshift
行動履歴の解析や、各種KPIの算出もAWSの解析サービスなら運用コストをかけずに高速に実現可能
DynamoDB
Amazon S3
30
さらなる大規模トラフィックに耐えるには
一般的なScaling 方法
EC2(APサーバ、memcached)のスケールアウト RDSのスペックを上げる(スケールアップ) RDSのRead Replica (MySQL Slave)を追加
App サーバ
Cache サーバ
App サーバ App サーバ
ELB
m1.large
メモリ 7.5GB CPU 4ECU
m2.4xlarge
メモリ 68GB CPU 26ECU
DBのI/O(write)がボトルネックでスケールしない
システム全体のスループット・レイテンシに影響
UX的, サービス的、ビジネス的にもインパクト甚大
DBのスケールアップ(CPU/メモリ) では効果は限定的
アプリケーション、DBのチューニングでも限界がある
DB単体の限界を超えて増え続けるデータ
それでもScale出来ないケース
Heavy Write I/O, Growing Data
AWS の完全マネージド・サービス
完全マネージド型で、セットアップ、運用、拡張が不要なメッセージングサービス
Amazon SQS
Amazon DynamoDB
完全マネージド型で、高速なパフォーマンス、シームレスな拡張性と信頼性をNoSQLサービス
Amazon DynamoDBとは?
・フルマネージドなNoSQLデータベースサービス
・超高速・予測可能な一貫したパフォーマンス
・シームレスなスケーラビリティ、そして低コスト
運用管理必要なし
低レイテンシ、SSD
プロビジョンスループット
無限に使えるストレージ
管理不要なデータベース・サービス
管理不要で高い拡張性を提供
サービス vs プロダクトの違い
• DynamoDBはサービス
• 他のデータベースはプロダクト
• 構築・運用コストに大きな差が出る
ADMIN
DynamoDB導入 運用負荷軽減
スケーラブル
AWSでのDBのWrite 性能向上対策 その1
運用負荷軽減、さらなる負荷の対応も楽に。
App サーバ
Cache サーバ
App サーバ App サーバ
ELB
KVSサーバ キューサーバ
App サーバ App サーバ 非同期 サーバ
Amazon DynamoDB
SQS(Simple Queue Service)とは
分散キューサービス • AWSをスケールアウトして使うためのキーコンポーネント
• 2006年よりある最古参サービス
堅牢性・信頼性・可用性が高く低コスト • 最低一度は届くことを保証(At-Least-Once delivery)
• 3箇所以上のDCにメッセージを複製保存しロストを防ぐ
フルマネージド • インストール・管理不要
• アプリからSDK・APIでSend/Receive/Deleteするだけ
3箇所以上にメッセージを自動複製
東京リージョン
3か所以上で 自動複製
S3
キュー
高い耐久性で データ失わない:
世界中のリージョンから選択
データセンターA
メッセージを送受信するだけ。 可用性・性能は気にしない。 容量無制限。
データセンターB
データセンターC
メッセージ
DynamoDB導入 運用負荷軽減
スケーラブル
AWSでのDBのWrite 性能向上対策 その2
App サーバ
Cache サーバ
App サーバ App サーバ
ELB
App サーバ App サーバ 非同期 サーバ
Amazon DynamoDB
Amazon Simple
Queue Service (SQS)
SQS導入
運用負荷軽減
スケーラブル
運用負荷軽減、さらなる負荷の対応も楽に。
キャパシティ増強時にやること
DynamoDBの各テーブルのRead/WriteのIOPSを増加
Copyright © 2012 Amazon Web Services
App サーバ
Cache サーバ
App サーバ App サーバ
ELB
App サーバ App サーバ 非同期 サーバ
Amazon DynamoDB
Amazon Simple
Queue Service (SQS)
CloudFront
S3
キャパシティ増強時でやらなくてよい事
DB・キューの容量拡張、スケーリング
DB・キューの可用性・堅牢性の維持
シャーディングに伴うアプリ修正
42
ネイティブアプリに向けて さらなる最適化も
モバイルSDKでAWSをバックエンドに
AWS Android/iOS SDKを使えば…
• AWS上のサービスを自在に呼び出せます
• AWSのマネージドサービスを組み合わせてバックエンドに
• しかもプラットフォーム横断で連携!
AWSをバックエンドに使う例
DynamoDB, S3を使ってデータ共有
1. DB書き込み / ファイルアップロード
2. DBクエリ / ファイルリクエスト
3. DB応答 / ファイルダウンロード
DynamoDB
S3
AWSをバックエンドとして使う例
SNSとSQSを使ってPub/Sub
+
1. Publish
2. Notify
SNS topic SQS queue
SNS: Simple Notification Service SQS: Simple Queue Service
非同期バッチ処理の例
非同期バッチ処理要求を直接登録
• 通常のWebアプリ等
• Android/iOS SDKを使った場合
Client
Web Frontend Workers
Job queue
Workers
Job queue
ログやイベント情報の集計処理例
ログやイベント情報を直接登録
• 通常のWebアプリ等
• Android/iOS SDKを使った場合
Client
Web Frontend ログ・イベント集計
ログ・イベント集計
各種サービスの認証にはWeb ID連携も
Google, Facebook, Amazon (Login with Amazon)に対応
• 例:Login With Amazonで認証したユーザはS3の非公開ファイルにアクセス
• 例:Facebookで認証したユーザのゲーム利用履歴をDynamoDBに記録してFacebookのプロファイルを参照しながら行動分析
認証
Amazon SNSを使えば1つのAPIで マルチプラットフォームへのプッシュ通知も可能
Amazon SNS Mobile Push
Apple Devices
Google Devices
Amazon Kindle Fire Devices
[料金] 1月100万リクエストまで無料 以降100万リクエストごとに$1.00 (2013年9月現在)
50
構築運用の自動化を助ける仕組み
APIでインフラ操作を自動化可能
AWSの各種操作はAPIから可能
• インフラのマネージメントを人手を使わずに自動化 人件費削減・オペレーションミス防止
• 各種プログラミング言語やコマンドラインツールを提供
Android iOS Java nodeJS .NET PHP Python Ruby CLI Powershell
写真提供
aws ec2 start-instances --instance-ids i-123456 aws ec2 attach-network-interface --instance-id i-123456 --network-interface-id eni-123456 --device-index 1 aws ec2 assign-private-ip-addresses --network-interface-id eni-123456 --private-ip-addresses …
オートスケール機能で トラフィック変動やピーク対応も簡略化
スケジュールに従ったインスタンス数増減
監視システムと連動したインスタンス数増減
52
AutoScaling
予測を越えたトラフィックに
よるサービスへの影響を予防
予測可能な日次変動等
AutoScaling
Amazon CloudWatch
Alarm
構築やデプロイを自動化する各種サービス
Elastic Beanstalk OpsWorks CloudFormation
柔軟性
導入の容易さ
全て追加費用なしで、課金は使用した実際にリソース分のみ
54 54
AWS Elastic Beanstalk
Instance
Amazon RDS
Elastic Load Balancer
Instance
Auto scaling Group CloudWatch
deploy! WAR
• Webフロントエンドに適した構成を自動構築 • コードをデプロイするだけでWebアプリケーションを開始
55 55
AWS OpsWorks
• AWSの統合アプリケーションマネージメントソリューション
• アプリケーションをレイヤでモデル化して自動制御することでDevOpsを支援
– Chef recipeの各インスタンスへの配布
– システム構成情報の各インスタンスへの配布
– ライフサイクルイベントの通知
• 小規模から複雑・大規模なシステムまで管理運用
56 56
AWS CloudFormation
• 各種AWSのサービスで構成された環境をテンプレート化し、AWS環境のデプロイ/アンデプロイを一元管理できるサービス – JSONフォーマットのテンプレートでカスタマイズ可能
– ほぼすべてのAWSサービスをサポート
– 開発、検証環境など類似する環境を頻繁にデプロイする際に利用
– 稼働中のAWS環境からのテンプレートの作成も可能
EC2インスタンス
ElastiCache
RDS EMR Cluster
DynamoDB Table
SQS Queue
CloudFront Distribution
S3 Bucket
ELB
Route53 Record Set
Stack Cloud Formation
Template
Deploy/Un Deploy
57
その他各種サービス
Amazon Elastic Map Reduce
EMRはAWS上のHadoopサービス
• 伸縮自在・柔軟・スケーラブル・堅牢
• ログ解析・バッチ処理にベストフィット
EMRはHadoopの煩雑さをカバーする
• 開発者は本来やるべきアプリ(分析、解析等)に集中できる
各種サービスとの親和性の高い統合
• データはS3で無くさない
• 分散KVS DynamoDBとのスムースな連携
• EC2のスケーラビリティを徹底的に活用
59 59
Amazon Elastic Transcoder
• 高いスケーラビリティ、使いやすさ、経済性を実現する設計で、様々なデバイスに対応した動画ファイルをトランスコードできるサービス
• トランスコード – デジタル映像を別のフォーマット、解像度などに変換する技術
– スマートフォン向けに動画ファイルの画面サイズ、解像度を変換するなど、再生デバイスに合わせコンテンツの変換を行う
60 60
AWS Data Pipeline
Storage
DWH NoSQL
Big Data
DynamoDB RedShift
S3
Glacier
Data Pipeline RDB
Map Reduce
Data Flow Orchestration
RDS
Elastic MapReduce
記述されたデータフローを定期的に信頼性高く実施するためのサービス
AWSのみならずオンプレミスのデータ移行にも利用可能
Data Pipeline自体の利用料金は無料
Corporate Data Center
レファレンス アーキテクチャ
AWS レファレンスアーキテクチャ オンラインゲーム
AWS レファレンスアーキテクチャ ウェブホスティング
AWS レファレンスアーキテクチャ メディア配信
ベーシック デベロッパー ビジネス エンタープライズ
フォーラム 利用可能 利用可能 利用可能 利用可能
サポートへの コンタクト
EC2の 健全性エラーが発生した場合
コンタクト フォーム
電話、チャット コンタクト フォーム
電話、チャット コンタクト フォーム
初回応答時間 不可 12時間
(営業時間内) 1時間 15分
連絡先登録 - 1 5 無制限
24/365対応 なし なし あり あり
Trusted Advisor なし なし あり あり
専任スタッフ なし なし なし あり
特別サポート なし なし なし あり
料金(月額) 無料 $49
AWS利用総額の $0~$10K: 10% $10K~$80K: 7% $80K~$250K: 5% $250K~: 3% (最低$100)
AWS利用総額の10% (最低$15000)
24時間・365日での日本語サポートの提供
日本語の出来るエンジニアが技術サポートを提供