Applibot presents Smartphone Game on AWS

971 views
916 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
971
On SlideShare
0
From Embeds
0
Number of Embeds
63
Actions
Shares
0
Downloads
8
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • We have two players in a round of tic-tac toe. The item storing the data for this particular game of tic tac toe is here stored in DynamoDB.

    This is a match between Alice and Bob, and we’re going to have Alice go first.
  • We can see with this move that Bob is not very good at this game. By playing that, Alice can guarantee a win by playing in the lower-left.

    Let’s say Bob realizes that he not good at this game, and wants to come up with some other way to win.
  • Based on the API calls we’ve sketched out, this would work and Bob would win, or crash the game.
  • Here all of those will be merged together. UpdateItem lets you pick specific attributes in an item to update, leaving all the rest of the attributes alone.

    PutItem on the other hand replaces the whole item, so then it would have been last write wins. That opens another can of worms around being able to “undo” moves, but that’s a different issue that we’ll fix in the same way.
  • Apply the write only if the values in the item are still what the request expected them to be.
  • 9-10 min

    But, only one of those writes will arrive first. Writes to each item are serialized by DynamoDB.
  • Introduce Redshift Product
  • Typical data we see developers gathering about the player includes session length, telemetry data, in game data like how long to the first purchase etc, basically any information that will tell you where the game is doing well versus where it is not.

    This data tends to be unstructured and so developers often deploy a NoSQL solution to store that data. They will later use a batch based sort job to cleanse the data and move it into a relational database of some sort, likely a DataWareHouse, for analysis.

    Many Game Developers use AWS’s NoSQL offering DynamoDB which can handle very high volumes of read and writes and is highly durable. And as always you can install and manage your own NoSQL offering like MongoDB, Cassandra, Couchbase, etc too.


  • Typical data we see developers gathering about the player includes session length, telemetry data, in game data like how long to the first purchase etc, basically any information that will tell you where the game is doing well versus where it is not.

    This data tends to be unstructured and so developers often deploy a NoSQL solution to store that data. They will later use a batch based sort job to cleanse the data and move it into a relational database of some sort, likely a DataWareHouse, for analysis.

    Many Game Developers use AWS’s NoSQL offering DynamoDB which can handle very high volumes of read and writes and is highly durable. And as always you can install and manage your own NoSQL offering like MongoDB, Cassandra, Couchbase, etc too.


  • Typical data we see developers gathering about the player includes session length, telemetry data, in game data like how long to the first purchase etc, basically any information that will tell you where the game is doing well versus where it is not.

    This data tends to be unstructured and so developers often deploy a NoSQL solution to store that data. They will later use a batch based sort job to cleanse the data and move it into a relational database of some sort, likely a DataWareHouse, for analysis.

    Many Game Developers use AWS’s NoSQL offering DynamoDB which can handle very high volumes of read and writes and is highly durable. And as always you can install and manage your own NoSQL offering like MongoDB, Cassandra, Couchbase, etc too.


  • Alternative to Kinesis: Kafka

    Still good solution – managing is non-trivial
  • Think of this like a mesh fabric
  • Applibot presents Smartphone Game on AWS

    1. 1. AWSの活用で変わる これからのゲームインフラの構築と運用 2014年7月4日 アマゾンデータサービスジャパン株式会社 シニアソリューションアーキテクト 安川 健太 Applibot presents SmartphoneGame on AWS
    2. 2. 自己紹介 安川 健太 (@thenkentiest) • AWSソリューションアーキテクト • 担当するお客様の範囲 • スタートアップ • ゲーム・ソーシャルサービス • 時々エンタープライズ 略歴 • エリクソンリサーチにてM2MやSNS + IoTな感じの技術の研究開発 • ユーザとして触ったAWSに感銘を受けてAWSソリューションアーキテク トに (↑イマココ)
    3. 3. 洗練されたスケーラブルなアプリケーションの構築を助け る 幅広く、深いプラットフォーム 豊富な品揃え
    4. 4. 30を超えるAWSビルディングブロック Support CertificationTrainingProfessional Services Technology Partners Consulting Partners AWS MarketplaceEcosystem Elastic Beanstalk for Java, Node.js, Python, Ruby, PHP and .Net OpsWorks CloudFormation Containers & Deployment (PaaS) Management & AdministrationIAM CloudWatchCloudTrail APIs and SDKsManagement ConsoleCloud HSM Command Line Interface Direct Connect Route 53VPC Networking 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, PostgreSQL Oracle, SQL Server Elastic Load BalancerEC2 Auto Scaling
    5. 5. CTOの皆様の悩み • 毎回なんかある度にこれをやってた ら寝れません。。。 ゲーム提供者様のよくあるお悩み インフラ増強に時間がかってユーザ増に間に合わない サーバを買っても余るようになったらどうしよう インフラ担当が24時間つきっきりで疲弊してる ハードウェアやDC障害への備えとか…わかってるけど… ほんとはゲームを面白くすることに時間使いたいですよね …?
    6. 6. 本来やりたかった面白いゲームの開発に集中してほしい AWSを使って
    7. 7. 多数のゲーム会社様ご利用実績 「膨大なゲームトラフィックを 処理するためのインフラを一人 で構築、運用するには、AWSし か選択肢がありませんでし た。」 「Amazon Redshiftがリ リースされた時は衝撃的 でした。」 「AWSサポートの迅速さと問 題解決能力、費用対効果は非 常に高い水準にあると思いま す。」 最新の事例はこちらから  http://www.awsmicrosite.jp/game/
    8. 8. 30を超えるAWSビルディングブロック Support CertificationTrainingProfessional Services Technology Partners Consulting Partners AWS MarketplaceEcosystem Elastic Beanstalk for Java, Node.js, Python, Ruby, PHP and .Net OpsWorks CloudFormation Containers & Deployment (PaaS) Management & AdministrationIAM CloudWatchCloudTrail APIs and SDKsManagement ConsoleCloud HSM Command Line Interface Direct Connect Route 53VPC Networking 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, PostgreSQL Oracle, SQL Server Elastic Load BalancerEC2 Auto Scaling
    9. 9. お客様のフィードバックに基づくイノベーション 2007 2008 2009 2010 2011 2012 2013 9 24 48 61 82 159 280
    10. 10. 今日のアジェンダ • 進化し続けるコンピュートサービス Amazon EC2 - 新しいインスタンスタイプ - 新しいディスクオプション - Dockerへの対応 • パフォーマンスの壁を越えてスケールするために - Amazon ElastiCacheのアップデート - Amazon DynamoDBの活用法 • 増え続けるデータの解析もお任せ - Amazon Redshift と Amazon Kinesisでデータ解析
    11. 11. 進化し続けるコンピュートサービス Amazon EC2
    12. 12. 多種多様なインスタンスタイプ GPU 一般用途 バランス型 メモリ 最適化 ストレージとIO 最適化 コンピュート 最適化 CR1M2CC2C1 HI1 HS1 CG1M1
    13. 13. 多種多様なインスタンスタイプ GPU一般用途 メモリ 最適化 ストレージとIO 最適化 コンピュート 最適化 CR1M2CC2C1 HI1 CG1M1 G2M3 R3C3 I2 HS1T2
    14. 14. 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
    15. 15. 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.128 c3.xlarge 4 14 2 x 40 $0.255 c3.2xlarge 8 28 2 x 80 $0.511 c3.4xlarge 16 55 2 x 160 $1.021 c3.8xlarge 32 108 2 x 320 $2.043
    16. 16. 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.210 r3.xlarge 4 30.05 1 x 80 $0.420 r3.2xlarge 8 61 1 x 160 $0.840 r3.4xlarge 16 122 1 x 320 $1.680 r3.8xlarge 32 244 2 x 320 $3.360
    17. 17. 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
    18. 18. 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
    19. 19. T2で負荷をかけた際のCPUクレジット使用量と残高 • CloudWatchで確認可能
    20. 20. ディスクIOも望みのスペックを指定できます
    21. 21. EBS プロビジョンドIOPS • ディスクのIO性能(IOPS)を指定できる • IOPS値の指定は100~4000で1刻みが可能 - (StandardなEBSのIOPSは、約100程度) • 複数ボリュームを組み合わせてさらに高いIO性能も実現可能
    22. 22. EBS 最適化オプション • EBS用にネットワーク帯域を最適化 • 確保される帯域は、500Mbpsか1000Mbps (インスタンスタイプ
    23. 23. 新規追加された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
    24. 24. gp2のバースト時のパフォーマンス • ベースパフォーマンスを超えるI/Oが 要求されると、一定時間バーストが 発生する • バースト終了後はベースパフォーマ ンス(1GBあたり3IOPS)が維持され る • 1TBをプロビジョニングすると常時 3000IOPSのパフォーマンスを継続 できる (=Provisioned IOPSと同等) General Purpose(SSD)ボリュームのパフォーマンス仕様 (I/O負荷継続時、ボリュームサイズ毎)IOPS 分
    25. 25. 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時)
    26. 26. AWS Elastic Beanstalk for Docker 2014/04/24 http://bit.ly/1f8Bd7z Meets Amazon Linux AMI 2014.03 からDockerをサポート
    27. 27. パフォーマンスの壁を越えてスケールするために
    28. 28. Amazon ElastiCacheとは 構築 • キャッシュクラスタを数クリックで起動 • EC2同様、初期費用無し、時間単位の従量課金 移行 • 2種類のエンジン(memcached, redis)をサポート • 既存アプリケーションの変更不要 運用 • 可用性を向上させる機能 • モニタリング、自動障害検出、復旧、拡張、パッチ管 理機能を提供 セキュリティ • セキュリティグループ、VPC対応
    29. 29. gumiさんでのご利用事例 http://www.slideshare.net/hommatomonori/elasticache-for-redis
    30. 30. アベイラビリティゾーンをまたいだReplication構 成 リードレプリカを複数のアベイラビリティゾーンにデプロイ可能 • 同一AZのリードレプリカを参照し高速なデータ取得が可能に • プライマリノード側のAZ障害時のデータ保全が可能に Availability Zone - a Availability Zone - b 非同期レプリケーション 東京リージョン SET GET SET GET App App
    31. 31. リードレプリカ昇格 リードレプリカをプライマリに昇格可能 昇格は数分が必要 • ダウンが発生するため、クライント側でエラーハンドリングは必要 • アプリ修正不要(プライマリのendpointが変わらない) ① ① unlink ② SYNC ③ DNS change
    32. 32. Backup & Restore for ElastiCache Redis スナップショット • 一日1回自動スナップショット。S3にデータを保存 • 任意のタイミングで手動スナップショット取得可能 • 今までご自身でEC2 Redis経由で行ったバックアップが不要となる 2014/4/24 slaveof Redis RDB copy restore snapsho t
    33. 33. Amazon DynamoDB NoSQL as a Service 超高速・予測可能な一貫したパフォーマンス シームレスなスケーラビリティと低コスト 運用管理必要なし 低レイテンシ、SSD プロビジョンスループット 無限に使えるストレージ ADMIN
    34. 34. DynamoDBの知られざる強力な機能 • Conditional Update • 「キーにマッチするレコードが存在したら/しなかったら」や「この値が ○○以上/以下だったら」という条件付き書き込み/更新ができる • AttributeへのAdd操作、Atomic Counter • AttributeがNumber型なら足し算/引き算、Set型ならそのセットに対し て値を追加
    35. 35. ◯☓ゲームのステート管理
    36. 36. ◯☓ゲーム { Id : abecd, Players : [ Alice, Bob ], State : STARTED, Turn : Bob, Top-Right : O } Game Item
    37. 37. ◯☓ゲーム Amazon DynamoDB Alice Bob
    38. 38. ◯☓ゲーム Amazon DynamoDB Alice Bob Update: Top-Left : X Turn : Alice
    39. 39. ◯☓ゲーム – 今のままだとチートが可能 Alice Bob (1) Amazon DynamoDB Bob (2) Bob (3)
    40. 40. ◯☓ゲーム – 今のままだとチートが可能 Bob (1) Amazon DynamoDB 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
    41. 41. ◯☓ゲーム – 今のままだとチートが可能 Bob (1) Amazon DynamoDB 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
    42. 42. Conditional Updateを使った楽観的ロック 現在の特定のAttributeに特定の値が入っていた場合にのみ更新を実施 条件が合わなかったら更新せずに終了 (但し、1つのアイテムのみで適用可能)
    43. 43. 修正版◯☓ゲーム Bob (1) Amazon DynamoDB Bob (2) Bob (3) Update: Turn : Alice Top-Left : X Expect: Turn : Bob Top-Left : null State : STARTED, Turn : Bob, Top-Right : O Update: Turn : Alice Mid : X Expect: Turn : Bob Mid : null Update: Turn : Alice Low-Right : X Expect: Turn : Bob Low-Right : null
    44. 44. 修正版◯☓ゲーム Bob (1) Amazon DynamoDB Bob (2) Bob (3) State : STARTED, Turn : Bob, Top-Right : O Update: Turn : Alice Top-Left : X Expect: Turn : Bob Top-Left : null Update: Turn : Alice Low-Right : X Expect: Turn : Bob Low-Right : null Update: Turn : Alice Mid : X Expect: Turn : Bob Mid : null
    45. 45. 修正版◯☓ゲーム Bob (1) Amazon DynamoDB Bob (2) Bob (3) State : STARTED, Turn : Alice, Top-Right : O, Top-Left : X Update: Turn : Alice Top-Left : X Expect: Turn : Bob Top-Left : null Update: Turn : Alice Mid : X Expect: Turn : Bob Mid : null Update: Turn : Alice Low-Right : X Expect: Turn : Bob Low-Right : null
    46. 46. データの解析もAWSなら簡単には初めて大きくスケール
    47. 47. Elastic MapReduce DynamoDB RedShift S3 データがS3にあれば、あとは必要に応じて解析ク ラスタを起動して利用できる
    48. 48. シンプルなログ解析システムの例 各エンド端末でログをファイルに書き 出す 定期的にS3にUpload 定期的にRedshiftに読み込み BIツールを使ってRedshift解析 2014-01-24,nateware,e4df,login 2014-01-24,nateware,e4df,gamestart 2014-01-24,nateware,e4df,gameend 2014-01-25,nateware,a88c,login 2014-01- 25,nateware,a88c,friendlist 2014-01-25,nateware,a88c,gamestart
    49. 49. Amazon Redshift リーダーノード • SQLエンドポイント • メタデータの保存 • クエリ実行のコーディネート コンピュートノード • カラムナ型のストレージ • Amazon S3を介したデータの ロード、バックアップ、リストア • Amazon DynamoDBからの並列ロード シングルノードでも利用可能 10 GigE (HPC) Ingestion Backup Restore JDBC/ODBC
    50. 50. 前のシステムにサーバのログも追加 サーバログもS3に収集 Redshiftで読み込んで解析 外部解析サービスの利用も可 EC2 外部解析 サービス
    51. 51. Tableau + Redshift
    52. 52. DynamoDBのデータも解析に利用 GameのバックエンドにDynamoDB Redshiftに直接読み込み可 Redshiftでうまくデータを結合 EC2
    53. 53. EMRを使ってデータを前処理 EMRでログファイルのETL処 理 EMRでDynamoDB上のデータ も前処理 EC2
    54. 54. Amazon Kinesisでリアルタイム分析も
    55. 55. 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
    56. 56. Kinesisを使ったリアルタイムデータ処理 Kinesisにデータストリームを入力 複数のWriterとReaderが共存可 もちろんデータのRedshiftへの読み込 みも EC2 EC2
    57. 57. Sparkコネクタもあります EC2 EC2
    58. 58. 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"}
    59. 59. FPSのリアルタイムヒートマップ
    60. 60. イベントを解析しながらユーザにアクションを促すシステムの例 AWSEndpoint Kinesis App.1 Kinesis App.2 Redshift DynamoDB Kinesis App.3 Availabi lity Zone Shard 1 Shard 2 Shard N Availa bility Zone Availa bility Zone RDS Data analyst BI tool
    61. 61. まとめ 進化し続けるコンピュートサービス Amazon EC2 • 新しいインスタンスタイプ • 新しいディスクオプション • Dockerへの対応 パフォーマンスの壁を越えてスケールするために • Amazon ElastiCacheのアップデート • Amazon DynamoDBの活用法 増え続けるデータの解析もお任せ • Amazon Redshift と Amazon Kinesisでデータ解析
    62. 62. AWS Summit Tokyo 2014 2014年7月17日(木) ~ 18日(金) グランドプリンス新高輪 (国際館パミール) 来場無料 (要事前登録) http://www.awssummittokyo.com/ • 申し込み受付開始通知メール受付開始!

    ×