aws architecture - gdc 2014
DESCRIPTION
Mobile, AAA, and MMO game companies alike are leveraging AWS to build cost-effective, scalable online games. Learn how game studios are using AWS services such as Elastic Beanstalk, DynamoDB, Amazon S3, CloudFront, and ElastiCache to build online games that can scale from 1,000 to 1,000,000 users, while paying only for what they use. Finally, we'll share some thoughts about the future of cloud gaming based on trends we're seeing worldwide.TRANSCRIPT
![Page 1: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/1.jpg)
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
![Page 2: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/2.jpg)
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
![Page 3: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/3.jpg)
AWS Gaming Solutions | GDC 2014
Gratuitous Logo Slide
![Page 4: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/4.jpg)
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
![Page 5: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/5.jpg)
AWS Gaming Solutions | GDC 2014
Pay As You Scale
![Page 6: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/6.jpg)
AWS Gaming Solutions | GDC 2014
10 Regions
51 CloudFront POPs
Continuous Expansion
Global Is Good
![Page 7: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/7.jpg)
AWS Gaming Solutions | GDC 2014
![Page 8: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/8.jpg)
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
![Page 9: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/9.jpg)
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
![Page 10: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/10.jpg)
AWS Gaming Solutions | GDC 2014
Scale It Way Out
ELB
S3
• Auto Scaling Group
• Capacity on Demand
• Respond to Users
EC2 EC2 EC2
Region
![Page 11: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/11.jpg)
AWS Gaming Solutions | GDC 2014
Scale It Way Out
ELB
S3
• Auto Scaling Group
• Capacity on Demand
• Respond to Users
• ElastiCache
• Memcache
• Redis EC2 EC2 EC2
Region
![Page 12: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/12.jpg)
AWS Gaming Solutions | GDC 2014
Scale It Way Out
CloudFront
CDN
ELB
S3
EC2 EC2 EC2
Region
• Auto Scaling Group
• Capacity on Demand
• Respond to Users
• ElastiCache
• Memcache
• Redis
• CloudFront CDN
• DLC, Assets
• Game Saves
• UGC
![Page 13: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/13.jpg)
AWS Gaming Solutions | GDC 2014
Big picture slide
![Page 14: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/14.jpg)
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
![Page 15: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/15.jpg)
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
![Page 16: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/16.jpg)
AWS Gaming Solutions | GDC 2014
![Page 17: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/17.jpg)
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
![Page 18: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/18.jpg)
AWS Gaming Solutions | GDC 2014
![Page 19: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/19.jpg)
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
![Page 20: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/20.jpg)
AWS Gaming Solutions | GDC 2014
Sharding (Not Fun)
Availability
Zone A
C2
![Page 21: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/21.jpg)
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
![Page 22: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/22.jpg)
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?
![Page 23: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/23.jpg)
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
![Page 24: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/24.jpg)
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'])
![Page 25: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/25.jpg)
AWS Gaming Solutions | GDC 2014
Big picture slide
![Page 26: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/26.jpg)
AWS Gaming Solutions | GDC 2014
G2 Instance
• NVIDIA Kepler GPU
• Game Streaming
• Rendering Assets
• Build Servers
• AppStream!
![Page 27: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/27.jpg)
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
![Page 28: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/28.jpg)
AWS Gaming Solutions | GDC 2014
Enhanced Networking (SR-IOV)
Before:
Hypervisor
After:
Hardware
![Page 29: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/29.jpg)
AWS Gaming Solutions | GDC 2014
Multiplayer Game Servers
EC2 EC2 EC2
Region
• Beanstalk App
• Core Session
• Matchmaking
• Public Server Tier
• Direct Client Socket
• Scale on Players
• CloudFront CDN
• DLC, Assets
• Game Saves
• UGC
EC2
![Page 30: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/30.jpg)
AWS Gaming Solutions | GDC 2014
Multiplayer Game Servers
① Login via Beanstalk
② Request Matchmaking
③ Get Game Server IP
EC2 EC2 EC2
Region
EC2
![Page 31: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/31.jpg)
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
EC2 EC2 EC2
Region
EC2
![Page 32: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/32.jpg)
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
EC2 EC2 EC2
Region
EC2
![Page 33: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/33.jpg)
AWS Gaming Solutions | GDC 2014
Multi-Region Game Servers
E2
Region
EC2
Region
![Page 34: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/34.jpg)
AWS Gaming Solutions | GDC 2014
Big picture slide
![Page 35: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/35.jpg)
AWS Gaming Solutions | GDC 2014
Messages and Queues
ELB
S3
• Simple Notification Service
• HTTP
• SMS
• Mobile Push
EC2 EC2 EC2
Region
![Page 36: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/36.jpg)
AWS Gaming Solutions | GDC 2014
Messages and Queues
ELB
• Simple Notification Service
• HTTP
• SMS
• Mobile Push
• CloudWatch
• Monitoring
• Alerts
EC2 EC2 EC2
Region
EC2
PUB
![Page 37: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/37.jpg)
AWS Gaming Solutions | GDC 2014
Messages and Queues
ELB
EC2 EC2 EC2
Region
EC2 EC2
• Simple Notification Service
• HTTP
• SMS
• Mobile Push
• CloudWatch
• Monitoring
• Alerts
• SQS
• Background Tasks
• Avatar Resizing
• Score Processing
![Page 38: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/38.jpg)
AWS Gaming Solutions | GDC 2014
Messages and Queues
ELB
EC2 EC2 EC2
Region
EC2 EC2
• Simple Notification Service
• HTTP
• SMS
• Mobile Push
• CloudWatch
• Monitoring
• Alerts
• SQS
• Background Tasks
• Avatar Resizing
• Score Processing
![Page 39: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/39.jpg)
AWS Gaming Solutions | GDC 2014
Messages and Queues
ELB
EC2 EC2 EC2
Region
EC2 EC2
• Simple Notification Service
• HTTP
• SMS
• Mobile Push
• CloudWatch
• Monitoring
• Alerts
• SQS
• Background Tasks
• Avatar Resizing
• Score Processing
PUB
![Page 40: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/40.jpg)
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
![Page 41: AWS Architecture - GDC 2014](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/41.jpg)
AWS Gaming Solutions | GDC 2014
Cheers – Nate Wiger @nateware