Download - AWS Architecture - GDC 2014
![Page 1: AWS Architecture - GDC 2014](https://reader034.vdocuments.net/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.net/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.net/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.net/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.net/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.net/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.net/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/7.jpg)
AWS Gaming Solutions | GDC 2014
![Page 8: AWS Architecture - GDC 2014](https://reader034.vdocuments.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/16.jpg)
AWS Gaming Solutions | GDC 2014
![Page 17: AWS Architecture - GDC 2014](https://reader034.vdocuments.net/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.net/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/18.jpg)
AWS Gaming Solutions | GDC 2014
![Page 19: AWS Architecture - GDC 2014](https://reader034.vdocuments.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/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.net/reader034/viewer/2022051110/54c666d84a795928268b45b2/html5/thumbnails/41.jpg)
AWS Gaming Solutions | GDC 2014
Cheers – Nate Wiger @nateware