SlideShare a Scribd company logo
AWS Gaming Solutions | GDC 2014
Scalable Gaming with AWS
Or, How to go from 1,000 to 1,000,000 users without starting over
Nate Wiger @nateware | Principal Gaming Solutions Architect
AWS Gaming Solutions | GDC 2014
What's In It For Me?
•  Why AWS for Games?
•  Core Game Backend
•  Scaling Data with DynamoDB
•  Low-Latency Multiplayer with C3
•  Mobile Push Notifications
AWS Gaming Solutions | GDC 2014
Gratuitous Logo Slide
AWS Gaming Solutions | GDC 2014
Traditional: Rigid AWS: Elastic
Servers
Demand
Capacity
Excess Capacity
Wasted $$
Demand
Unmet Demand
Upset Players
Missed Revenue
Pay As You Scale
AWS Gaming Solutions | GDC 2014
Pay As You Scale
AWS Gaming Solutions | GDC 2014
10 Regions
51 CloudFront POPs
Continuous Expansion
Global Is Good
AWS Gaming Solutions | GDC 2014
AWS Gaming Solutions | GDC 2014
Game Backend Concepts
•  Think in terms of API's
•  Get friends, leaderboard
•  HTTP+JSON
•  Binary asset data
•  Mobile push
•  Multiplayer servers
AWS Gaming Solutions | GDC 2014
Core Game Backend
ELB
S3
•  Choose Region
•  Elastic Load Balancer
•  Two Availability Zones
•  EC2 for App
•  RDS Database
•  Multi-AZ
•  S3 for Game Data
•  Assets
•  UGC
•  Analytics
Region
AWS Gaming Solutions | GDC 2014
Scale It Way Out
ELB
S3
•  Auto Scaling Group
•  Capacity on Demand
•  Respond to Users
EC2EC2EC2
Region
AWS Gaming Solutions | GDC 2014
Scale It Way Out
ELB
S3
•  Auto Scaling Group
•  Capacity on Demand
•  Respond to Users
•  ElastiCache
•  Memcache
•  Redis EC2EC2EC2
Region
AWS Gaming Solutions | GDC 2014
Scale It Way Out
CloudFront
CDN
ELB
S3
EC2EC2EC2
Region
•  Auto Scaling Group
•  Capacity on Demand
•  Respond to Users
•  ElastiCache
•  Memcache
•  Redis
•  CloudFront CDN
•  DLC, Assets
•  Game Saves
•  UGC
AWS Gaming Solutions | GDC 2014
Big picture slide
AWS Gaming Solutions | GDC 2014
Elastic Beanstalk
•  Managed Container
•  Git Push or Zip Upload
•  ELB, EC2, RDS
•  Web Dashboard
•  Same Performance
•  So Yeah, Use It
AWS Gaming Solutions | GDC 2014
Hill Of Beans
ELB
S3
•  Beanstalk Manages
•  ELB
•  EC2
•  Auto Scaling
•  Monitoring
•  RDS
•  Add Other Services
•  S3
•  CloudFront
•  ElastiCache
•  SNS
EC2
Elastic Beanstalk Container
EC2
CloudFront
CDN
AWS Gaming Solutions | GDC 2014
AWS Gaming Solutions | GDC 2014
More CLI bell
cd	
  MyGameAPI	
  
	
  
eb	
  init	
  
eb	
  start	
  
	
  
vi	
  app.rb	
  
require	
  'sinatra'	
  
get	
  '/hello.json'	
  do	
  
	
  	
  {message:	
  "Hello	
  World!"}	
  
End	
  
	
  
git	
  commit	
  –m	
  "app	
  updates"	
  app.rb	
  
git	
  aws.push	
  
•  Initialize everything
•  Write code
•  Commit to git
•  Push to Beanstalk
•  Coffee / Beer
•  Repeat
AWS Gaming Solutions | GDC 2014
AWS Gaming Solutions | GDC 2014
Region
Writing Is Painful
Availability
Zone A
Availability
Zone B
S3
EC2
•  Games are Write Heavy
•  Caching of Limited Use
•  Key Value Key Value
•  Binary Structures
•  Database = Bottleneck
ELB
EC2
CloudFront
CDN
AWS Gaming Solutions | GDC 2014
Sharding (Not Fun)
Availability
Zone A
C2
AWS Gaming Solutions | GDC 2014
DynamoDB
Availability
Zone A
Availability
Zone B
S3
•  NoSQL Data Store
•  Fully-Managed
•  Highly Available
•  PUT/GET Keys
•  Secondary Indexes
•  Provisioned Throughput
•  Auto Scaling
EC2 EC2
ELB
CloudFront
CDN
Elastic Beanstalk Container
AWS Gaming Solutions | GDC 2014
Leaderboard in DynamoDB
•  Hash key = Primary key
•  Range key = Sub key
•  Others attributes are
unstructured, unindexed
•  So… How to sort based
on Top Score?
AWS Gaming Solutions | GDC 2014
Leaderboard with Secondary Indexes
•  Create a secondary index!
•  Set hash key to Game Level
•  Set range key to Top Score
•  Can now query by Level,
Sorted by Top Score
•  Handles any (sane) gaming
use case
AWS Gaming Solutions | GDC 2014
Python Leaderboard
table	
  =	
  Table('scores',	
  schema=[	
  
	
  	
  HashKey('user'),	
  
	
  	
  RangeKey('level')	
  
],	
  
throughput={	
  
	
  	
  'read':	
  5,	
  'write':	
  15	
  
},	
  global_indexes=[	
  
	
  	
  GlobalAllIndex('highscore',	
  
	
  	
  	
  	
  parts=[	
  
	
  	
  	
  	
  	
  	
  HashKey('level'),	
  
	
  	
  	
  	
  	
  	
  RangeKey('score',	
  data_type=NUMBER)	
  
	
  	
  	
  	
  ],	
  
	
  	
  	
  	
  throughput={	
  
	
  	
  	
  	
  	
  	
  'read':	
  5,	
  'write':	
  15	
  
	
  	
  	
  	
  }	
  
	
  	
  )	
  
])	
  
new_score	
  =	
  
	
  	
  Item(table,	
  data={	
  
	
  	
  	
  	
  'user':	
  	
  user,	
  
	
  	
  	
  	
  'level':	
  level,	
  
	
  	
  	
  	
  'score':	
  score	
  
	
  	
  	
  })	
  
new_score.save()	
  
	
  
topscores	
  =	
  table.query(index='highscore')	
  
	
  
for	
  ts	
  in	
  topscores:	
  
	
  	
  print(ts['user'],	
  ts['score'])	
  
	
  
AWS Gaming Solutions | GDC 2014
Big picture slide
AWS Gaming Solutions | GDC 2014
G2 Instance
•  NVIDIA Kepler GPU
•  Game Streaming
•  Rendering Assets
•  Build Servers
•  AppStream!
AWS Gaming Solutions | GDC 2014
C3 Instance
•  High packets per second
•  Very low latency, jitter
•  Intel Ivy Bridge CPU
•  SSD's
•  Built for games
•  15 cents / hour
AWS Gaming Solutions | GDC 2014
Enhanced Networking (SR-IOV)
Before:
Hypervisor
After:
Hardware
AWS Gaming Solutions | GDC 2014
Multiplayer Game Servers
EC2EC2 EC2
Region
•  Beanstalk App
•  Core Session
•  Matchmaking
•  Public Server Tier
•  Direct Client Socket
•  Scale on Players
•  CloudFront CDN
•  DLC, Assets
•  Game Saves
•  UGC
EC2
AWS Gaming Solutions | GDC 2014
Multiplayer Game Servers
①  Login via Beanstalk
②  Request Matchmaking
③  Get Game Server IP
EC2EC2 EC2
Region
EC2
AWS Gaming Solutions | GDC 2014
Multiplayer Game Servers
①  Login via Beanstalk
②  Request Matchmaking
③  Get Game Server IP
④  Connect to Server
⑤  Pull Down Assets
⑥  Other Players Join
EC2EC2 EC2
Region
EC2
AWS Gaming Solutions | GDC 2014
Multiplayer Game Servers
①  Login via Beanstalk
②  Request Matchmaking
③  Get Game Server IP
④  Connect to Server
⑤  Pull Down Assets
⑥  Other Players Join
⑦  Game Ends
⑧  Update Stats
EC2EC2 EC2
Region
EC2
AWS Gaming Solutions | GDC 2014
Multi-Region Game Servers
E2
Region
EC2
Region
AWS Gaming Solutions | GDC 2014
Big picture slide
AWS Gaming Solutions | GDC 2014
Messages and Queues
ELB
S3
•  Simple Notification Service
•  HTTP
•  SMS
•  Mobile Push
EC2EC2EC2
Region
AWS Gaming Solutions | GDC 2014
Messages and Queues
ELB
•  Simple Notification Service
•  HTTP
•  SMS
•  Mobile Push
•  CloudWatch
•  Monitoring
•  Alerts
EC2EC2EC2
Region
EC2
PUB
AWS Gaming Solutions | GDC 2014
Messages and Queues
ELB
EC2EC2EC2
Region
EC2EC2
•  Simple Notification Service
•  HTTP
•  SMS
•  Mobile Push
•  CloudWatch
•  Monitoring
•  Alerts
•  SQS
•  Background Tasks
•  Avatar Resizing
•  Score Processing
AWS Gaming Solutions | GDC 2014
Messages and Queues
ELB
EC2EC2EC2
Region
EC2EC2
•  Simple Notification Service
•  HTTP
•  SMS
•  Mobile Push
•  CloudWatch
•  Monitoring
•  Alerts
•  SQS
•  Background Tasks
•  Avatar Resizing
•  Score Processing
AWS Gaming Solutions | GDC 2014
Messages and Queues
ELB
EC2EC2EC2
Region
EC2EC2
•  Simple Notification Service
•  HTTP
•  SMS
•  Mobile Push
•  CloudWatch
•  Monitoring
•  Alerts
•  SQS
•  Background Tasks
•  Avatar Resizing
•  Score Processing
PUB
AWS Gaming Solutions | GDC 2014
Wrap It Up Already
•  Start Simple With Beanstalk
•  Go Directly to DynamoDB, Do Not Pass Go
•  CloudFront + S3 for Download and Upload
•  Add Multiplayer - Hybrid
•  Use the EC2 C3 Instance
•  SQS to Decouple and Scale
AWS Gaming Solutions | GDC 2014
Cheers – Nate Wiger @nateware

More Related Content

PDF
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
PPTX
イベント・ソーシングを知る
PPTX
GA로 게임 로그 분석하기
PDF
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
PPTX
技術選択とアーキテクトの役割
PPTX
脱RESTful API設計の提案
PDF
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
PDF
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
イベント・ソーシングを知る
GA로 게임 로그 분석하기
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
技術選択とアーキテクトの役割
脱RESTful API設計の提案
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기

What's hot (20)

PDF
超実践 Cloud Spanner 設計講座
PPTX
HttpClient詳解、或いは非同期の落とし穴について
PDF
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
PDF
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
PDF
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
PDF
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
PDF
How to build massive service for advance
PPTX
Network miner 使ってみた
PDF
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
PDF
NGINXセミナー(基本編)~いまさら聞けないNGINXコンフィグなど基本がわかる!
PDF
인프런 - 스타트업 인프랩 시작 사례
PPTX
로그 기깔나게 잘 디자인하는 법
PDF
分散トレーシング技術について(Open tracingやjaeger)
PPTX
Pythonでキャッシュを活用する話①
PPTX
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
PDF
[AKIBA.AWS] AWS Elemental MediaConvertから学ぶコーデック入門
PDF
파이썬 생존 안내서 (자막)
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
PDF
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
PPTX
DeNAの最新のマスタデータ管理システム Oyakata の全容
超実践 Cloud Spanner 設計講座
HttpClient詳解、或いは非同期の落とし穴について
FlutterとSupabaseでRDBを使った サーバーレスアプリ開発
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
How to build massive service for advance
Network miner 使ってみた
Micrometer/Prometheusによる大規模システムモニタリング #jsug #sf_26
NGINXセミナー(基本編)~いまさら聞けないNGINXコンフィグなど基本がわかる!
인프런 - 스타트업 인프랩 시작 사례
로그 기깔나게 잘 디자인하는 법
分散トレーシング技術について(Open tracingやjaeger)
Pythonでキャッシュを活用する話①
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
[AKIBA.AWS] AWS Elemental MediaConvertから学ぶコーデック入門
파이썬 생존 안내서 (자막)
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
グラフデータベース:Neo4j、そしてRDBからの移行手順の紹介
DeNAの最新のマスタデータ管理システム Oyakata の全容
Ad

Similar to Scalable Gaming with AWS - GDC 2014 (20)

PDF
AWS Game Analytics - GDC 2014
PDF
Gaming on AWS - 1. AWS로 글로벌 게임 런칭하기 - 장르별 아키텍처 중심
PDF
Gaming in the Cloud at Websummit Dublin
PDF
Openbar Kontich // Google Cloud: past, present and the (oh so sweet) future b...
PDF
AWS Summit Seoul 2015 - 일본 AWS 게임 고객사례 - Gungho, Grani, Nintendo를 중심으로
PPTX
re:Invent re:cap 2020
PDF
GDC 2015 - Game Analytics with AWS Redshift, Kinesis, and the Mobile SDK
PDF
[KGC 2012] Online Game Server Architecture Case Study Performance and Security
PDF
AWS Cloud Development Kit (CDK)를 이용한 코드 기반 인프라 개발 및 배포 - 공찬호(리얼리티매직) :: AWS C...
PPTX
Building a scalable API with Grails
PPTX
Write retrogames in the web and add something more with Azure
PDF
AWS vs Azure vs Google (GCP) - Slides
PPTX
AZUG Lightning Talk - Application autoscaling on Kubernetes with Kubernetes E...
PPTX
KGC 2013 AWS Keynote
PDF
GDC 2015 - Low-latency Multiplayer Gaming with AWS
PDF
Serverless Culture
PDF
DevOpsDays Galway 2017 - Skypilot Project
PDF
Aws-What You Need to Know_Simon Elisha
PPTX
Cloud Native 오픈소스 서비스 소개 및 Serverless로 실제 게임 개발하기
PDF
Mobile game architecture on GCP
AWS Game Analytics - GDC 2014
Gaming on AWS - 1. AWS로 글로벌 게임 런칭하기 - 장르별 아키텍처 중심
Gaming in the Cloud at Websummit Dublin
Openbar Kontich // Google Cloud: past, present and the (oh so sweet) future b...
AWS Summit Seoul 2015 - 일본 AWS 게임 고객사례 - Gungho, Grani, Nintendo를 중심으로
re:Invent re:cap 2020
GDC 2015 - Game Analytics with AWS Redshift, Kinesis, and the Mobile SDK
[KGC 2012] Online Game Server Architecture Case Study Performance and Security
AWS Cloud Development Kit (CDK)를 이용한 코드 기반 인프라 개발 및 배포 - 공찬호(리얼리티매직) :: AWS C...
Building a scalable API with Grails
Write retrogames in the web and add something more with Azure
AWS vs Azure vs Google (GCP) - Slides
AZUG Lightning Talk - Application autoscaling on Kubernetes with Kubernetes E...
KGC 2013 AWS Keynote
GDC 2015 - Low-latency Multiplayer Gaming with AWS
Serverless Culture
DevOpsDays Galway 2017 - Skypilot Project
Aws-What You Need to Know_Simon Elisha
Cloud Native 오픈소스 서비스 소개 및 Serverless로 실제 게임 개발하기
Mobile game architecture on GCP
Ad

Recently uploaded (20)

PDF
Approach and Philosophy of On baking technology
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
MYSQL Presentation for SQL database connectivity
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Machine learning based COVID-19 study performance prediction
PDF
A comparative analysis of optical character recognition models for extracting...
PPT
Teaching material agriculture food technology
PDF
Electronic commerce courselecture one. Pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
Cloud computing and distributed systems.
PPTX
A Presentation on Artificial Intelligence
Approach and Philosophy of On baking technology
“AI and Expert System Decision Support & Business Intelligence Systems”
MYSQL Presentation for SQL database connectivity
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Assigned Numbers - 2025 - Bluetooth® Document
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
20250228 LYD VKU AI Blended-Learning.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Machine learning based COVID-19 study performance prediction
A comparative analysis of optical character recognition models for extracting...
Teaching material agriculture food technology
Electronic commerce courselecture one. Pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Programs and apps: productivity, graphics, security and other tools
Cloud computing and distributed systems.
A Presentation on Artificial Intelligence

Scalable Gaming with AWS - GDC 2014

  • 1. AWS Gaming Solutions | GDC 2014 Scalable Gaming with AWS Or, How to go from 1,000 to 1,000,000 users without starting over Nate Wiger @nateware | Principal Gaming Solutions Architect
  • 2. AWS Gaming Solutions | GDC 2014 What's In It For Me? •  Why AWS for Games? •  Core Game Backend •  Scaling Data with DynamoDB •  Low-Latency Multiplayer with C3 •  Mobile Push Notifications
  • 3. AWS Gaming Solutions | GDC 2014 Gratuitous Logo Slide
  • 4. AWS Gaming Solutions | GDC 2014 Traditional: Rigid AWS: Elastic Servers Demand Capacity Excess Capacity Wasted $$ Demand Unmet Demand Upset Players Missed Revenue Pay As You Scale
  • 5. AWS Gaming Solutions | GDC 2014 Pay As You Scale
  • 6. AWS Gaming Solutions | GDC 2014 10 Regions 51 CloudFront POPs Continuous Expansion Global Is Good
  • 7. AWS Gaming Solutions | GDC 2014
  • 8. AWS Gaming Solutions | GDC 2014 Game Backend Concepts •  Think in terms of API's •  Get friends, leaderboard •  HTTP+JSON •  Binary asset data •  Mobile push •  Multiplayer servers
  • 9. AWS Gaming Solutions | GDC 2014 Core Game Backend ELB S3 •  Choose Region •  Elastic Load Balancer •  Two Availability Zones •  EC2 for App •  RDS Database •  Multi-AZ •  S3 for Game Data •  Assets •  UGC •  Analytics Region
  • 10. AWS Gaming Solutions | GDC 2014 Scale It Way Out ELB S3 •  Auto Scaling Group •  Capacity on Demand •  Respond to Users EC2EC2EC2 Region
  • 11. AWS Gaming Solutions | GDC 2014 Scale It Way Out ELB S3 •  Auto Scaling Group •  Capacity on Demand •  Respond to Users •  ElastiCache •  Memcache •  Redis EC2EC2EC2 Region
  • 12. AWS Gaming Solutions | GDC 2014 Scale It Way Out CloudFront CDN ELB S3 EC2EC2EC2 Region •  Auto Scaling Group •  Capacity on Demand •  Respond to Users •  ElastiCache •  Memcache •  Redis •  CloudFront CDN •  DLC, Assets •  Game Saves •  UGC
  • 13. AWS Gaming Solutions | GDC 2014 Big picture slide
  • 14. AWS Gaming Solutions | GDC 2014 Elastic Beanstalk •  Managed Container •  Git Push or Zip Upload •  ELB, EC2, RDS •  Web Dashboard •  Same Performance •  So Yeah, Use It
  • 15. AWS Gaming Solutions | GDC 2014 Hill Of Beans ELB S3 •  Beanstalk Manages •  ELB •  EC2 •  Auto Scaling •  Monitoring •  RDS •  Add Other Services •  S3 •  CloudFront •  ElastiCache •  SNS EC2 Elastic Beanstalk Container EC2 CloudFront CDN
  • 16. AWS Gaming Solutions | GDC 2014
  • 17. AWS Gaming Solutions | GDC 2014 More CLI bell cd  MyGameAPI     eb  init   eb  start     vi  app.rb   require  'sinatra'   get  '/hello.json'  do      {message:  "Hello  World!"}   End     git  commit  –m  "app  updates"  app.rb   git  aws.push   •  Initialize everything •  Write code •  Commit to git •  Push to Beanstalk •  Coffee / Beer •  Repeat
  • 18. AWS Gaming Solutions | GDC 2014
  • 19. AWS Gaming Solutions | GDC 2014 Region Writing Is Painful Availability Zone A Availability Zone B S3 EC2 •  Games are Write Heavy •  Caching of Limited Use •  Key Value Key Value •  Binary Structures •  Database = Bottleneck ELB EC2 CloudFront CDN
  • 20. AWS Gaming Solutions | GDC 2014 Sharding (Not Fun) Availability Zone A C2
  • 21. AWS Gaming Solutions | GDC 2014 DynamoDB Availability Zone A Availability Zone B S3 •  NoSQL Data Store •  Fully-Managed •  Highly Available •  PUT/GET Keys •  Secondary Indexes •  Provisioned Throughput •  Auto Scaling EC2 EC2 ELB CloudFront CDN Elastic Beanstalk Container
  • 22. AWS Gaming Solutions | GDC 2014 Leaderboard in DynamoDB •  Hash key = Primary key •  Range key = Sub key •  Others attributes are unstructured, unindexed •  So… How to sort based on Top Score?
  • 23. AWS Gaming Solutions | GDC 2014 Leaderboard with Secondary Indexes •  Create a secondary index! •  Set hash key to Game Level •  Set range key to Top Score •  Can now query by Level, Sorted by Top Score •  Handles any (sane) gaming use case
  • 24. AWS Gaming Solutions | GDC 2014 Python Leaderboard table  =  Table('scores',  schema=[      HashKey('user'),      RangeKey('level')   ],   throughput={      'read':  5,  'write':  15   },  global_indexes=[      GlobalAllIndex('highscore',          parts=[              HashKey('level'),              RangeKey('score',  data_type=NUMBER)          ],          throughput={              'read':  5,  'write':  15          }      )   ])   new_score  =      Item(table,  data={          'user':    user,          'level':  level,          'score':  score        })   new_score.save()     topscores  =  table.query(index='highscore')     for  ts  in  topscores:      print(ts['user'],  ts['score'])    
  • 25. AWS Gaming Solutions | GDC 2014 Big picture slide
  • 26. AWS Gaming Solutions | GDC 2014 G2 Instance •  NVIDIA Kepler GPU •  Game Streaming •  Rendering Assets •  Build Servers •  AppStream!
  • 27. AWS Gaming Solutions | GDC 2014 C3 Instance •  High packets per second •  Very low latency, jitter •  Intel Ivy Bridge CPU •  SSD's •  Built for games •  15 cents / hour
  • 28. AWS Gaming Solutions | GDC 2014 Enhanced Networking (SR-IOV) Before: Hypervisor After: Hardware
  • 29. AWS Gaming Solutions | GDC 2014 Multiplayer Game Servers EC2EC2 EC2 Region •  Beanstalk App •  Core Session •  Matchmaking •  Public Server Tier •  Direct Client Socket •  Scale on Players •  CloudFront CDN •  DLC, Assets •  Game Saves •  UGC EC2
  • 30. AWS Gaming Solutions | GDC 2014 Multiplayer Game Servers ①  Login via Beanstalk ②  Request Matchmaking ③  Get Game Server IP EC2EC2 EC2 Region EC2
  • 31. AWS Gaming Solutions | GDC 2014 Multiplayer Game Servers ①  Login via Beanstalk ②  Request Matchmaking ③  Get Game Server IP ④  Connect to Server ⑤  Pull Down Assets ⑥  Other Players Join EC2EC2 EC2 Region EC2
  • 32. AWS Gaming Solutions | GDC 2014 Multiplayer Game Servers ①  Login via Beanstalk ②  Request Matchmaking ③  Get Game Server IP ④  Connect to Server ⑤  Pull Down Assets ⑥  Other Players Join ⑦  Game Ends ⑧  Update Stats EC2EC2 EC2 Region EC2
  • 33. AWS Gaming Solutions | GDC 2014 Multi-Region Game Servers E2 Region EC2 Region
  • 34. AWS Gaming Solutions | GDC 2014 Big picture slide
  • 35. AWS Gaming Solutions | GDC 2014 Messages and Queues ELB S3 •  Simple Notification Service •  HTTP •  SMS •  Mobile Push EC2EC2EC2 Region
  • 36. AWS Gaming Solutions | GDC 2014 Messages and Queues ELB •  Simple Notification Service •  HTTP •  SMS •  Mobile Push •  CloudWatch •  Monitoring •  Alerts EC2EC2EC2 Region EC2 PUB
  • 37. AWS Gaming Solutions | GDC 2014 Messages and Queues ELB EC2EC2EC2 Region EC2EC2 •  Simple Notification Service •  HTTP •  SMS •  Mobile Push •  CloudWatch •  Monitoring •  Alerts •  SQS •  Background Tasks •  Avatar Resizing •  Score Processing
  • 38. AWS Gaming Solutions | GDC 2014 Messages and Queues ELB EC2EC2EC2 Region EC2EC2 •  Simple Notification Service •  HTTP •  SMS •  Mobile Push •  CloudWatch •  Monitoring •  Alerts •  SQS •  Background Tasks •  Avatar Resizing •  Score Processing
  • 39. AWS Gaming Solutions | GDC 2014 Messages and Queues ELB EC2EC2EC2 Region EC2EC2 •  Simple Notification Service •  HTTP •  SMS •  Mobile Push •  CloudWatch •  Monitoring •  Alerts •  SQS •  Background Tasks •  Avatar Resizing •  Score Processing PUB
  • 40. AWS Gaming Solutions | GDC 2014 Wrap It Up Already •  Start Simple With Beanstalk •  Go Directly to DynamoDB, Do Not Pass Go •  CloudFront + S3 for Download and Upload •  Add Multiplayer - Hybrid •  Use the EC2 C3 Instance •  SQS to Decouple and Scale
  • 41. AWS Gaming Solutions | GDC 2014 Cheers – Nate Wiger @nateware