Download - AWS Architecture - GDC 2014

Transcript
Page 1: AWS Architecture - GDC 2014

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

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

AWS Gaming Solutions | GDC 2014

Gratuitous Logo Slide

Page 4: AWS Architecture - GDC 2014

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

AWS Gaming Solutions | GDC 2014

Pay As You Scale

Page 6: AWS Architecture - GDC 2014

AWS Gaming Solutions | GDC 2014

10 Regions

51 CloudFront POPs

Continuous Expansion

Global Is Good

Page 7: AWS Architecture - GDC 2014

AWS Gaming Solutions | GDC 2014

Page 8: AWS Architecture - 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

Page 9: AWS Architecture - GDC 2014

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

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

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

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

AWS Gaming Solutions | GDC 2014

Big picture slide

Page 14: AWS Architecture - GDC 2014

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

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

AWS Gaming Solutions | GDC 2014

Page 17: AWS Architecture - 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

Page 18: AWS Architecture - GDC 2014

AWS Gaming Solutions | GDC 2014

Page 19: AWS Architecture - 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

Page 20: AWS Architecture - GDC 2014

AWS Gaming Solutions | GDC 2014

Sharding (Not Fun)

Availability

Zone A

C2

Page 21: AWS Architecture - GDC 2014

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

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

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

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

AWS Gaming Solutions | GDC 2014

Big picture slide

Page 26: AWS Architecture - GDC 2014

AWS Gaming Solutions | GDC 2014

G2 Instance

• NVIDIA Kepler GPU

• Game Streaming

• Rendering Assets

• Build Servers

• AppStream!

Page 27: AWS Architecture - GDC 2014

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

AWS Gaming Solutions | GDC 2014

Enhanced Networking (SR-IOV)

Before:

Hypervisor

After:

Hardware

Page 29: AWS Architecture - GDC 2014

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

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

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

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

AWS Gaming Solutions | GDC 2014

Multi-Region Game Servers

E2

Region

EC2

Region

Page 34: AWS Architecture - GDC 2014

AWS Gaming Solutions | GDC 2014

Big picture slide

Page 35: AWS Architecture - GDC 2014

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

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

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

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

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

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

AWS Gaming Solutions | GDC 2014

Cheers – Nate Wiger @nateware