SlideShare ist ein Scribd-Unternehmen logo
1 von 73
Downloaden Sie, um offline zu lesen
© 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Evan Pipho - Warner Bros. Games - Turbine Platform Lead - MGP
William Day - Warner Bros. Games - Turbine Senior Software Engineer
Romesh McCullough - Warner Bros. Games - Turbine Staff Software Engineer
October 2015
GAM 402
Turbine: A Microservice Approach to
3 Billion Requests per Day
What to expect from the session
• Handling gaming workloads on AWS
• Personal experiences from a AAA multiplatform game
launch
• Containerized service platform on CoreOS and AWS
• Scaling MongoDB
Challenges
1. Managing multiple games on AWS
2. Scale
3. Pick your battles
4. MongoDB at scale
5. Staying up through launch
A bit about us!
• Founded in 1994, acquired by WB in 2010
• Pioneer in online games
• Work with huge properties (LoTR, D&D,
DC Comics)
• Launching our first mobile game
We support lots of WB titles
Turbine’s platforms
WBPlay game (WBG): Customized cross-platform, cross-
studio game back end and analytics
Mobile game platform (MGP): Next gen game back end
for Turbine games
Analytics platform: Analytics data crunching for WBIE
WBPlay identity: Identity and e-commerce
We will be discussing the first two
WBG and MGP
Currently powering
• Batman: Arkham Underworld
• Unnamed AAA multiplatform game
Provides:
• Authentication
• Profiles
• Matchmaking
• Match history
• Guilds
• Cross-platform unlocks
• Feeds
• Social identity mapping
• Analytics events
• Data center capacity
• Unknown infrastructure footprint
• Platform automation
• Bursty gaming workloads
• Multiple Availability Zones
Why AWS?
• Support multiple games, studios, environments, and teams
• One game / environment cannot affect another
• Access control
• Centralized services access
Challenge 1: How to set up AWS?
Multiple AWS accounts
Cons
Management overhead
Must be automated
Pros
Service limits can’t clash
Simplified billing allocation
Digestible chunks of infrastructure
• One account per game
• One VPC per environment
• One account for internal core services
Game 2 Account
Game 2
Prod
Game 2 Dev
Game 2 Stage
Game 2 Load
Test
VPC Peering
Game 1 Account
Game 1
Prod
Game 1
Dev
Game 1
Stage
Game 1
Load Test
VPC Peering
Game
Production
VPC’s cannot
communicate
directly
Prod & Non
Prod VPC’s
cannot
communicate
Turbine Ops Services AWS Account
Turbine
Ops
Services
US-EAST-1
Globally unique addressing
• Central route table entries must be unique
• Provisioned 5 / 20s for 5 environments up front
• VPC IP space divided into 3 public and 3 private subnets in 3 AZs
• Bitmask to precompute consistent VPC blocks
Architecture Overview
Overview
ZONE
WBG
Game Data
MGP
Event Ingestion
WBG
WBG
Game Data
MGP
Event Ingestion
WBG overview
• Game back end and analytics
• Monolithic code base
• Python on Linux
• MongoDB and Redis
• Custom binary message formats
• Console and Mobile SDK
• Chef (solo)
WBG high level
Proxy Layer
RabbitMQ
Feed
Service
Profile
Service
Auth
Service
Match-
making
…Servi
ce
Data Layer
WBG at scale
• High availability
• Isolated from public internet
• Load balancers
• Scaling application components
• Scaling MongoDB
• Configuration management automation
• High availability Redis
Mobile Client
Internet
us-east-1
AZ-1a
AZ-1b
AZ-1c
Private Translator Subnet
Private MongoDB Subnet
Public
NAT
Subnet
NAT-SG
NAT-1
Public
NAT
Subnet
NAT-SG
NAT-2
NATHeartbeat
Redis Master Redis Replica
Mongo
Primary
Log &
Journal
GP2
GP2
Mongo
Secondary
Amazon S3
bucket
Public
Bastion
Subnet
BAS-SG
Bastion
Host
Corporate
DataCenter
VPN
connection
VGW
Private MongoDB Subnet
Mongo
Shard 1
Primary
Mongo
Shard N
Primary
Config
Server
MONGO-SG
Config
Server
VPC
Peering
AZ-1a
Public
Bastion
Subnet
Bastion
Host
IGW
Bastion
Host
Private
Core Svs
Subnet
BAS-SG
Docker
Registry
Drone
Servers
Jenkins
ServersPrivate REDIS
Subnet
Private REDIS
Subnet
CACHE-SG
PROXY PROXY PROXY
DNS
ELB
Private RabbitMQ Subnet
RABBIT-
MQ
Private Services Subnet
Profile
Services
Feed
Services
Leader
Boards
Auth
Services
BiS
Services
……
Data
GP2
Log &
Journal
Data
GP2GP2
Private Translator Subnet
PROXY PROXY PROXY
Private RabbitMQ Subnet
RABBIT-
MQ
Private Services Subnet
Profile
Services
Feed
Services
Leader
Boards
Auth
Services
BiS
Services
……
Private MongoDB Subnet
Log &
Journal
GP2Mongo
Shard 1
Primary
Mongo
Shard N
Primary
Config
Server
Data
GP2
Log &
Journal
Data
GP2GP2 Mongo
Arbiter
IGW
Challenge 2: Scale
• Game clients being finalized close to launch
• Difficult to distribute prerelease builds
• Multiplatform differences
• Multistudio ports
• Hard to establish metric baselines
Pre-emptive AWS capacity planning
• Elastic Load Balancing prewarming
• Amazon EC2 limit increases
• 500 C4 and R3, per size
• Amazon Elastic Block Store (EBS) limit
• 192TB GP2
• Amazon S3 bucket partitioning
Instrumentation
• Preproduction metrics measured externally
• Load test clients
• Amazon CloudWatch
• Late addition of internal metrics
• Statsd -> Librato
• No baselines for key metrics, so we instrumented all
the things
Operational complexity
• Nine scalable components for just the app layer
• Scaling HA RabbitMQ
• MongoDB sharding
• Redis sharding
Mobile Client
Internet
us-east-1
AZ-1a
AZ-1b
AZ-1c
Private Translator Subnet
Private MongoDB Subnet
Public
NAT
Subnet
NAT-SG
NAT-1
Public
NAT
Subnet
NAT-SG
NAT-2
NATHeartbeat
Redis Master Redis Replica
Mongo
Primary
Log &
Journal
GP2
GP2
Mongo
Secondary
Amazon S3
bucket
Public
Bastion
Subnet
BAS-SG
Bastion
Host
Corporate
DataCenter
VPN
connection
VGW
Private MongoDB Subnet
Mongo
Shard 1
Primary
Mongo
Shard N
Primary
Config
Server
MONGO-SG
Config
Server
VPC
Peering
AZ-1a
Public
Bastion
Subnet
Bastion
Host
IGW
Bastion
Host
Private
Core Svs
Subnet
BAS-SG
Chef
Servers
Drone
Servers
Jenkins
ServersPrivate REDIS
Subnet
Private REDIS
Subnet
CACHE-SG
PROXY PROXY PROXY
DNS
ELB
Private RabbitMQ Subnet
RABBIT-
MQ
Private Services Subnet
Profile
Services
Feed
Services
Leader
Boards
Auth
Services
BiS
Services
……
Data
GP2
Log &
Journal
Data
GP2GP2
Private Translator Subnet
PROXY PROXY PROXY
Private RabbitMQ Subnet
RABBIT-
MQ
Private Services Subnet
Profile
Services
Feed
Services
Leader
Boards
Auth
Services
BiS
Services
……
Private MongoDB Subnet
Log &
Journal
GP2Mongo
Shard 1
Primary
Mongo
Shard N
Primary
Config
Server
Data
GP2
Log &
Journal
Data
GP2GP2 Mongo
Arbiter
IGW
WBG “slice”
• Entire stack on a single instance
• Baked AMI
• One ASG for whole app layer Proxy
RabbitMQ
Feed Auth BIS ...
Pros
Simplified scaling decisions and troubleshooting
Simplified build and deploy
Coarser control
Cons
Easy to be resource inefficient
Coarser control
Mobile Client
Internet
us-east-1
AZ-1a
AZ-1b
AZ-1c
Private Translator Subnet
Private MongoDB Subnet
Public
NAT
Subnet
NAT-SG
NAT-1
Public
NAT
Subnet
NAT-SG
NAT-2
Redis Master Redis Replica
Mongo
Primary
Log &
Journal
GP2
GP2
Mongo
Secondary
Amazon S3
bucket
Public
Bastion
Subnet
BAS-SG
Bastion
Host
Corporate
DataCenter
VPN
connection
VGW
Private MongoDB Subnet
Mongo
Shard 1
Primary
Mongo
Shard N
Primary
Config
Server
MONGO-SG
Config
Server
VPC
Peering
AZ-1a
Public
Bastion
Subnet
Bastion
Host
IGW
Bastion
Host
Private
Core Svs
Subnet
BAS-SG
Chef
Servers
Drone
Servers
Jenkins
ServersPrivate REDIS
Subnet
Private REDIS
Subnet
CACHE-SG
PROXY PROXY PROXY
DNS
ELB
Private RabbitMQ Subnet
RABBIT-
MQ
Private Services Subnet
Profile
Services
Feed
Services
Leader
Boards
Auth
Services
BiS
Services
……
Data
GP2
Log &
Journal
Data
GP2GP2
Private Translator Subnet
PROXY PROXY PROXY
Private RabbitMQ Subnet
RABBIT-
MQ
Private Services Subnet
Profile
Services
Feed
Services
Leader
Boards
Auth
Services
BiS
Services
……
Private MongoDB Subnet
Log &
Journal
GP2Mongo
Shard 1
Primary
Mongo
Shard N
Primary
Config
Server
Data
GP2
Log &
Journal
Data
GP2GP2 Mongo
Arbiter
IGW
Mobile Client
Internet
us-east-1
AZ-1a
AZ-1b
AZ-1c
Private Slice Subnet
Private MongoDB Subnet
Public
NAT
Subnet
NAT-SG
NAT-1
Public
NAT
Subnet
NAT-SG
NAT-2
Redis Master Redis Replica
Mongo
Primary
GP2Mongo
Secondary
Public
Bastion
Subnet
BAS-SG
Bastion
Host
Corporate
DataCenter
VPN
connection
VGW
Private MongoDB Subnet
MONGO-SG
Config
Server
VPC
Peering
AZ-1a
Public
Bastion
Subnet
Bastion
Host
IGW
Bastion
Host
Private
Core Svs
Subnet
BAS-SG
Chef
Servers
Drone
Servers
Jenkins
ServersPrivate REDIS
Subnet
Private REDIS
Subnet
CACHE-SG
SLICE SLICE SLICE
DNS
ELB
Private MongoDB Subnet
Mongo
Arbiter
IGW
Amazon S3
bucket
S3
Endpoint
Private Slice Subnet
SLICE SLICE SLICE
GP2
Mongo
Shard 1
Primary
Mongo
Shard N
Primary
Config
Server
Data
GP2
Data
GP2GP2
Mongo
Shard N
Primary
GP2
Mongo
Shard 1
Primary
Mongo
Shard N
Primary
Config
Server
Data
GP2
Data
GP2GP2
Mongo
Shard N
Primary
Challenge 3: Event log
• WBG services fire events, stored in Mongo
• Batch process scrapes and dumps daily
Pros
We already have the data “here”
Events from server-side callbacks
Clients already integrated
Cons
Huge Mongo performance hit
Huge Mongo storage footprint
Rabbit message rate amplification
Duration of scraper process
Large halo
MGP
Mobile game platform team
• Microservices architecture
• Go, Docker, CoreOS, AWS
• Next generation platform being written and deployed in
parallel to WBG
• HTTP + REST
• Green-field
MGP Microservices
Feature Benefit
HTTP + REST API contracts minimize surprises
Do “One Thing” Focused code base sanity
Datastore per-service Per-service tuning and scaling
Config in Consul HA central management with a good API
Config cached at
startup
Quick lookups, protects from outages
Encryption key rotated
every deploy
Automatic and easy secure secrets
How we use containers
Feature Benefit
From scratch
containers
No OS in the container means tiny containers
<1MB on the wire Tiny containers means ultra-fast deploys
Deployment
conformity
Proprietary and third party apps deploy the same
way
Deployment certainty Git sha in tag ensures app version
Docker
“--cap-drop-all”
Improved security stance
MGP: CoreOS architecture
MGP: CoreOS architecture
MGP: Sidekicks
MGP: Sidekicks
Event ingestion
Pros
Independent scaling
Supports real-time analytics
Isolated service
Cons
New client integration
• Built to replace event log
• First public MGP service
• Clients send events direct to standalone service
• Service dumps data in Kafka
• Analytics team consumes from Kafka as fast as they want
Event ingestion traffic flow
● ELB used to help Kafka broker discovery
● Amazon Route53 alias for easy configuration
Event ingestion: Benchmarks
Event ingestion
• 200 k requests/second
• 250 byte messages
• 1-6 messages/request
• 15x c4.large @ 75% cpu
Kafka
• 250 k messages/second
• 20 partitions per topic
• Replication factor of 2
• 6 brokers
• r3.xlarge per broker
• 1x 10TB GP2 per broker
Side by side
WBG
Game Data
MGP
Event Ingestion
More Challenges…Launch Time
NEW PLAYERS/SEC
Midnight release!
All the traffic, exactly
at midnight
Average rate
after launch
Three problems at scale
1.Mongodb Oplog data
2.Read queues under load causing service backlogs
3.Frequent Mongodb failovers
Challenge 4: MongoDB
MongoDB architecture
• 3 node sharded
replica set
• Multiple shards
• Mongo 2.6.9
• r3.2xl
• 2TB GP2
• 3 AZ’s
1 Shard
Symptoms
• up to 100 of GB/h in oplog data per shard!
• TB of data per day to back up
• Unable to use off-the-shelf backup solutions
MongoDB: Oplog data
Why?
• Application bug read / wrote too much data
• Unexpectedly chatty clients
• Clients that did not send diffs
Solution
• Fixed bug (update only document keys that were
changed)
• Patched client to send significantly less updates
MongoDB: Oplog data
MongoDB scaling timeline
6
shards
r3.2xl
6 shards
r3.4xl
6 shards
r3.8xl
12 shards
r3.8xl
24 shards
r3.8xl
24 shards
r3.4xl
24 shards
r3.2xl
Stability over time
Write lock problems Failovers from process stalls Stable
MongoDB: Read queue backlog
Symptoms
• Huge spikes in queued operations
• Predominantly read operations
• Relatively low lock percentage (~20-30)%
MongoDB: Read queue backlog
20 k!
Queue Backlog
• 80 k reads/sec
• 3 k writes/sec
• 50 k100 k write size
• 20% lock (average)
• No I/O bottleneck
MongoDB: Write lock
Write lock
(micros) 95% is 2 ms!
Cumulative frequency
MongoDB: Read queue backlog
Why?
• Very long write locks increased impact of low lock percentage
• Linux kernel known issue, frequent and slow context switches
• Document moves
Solutions
• Newer Linux kernel (halved the number of context switches)
• Doubled number of shards twice
MongoDB scaling timeline
6
shards
r3.2xl
6 shards
r3.4xl
6 shards
r3.8xl
12 shards
r3.8xl
24 shards
r3.8xl
24 shards
r3.4xl
24 shards
r3.2xl
Stability over time
Write lock problems Failovers from process stalls Stable
Symptoms
• Spikes in system CPU
• Mongod stall
• Mongo elections
• “Network” partition to replica set members
• Application queue backups
MongoDB: Mystery failovers
Why?
• Too much RAM
• Linux memory compaction taking too long
• Busy processes (mongod) had to wait
Solution
• Reduced instance size to r3.2xl
• Less memory = faster and more frequent memory compaction
• Scale out widely with smaller instances
MongoDB: Mystery failovers
MongoDB scaling timeline
6
shards
r3.2xl
6 shards
r3.4xl
6 shards
r3.8xl
12 shards
r3.8xl
24 shards
r3.8xl
24 shards
r3.4xl
24 shards
r3.2xl
Stability over time
Write lock problems Failovers from process stalls Stable
CDF’s are awesome for bottleneck analysis
import numpy as np
from pylab import *
writelocks = np.loadtxt(“writelocks.csv”)
num_bins = 100
counts, bin_edges = np.histogram(writelocks, bins=num_bins, density=True)
cdf = np.cumsum(counts*np.diff(bin_edges))
idx = next(i for i, v in enumerate(cdf) if v >= 0.95)
plot(bin_edges[1:], cdf)
plot([0, 10000],[0.95, 0.95])
plot([bin_edges[idx], bin_edges[idx]], [0, 1])
ylim([0,1])
show()
• Needed to buy time to solve back-end issues
• Game is live; we can’t pull it
• Specific calls were causing stack problems
• Some calls were low value to the client, but high
impact on the back end
Challenge 5: Selective degradation
Nginx is your friend
• Caching of “uncacheable” calls
• Rate limiting by single endpoint or service
• Confd+Consul allowed for easy updates
• Different definitions of “real time”
• Caching 2 endpoints saved 50% app layer network
throughput
• Smoothed out everything
Caching
Established TCP ConnectionsELB LatencyMongo Lock %
Caching with Nginx
Some Problems...
• Nginx caches on disk
• Large requests are not good for Nginx proxy defaults
• Caching too much; needed to tune proxy_min_uses
• Small EBS root volume became an unexpected bottleneck
• Unexpected disk usage pattern also consumed all inodes with
default ext4 settings
Throttling
• Focused on highest impact calls first
• Poorly indexed queries
• Chatty writes from clients
• Reduced the number of writes to allow reads
• Blocked unexpectedly bad but low-customer-impact
calls
• Used detailed metrics
Problems with throttling
• Clients behave in different ways
• Multistep auth caused more failures than individual
rates would imply
• Induced client retry storms
• Single failure forced some clients into offline mode
Post Mortem
Metric overload
• Don’t display graphs unless there’s a problem or
someone will find one
• Measure everything = mysteries everywhere
• Outliers
• Because the Internet
• Measure everything, show important things
Soft launch if you can
• Build baselines
• Test / validate your metrics
• Confirm graphs mean what you think they mean
Soft launch if you can
• Real players create real data
• Flexible APIs let clients do “flexible” things
• Look at your soft launch data and usage patterns
Your blast radius scales too
• Vendor contacts before launch
• Other internal team contacts too
• Let them know before something big happens
• Blast radius can be more than just you
Pick your battles
• Solve your biggest problem first
• Use AWS scalability to buy time to find root causes
• Make sure you have someone dedicated to triage
• Don’t need to rewrite everything
• Share APIs, not data
The future
• More microservices
• Embrace immutability
• More cross-team collaboration
• More Amazon support (Thanks, Dhruv)
• Come work for us!
Special thanks
Turbine: WBPlay
Turbine: MGP
Turbine: Cloud solutions and integration
Amazon  TAMs and Dhruv are the best
Librato support
MongoDB support
Splunk Cloud support
Contact us
Evan Pipho:
epipho@turbine.com
William Day:
wday@turbine.com
Romesh McCullough
rmccullough@turbine.com
www.turbine.com/careers
Thank you!
Remember to complete
your evaluations!

Weitere ähnliche Inhalte

Was ist angesagt?

(GAM304) How Riot Games re:Invented Their AWS Model | AWS re:Invent 2014
(GAM304) How Riot Games re:Invented Their AWS Model | AWS re:Invent 2014(GAM304) How Riot Games re:Invented Their AWS Model | AWS re:Invent 2014
(GAM304) How Riot Games re:Invented Their AWS Model | AWS re:Invent 2014Amazon Web Services
 
Intro to Game Development & Operations on AWS
Intro to Game Development & Operations on AWSIntro to Game Development & Operations on AWS
Intro to Game Development & Operations on AWSAmazon Web Services
 
Amazon EC2 Container Service: Deep Dive
Amazon EC2 Container Service: Deep DiveAmazon EC2 Container Service: Deep Dive
Amazon EC2 Container Service: Deep DiveAmazon Web Services
 
Deep Dive: Amazon Lumberyard & Amazon GameLift
Deep Dive: Amazon Lumberyard & Amazon GameLiftDeep Dive: Amazon Lumberyard & Amazon GameLift
Deep Dive: Amazon Lumberyard & Amazon GameLiftAmazon Web Services
 
Deep Dive on Elastic Load Balancing
Deep Dive on Elastic Load BalancingDeep Dive on Elastic Load Balancing
Deep Dive on Elastic Load BalancingAmazon Web Services
 
Deep Dive on Microservices and Amazon ECS
Deep Dive on Microservices and Amazon ECSDeep Dive on Microservices and Amazon ECS
Deep Dive on Microservices and Amazon ECSAmazon Web Services
 
Continuous Delivery with Docker and Amazon ECS
Continuous Delivery with Docker and Amazon ECSContinuous Delivery with Docker and Amazon ECS
Continuous Delivery with Docker and Amazon ECSAmazon Web Services
 
Amazon ECS Container Service Deep Dive
Amazon ECS Container Service Deep DiveAmazon ECS Container Service Deep Dive
Amazon ECS Container Service Deep DiveAmazon Web Services
 
AWS re:Invent 2016: Securing Container-Based Applications (CON402)
AWS re:Invent 2016: Securing Container-Based Applications (CON402)AWS re:Invent 2016: Securing Container-Based Applications (CON402)
AWS re:Invent 2016: Securing Container-Based Applications (CON402)Amazon Web Services
 
Docker clusters on AWS with Amazon ECS and Kubernetes
Docker clusters on AWS with Amazon ECS and KubernetesDocker clusters on AWS with Amazon ECS and Kubernetes
Docker clusters on AWS with Amazon ECS and KubernetesJulien SIMON
 
Advanced Security Masterclass - Tel Aviv Loft
Advanced Security Masterclass - Tel Aviv LoftAdvanced Security Masterclass - Tel Aviv Loft
Advanced Security Masterclass - Tel Aviv LoftIan Massingham
 
AWS re:Invent 2016| GAM401 | Riot Games: Standardizing Application Deployment...
AWS re:Invent 2016| GAM401 | Riot Games: Standardizing Application Deployment...AWS re:Invent 2016| GAM401 | Riot Games: Standardizing Application Deployment...
AWS re:Invent 2016| GAM401 | Riot Games: Standardizing Application Deployment...Amazon Web Services
 
Workshop: Serverless DevOps to the Rescue
Workshop: Serverless DevOps to the RescueWorkshop: Serverless DevOps to the Rescue
Workshop: Serverless DevOps to the RescueAmazon Web Services
 
AWS re:Invent 2016: Test and Debug Your Mobile Apps on Real Android and iOS D...
AWS re:Invent 2016: Test and Debug Your Mobile Apps on Real Android and iOS D...AWS re:Invent 2016: Test and Debug Your Mobile Apps on Real Android and iOS D...
AWS re:Invent 2016: Test and Debug Your Mobile Apps on Real Android and iOS D...Amazon Web Services
 
Deep Dive on Microservices and Amazon ECS
Deep Dive on Microservices and Amazon ECSDeep Dive on Microservices and Amazon ECS
Deep Dive on Microservices and Amazon ECSAmazon Web Services
 

Was ist angesagt? (20)

(GAM304) How Riot Games re:Invented Their AWS Model | AWS re:Invent 2014
(GAM304) How Riot Games re:Invented Their AWS Model | AWS re:Invent 2014(GAM304) How Riot Games re:Invented Their AWS Model | AWS re:Invent 2014
(GAM304) How Riot Games re:Invented Their AWS Model | AWS re:Invent 2014
 
Intro to Game Development & Operations on AWS
Intro to Game Development & Operations on AWSIntro to Game Development & Operations on AWS
Intro to Game Development & Operations on AWS
 
Amazon EC2 Container Service: Deep Dive
Amazon EC2 Container Service: Deep DiveAmazon EC2 Container Service: Deep Dive
Amazon EC2 Container Service: Deep Dive
 
Amazon ECS Deep Dive
Amazon ECS Deep DiveAmazon ECS Deep Dive
Amazon ECS Deep Dive
 
Deep Dive: Amazon Lumberyard & Amazon GameLift
Deep Dive: Amazon Lumberyard & Amazon GameLiftDeep Dive: Amazon Lumberyard & Amazon GameLift
Deep Dive: Amazon Lumberyard & Amazon GameLift
 
Deep Dive on Elastic Load Balancing
Deep Dive on Elastic Load BalancingDeep Dive on Elastic Load Balancing
Deep Dive on Elastic Load Balancing
 
Deep Dive on Microservices and Amazon ECS
Deep Dive on Microservices and Amazon ECSDeep Dive on Microservices and Amazon ECS
Deep Dive on Microservices and Amazon ECS
 
Continuous Delivery with Docker and Amazon ECS
Continuous Delivery with Docker and Amazon ECSContinuous Delivery with Docker and Amazon ECS
Continuous Delivery with Docker and Amazon ECS
 
Amazon ECS Container Service Deep Dive
Amazon ECS Container Service Deep DiveAmazon ECS Container Service Deep Dive
Amazon ECS Container Service Deep Dive
 
AWS re:Invent 2016: Securing Container-Based Applications (CON402)
AWS re:Invent 2016: Securing Container-Based Applications (CON402)AWS re:Invent 2016: Securing Container-Based Applications (CON402)
AWS re:Invent 2016: Securing Container-Based Applications (CON402)
 
Docker clusters on AWS with Amazon ECS and Kubernetes
Docker clusters on AWS with Amazon ECS and KubernetesDocker clusters on AWS with Amazon ECS and Kubernetes
Docker clusters on AWS with Amazon ECS and Kubernetes
 
Advanced Security Masterclass - Tel Aviv Loft
Advanced Security Masterclass - Tel Aviv LoftAdvanced Security Masterclass - Tel Aviv Loft
Advanced Security Masterclass - Tel Aviv Loft
 
Development Workflows on AWS
Development Workflows on AWSDevelopment Workflows on AWS
Development Workflows on AWS
 
AWS re:Invent 2016| GAM401 | Riot Games: Standardizing Application Deployment...
AWS re:Invent 2016| GAM401 | Riot Games: Standardizing Application Deployment...AWS re:Invent 2016| GAM401 | Riot Games: Standardizing Application Deployment...
AWS re:Invent 2016| GAM401 | Riot Games: Standardizing Application Deployment...
 
Workshop: Serverless DevOps to the Rescue
Workshop: Serverless DevOps to the RescueWorkshop: Serverless DevOps to the Rescue
Workshop: Serverless DevOps to the Rescue
 
Containers on AWS
Containers on AWSContainers on AWS
Containers on AWS
 
Amazon ECS
Amazon ECSAmazon ECS
Amazon ECS
 
AWS re:Invent 2016: Test and Debug Your Mobile Apps on Real Android and iOS D...
AWS re:Invent 2016: Test and Debug Your Mobile Apps on Real Android and iOS D...AWS re:Invent 2016: Test and Debug Your Mobile Apps on Real Android and iOS D...
AWS re:Invent 2016: Test and Debug Your Mobile Apps on Real Android and iOS D...
 
Architecting for Resiliency
Architecting for ResiliencyArchitecting for Resiliency
Architecting for Resiliency
 
Deep Dive on Microservices and Amazon ECS
Deep Dive on Microservices and Amazon ECSDeep Dive on Microservices and Amazon ECS
Deep Dive on Microservices and Amazon ECS
 

Andere mochten auch

AWS re:Invent 2016: How Telltale Games migrated its story analytics from Apac...
AWS re:Invent 2016: How Telltale Games migrated its story analytics from Apac...AWS re:Invent 2016: How Telltale Games migrated its story analytics from Apac...
AWS re:Invent 2016: How Telltale Games migrated its story analytics from Apac...Amazon Web Services
 
AWS re:Invent 2016: Getting Started with Docker on AWS (CMP209)
AWS re:Invent 2016: Getting Started with Docker on AWS (CMP209)AWS re:Invent 2016: Getting Started with Docker on AWS (CMP209)
AWS re:Invent 2016: Getting Started with Docker on AWS (CMP209)Amazon Web Services
 
AWS re:Invent 2016: Life Without SSH: Immutable Infrastructure in Production ...
AWS re:Invent 2016: Life Without SSH: Immutable Infrastructure in Production ...AWS re:Invent 2016: Life Without SSH: Immutable Infrastructure in Production ...
AWS re:Invent 2016: Life Without SSH: Immutable Infrastructure in Production ...Amazon Web Services
 
(SEC316) Harden Your Architecture w/ Security Incident Response Simulations
(SEC316) Harden Your Architecture w/ Security Incident Response Simulations(SEC316) Harden Your Architecture w/ Security Incident Response Simulations
(SEC316) Harden Your Architecture w/ Security Incident Response SimulationsAmazon Web Services
 
(APP309) Running and Monitoring Docker Containers at Scale | AWS re:Invent 2014
(APP309) Running and Monitoring Docker Containers at Scale | AWS re:Invent 2014(APP309) Running and Monitoring Docker Containers at Scale | AWS re:Invent 2014
(APP309) Running and Monitoring Docker Containers at Scale | AWS re:Invent 2014Amazon Web Services
 
AWS re:Invent 2016| GAM303 | Develop Games Using Lumberyard and Leverage AWS ...
AWS re:Invent 2016| GAM303 | Develop Games Using Lumberyard and Leverage AWS ...AWS re:Invent 2016| GAM303 | Develop Games Using Lumberyard and Leverage AWS ...
AWS re:Invent 2016| GAM303 | Develop Games Using Lumberyard and Leverage AWS ...Amazon Web Services
 
AWS Update | London - Amazon CloudSearch
AWS Update | London - Amazon CloudSearchAWS Update | London - Amazon CloudSearch
AWS Update | London - Amazon CloudSearchAmazon Web Services
 
NEW LAUNCH! Delivering Powerful Graphics-Intensive Applications from the AWS ...
NEW LAUNCH! Delivering Powerful Graphics-Intensive Applications from the AWS ...NEW LAUNCH! Delivering Powerful Graphics-Intensive Applications from the AWS ...
NEW LAUNCH! Delivering Powerful Graphics-Intensive Applications from the AWS ...Amazon Web Services
 
Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)William Yeh
 
Lessons Learned from Migrating Legacy Enterprise Applications to Microservices
Lessons Learned from Migrating Legacy Enterprise Applications to MicroservicesLessons Learned from Migrating Legacy Enterprise Applications to Microservices
Lessons Learned from Migrating Legacy Enterprise Applications to MicroservicesVMware Tanzu
 
Patterns for Asynchronous Microservices with NATS
Patterns for Asynchronous Microservices with NATSPatterns for Asynchronous Microservices with NATS
Patterns for Asynchronous Microservices with NATSApcera
 
Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Building and deploying microservices with event sourcing, CQRS and Docker (Be...Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Building and deploying microservices with event sourcing, CQRS and Docker (Be...Chris Richardson
 
AWS re:Invent 2016: High Performance Computing on AWS (CMP207)
AWS re:Invent 2016: High Performance Computing on AWS (CMP207)AWS re:Invent 2016: High Performance Computing on AWS (CMP207)
AWS re:Invent 2016: High Performance Computing on AWS (CMP207)Amazon Web Services
 
Developing microservices with aggregates (SpringOne platform, #s1p)
Developing microservices with aggregates (SpringOne platform, #s1p)Developing microservices with aggregates (SpringOne platform, #s1p)
Developing microservices with aggregates (SpringOne platform, #s1p)Chris Richardson
 
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...Chris Richardson
 
Implementing Service Oriented Architecture
Implementing Service Oriented Architecture Implementing Service Oriented Architecture
Implementing Service Oriented Architecture Amazon Web Services
 
Simone aliprandi, La tutela giuridica dell'opera software e il modello open l...
Simone aliprandi, La tutela giuridica dell'opera software e il modello open l...Simone aliprandi, La tutela giuridica dell'opera software e il modello open l...
Simone aliprandi, La tutela giuridica dell'opera software e il modello open l...Andrea Rossetti
 
From Cowboy To Astronaut: Lessons From The Trail, New Worlds On The Horizon
From Cowboy To Astronaut: Lessons From The Trail, New Worlds On The HorizonFrom Cowboy To Astronaut: Lessons From The Trail, New Worlds On The Horizon
From Cowboy To Astronaut: Lessons From The Trail, New Worlds On The HorizonJeremy Fuksa
 

Andere mochten auch (20)

AWS re:Invent 2016: How Telltale Games migrated its story analytics from Apac...
AWS re:Invent 2016: How Telltale Games migrated its story analytics from Apac...AWS re:Invent 2016: How Telltale Games migrated its story analytics from Apac...
AWS re:Invent 2016: How Telltale Games migrated its story analytics from Apac...
 
AWS re:Invent 2016: Getting Started with Docker on AWS (CMP209)
AWS re:Invent 2016: Getting Started with Docker on AWS (CMP209)AWS re:Invent 2016: Getting Started with Docker on AWS (CMP209)
AWS re:Invent 2016: Getting Started with Docker on AWS (CMP209)
 
AWS re:Invent 2016: Life Without SSH: Immutable Infrastructure in Production ...
AWS re:Invent 2016: Life Without SSH: Immutable Infrastructure in Production ...AWS re:Invent 2016: Life Without SSH: Immutable Infrastructure in Production ...
AWS re:Invent 2016: Life Without SSH: Immutable Infrastructure in Production ...
 
(SEC316) Harden Your Architecture w/ Security Incident Response Simulations
(SEC316) Harden Your Architecture w/ Security Incident Response Simulations(SEC316) Harden Your Architecture w/ Security Incident Response Simulations
(SEC316) Harden Your Architecture w/ Security Incident Response Simulations
 
(APP309) Running and Monitoring Docker Containers at Scale | AWS re:Invent 2014
(APP309) Running and Monitoring Docker Containers at Scale | AWS re:Invent 2014(APP309) Running and Monitoring Docker Containers at Scale | AWS re:Invent 2014
(APP309) Running and Monitoring Docker Containers at Scale | AWS re:Invent 2014
 
AWS re:Invent 2016| GAM303 | Develop Games Using Lumberyard and Leverage AWS ...
AWS re:Invent 2016| GAM303 | Develop Games Using Lumberyard and Leverage AWS ...AWS re:Invent 2016| GAM303 | Develop Games Using Lumberyard and Leverage AWS ...
AWS re:Invent 2016| GAM303 | Develop Games Using Lumberyard and Leverage AWS ...
 
AWS Update | London - Amazon CloudSearch
AWS Update | London - Amazon CloudSearchAWS Update | London - Amazon CloudSearch
AWS Update | London - Amazon CloudSearch
 
NEW LAUNCH! Delivering Powerful Graphics-Intensive Applications from the AWS ...
NEW LAUNCH! Delivering Powerful Graphics-Intensive Applications from the AWS ...NEW LAUNCH! Delivering Powerful Graphics-Intensive Applications from the AWS ...
NEW LAUNCH! Delivering Powerful Graphics-Intensive Applications from the AWS ...
 
Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)
 
Lessons Learned from Migrating Legacy Enterprise Applications to Microservices
Lessons Learned from Migrating Legacy Enterprise Applications to MicroservicesLessons Learned from Migrating Legacy Enterprise Applications to Microservices
Lessons Learned from Migrating Legacy Enterprise Applications to Microservices
 
Patterns for Asynchronous Microservices with NATS
Patterns for Asynchronous Microservices with NATSPatterns for Asynchronous Microservices with NATS
Patterns for Asynchronous Microservices with NATS
 
Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Building and deploying microservices with event sourcing, CQRS and Docker (Be...Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Building and deploying microservices with event sourcing, CQRS and Docker (Be...
 
AWS re:Invent 2016: High Performance Computing on AWS (CMP207)
AWS re:Invent 2016: High Performance Computing on AWS (CMP207)AWS re:Invent 2016: High Performance Computing on AWS (CMP207)
AWS re:Invent 2016: High Performance Computing on AWS (CMP207)
 
Developing microservices with aggregates (SpringOne platform, #s1p)
Developing microservices with aggregates (SpringOne platform, #s1p)Developing microservices with aggregates (SpringOne platform, #s1p)
Developing microservices with aggregates (SpringOne platform, #s1p)
 
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
 
Jardin des Verbes
Jardin des VerbesJardin des Verbes
Jardin des Verbes
 
Implementing Service Oriented Architecture
Implementing Service Oriented Architecture Implementing Service Oriented Architecture
Implementing Service Oriented Architecture
 
Simone aliprandi, La tutela giuridica dell'opera software e il modello open l...
Simone aliprandi, La tutela giuridica dell'opera software e il modello open l...Simone aliprandi, La tutela giuridica dell'opera software e il modello open l...
Simone aliprandi, La tutela giuridica dell'opera software e il modello open l...
 
clase ungs
clase ungsclase ungs
clase ungs
 
From Cowboy To Astronaut: Lessons From The Trail, New Worlds On The Horizon
From Cowboy To Astronaut: Lessons From The Trail, New Worlds On The HorizonFrom Cowboy To Astronaut: Lessons From The Trail, New Worlds On The Horizon
From Cowboy To Astronaut: Lessons From The Trail, New Worlds On The Horizon
 

Ähnlich wie Scaling Gaming Workloads on AWS

201507131408448146
201507131408448146201507131408448146
201507131408448146Mason Mei
 
Photon Session / Unite12 Conference
Photon Session / Unite12 ConferencePhoton Session / Unite12 Conference
Photon Session / Unite12 ConferenceChristof Wegmann
 
AWS Lambda and Serverless framework: lessons learned while building a serverl...
AWS Lambda and Serverless framework: lessons learned while building a serverl...AWS Lambda and Serverless framework: lessons learned while building a serverl...
AWS Lambda and Serverless framework: lessons learned while building a serverl...Luciano Mammino
 
6. DISZ - Webalkalmazások skálázhatósága a Google Cloud Platformon
6. DISZ - Webalkalmazások skálázhatósága  a Google Cloud Platformon6. DISZ - Webalkalmazások skálázhatósága  a Google Cloud Platformon
6. DISZ - Webalkalmazások skálázhatósága a Google Cloud PlatformonMárton Kodok
 
Breaking through silos - From multi to true crossplatform using the cloud
Breaking through silos - From multi to true crossplatform using the cloudBreaking through silos - From multi to true crossplatform using the cloud
Breaking through silos - From multi to true crossplatform using the cloudChristof Wegmann
 
Twitch-ready 3D-Games with Amazon Lumberyard and GameLift
Twitch-ready 3D-Games with Amazon Lumberyard and GameLiftTwitch-ready 3D-Games with Amazon Lumberyard and GameLift
Twitch-ready 3D-Games with Amazon Lumberyard and GameLiftAmazon Web Services
 
GDG DevFest Romania - Architecting for the Google Cloud Platform
GDG DevFest Romania - Architecting for the Google Cloud PlatformGDG DevFest Romania - Architecting for the Google Cloud Platform
GDG DevFest Romania - Architecting for the Google Cloud PlatformMárton Kodok
 
AWS Summit Seoul 2015 - 일본 AWS 게임 고객사례 - Gungho, Grani, Nintendo를 중심으로
AWS Summit Seoul 2015 -  일본 AWS 게임 고객사례 - Gungho, Grani, Nintendo를 중심으로AWS Summit Seoul 2015 -  일본 AWS 게임 고객사례 - Gungho, Grani, Nintendo를 중심으로
AWS Summit Seoul 2015 - 일본 AWS 게임 고객사례 - Gungho, Grani, Nintendo를 중심으로Amazon Web Services Korea
 
Taking the Next Hot Mobile Game Live with Docker and IBM SoftLayer
Taking the Next Hot Mobile Game Live with Docker and IBM SoftLayerTaking the Next Hot Mobile Game Live with Docker and IBM SoftLayer
Taking the Next Hot Mobile Game Live with Docker and IBM SoftLayerDaniel Krook
 
Write retrogames in the web and add something more with Azure
Write retrogames in the web and add something more with AzureWrite retrogames in the web and add something more with Azure
Write retrogames in the web and add something more with AzureMarco Parenzan
 
Massively Social != Massively Multiplayer
Massively Social != Massively MultiplayerMassively Social != Massively Multiplayer
Massively Social != Massively MultiplayerPaul Furio
 
Mobile game architecture on GCP
Mobile game architecture on GCPMobile game architecture on GCP
Mobile game architecture on GCP명근 최
 
Developing on StackMob - Flying Monkey Interactive Evaluates BaaS
Developing on StackMob - Flying Monkey Interactive Evaluates BaaS Developing on StackMob - Flying Monkey Interactive Evaluates BaaS
Developing on StackMob - Flying Monkey Interactive Evaluates BaaS StackMob Inc
 
[KGC 2012] Online Game Server Architecture Case Study Performance and Security
[KGC 2012] Online Game Server Architecture Case Study Performance and Security[KGC 2012] Online Game Server Architecture Case Study Performance and Security
[KGC 2012] Online Game Server Architecture Case Study Performance and SecuritySeungmin Shin
 
Designing a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile gamesDesigning a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile gamesiFunFactory Inc.
 
Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Ama...
Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Ama...Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Ama...
Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Ama...Amazon Web Services Korea
 
Cloud Native 오픈소스 서비스 소개 및 Serverless로 실제 게임 개발하기
Cloud Native 오픈소스 서비스 소개 및 Serverless로 실제 게임 개발하기Cloud Native 오픈소스 서비스 소개 및 Serverless로 실제 게임 개발하기
Cloud Native 오픈소스 서비스 소개 및 Serverless로 실제 게임 개발하기Jinwoong Kim
 
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...Naoto Gohko
 

Ähnlich wie Scaling Gaming Workloads on AWS (20)

201507131408448146
201507131408448146201507131408448146
201507131408448146
 
Photon Session / Unite12 Conference
Photon Session / Unite12 ConferencePhoton Session / Unite12 Conference
Photon Session / Unite12 Conference
 
Martin Simecek, Microsoft
Martin Simecek, Microsoft	Martin Simecek, Microsoft
Martin Simecek, Microsoft
 
AWS Lambda and Serverless framework: lessons learned while building a serverl...
AWS Lambda and Serverless framework: lessons learned while building a serverl...AWS Lambda and Serverless framework: lessons learned while building a serverl...
AWS Lambda and Serverless framework: lessons learned while building a serverl...
 
Server 2016 sneak peek
Server 2016 sneak peekServer 2016 sneak peek
Server 2016 sneak peek
 
6. DISZ - Webalkalmazások skálázhatósága a Google Cloud Platformon
6. DISZ - Webalkalmazások skálázhatósága  a Google Cloud Platformon6. DISZ - Webalkalmazások skálázhatósága  a Google Cloud Platformon
6. DISZ - Webalkalmazások skálázhatósága a Google Cloud Platformon
 
Breaking through silos - From multi to true crossplatform using the cloud
Breaking through silos - From multi to true crossplatform using the cloudBreaking through silos - From multi to true crossplatform using the cloud
Breaking through silos - From multi to true crossplatform using the cloud
 
Twitch-ready 3D-Games with Amazon Lumberyard and GameLift
Twitch-ready 3D-Games with Amazon Lumberyard and GameLiftTwitch-ready 3D-Games with Amazon Lumberyard and GameLift
Twitch-ready 3D-Games with Amazon Lumberyard and GameLift
 
GDG DevFest Romania - Architecting for the Google Cloud Platform
GDG DevFest Romania - Architecting for the Google Cloud PlatformGDG DevFest Romania - Architecting for the Google Cloud Platform
GDG DevFest Romania - Architecting for the Google Cloud Platform
 
AWS Summit Seoul 2015 - 일본 AWS 게임 고객사례 - Gungho, Grani, Nintendo를 중심으로
AWS Summit Seoul 2015 -  일본 AWS 게임 고객사례 - Gungho, Grani, Nintendo를 중심으로AWS Summit Seoul 2015 -  일본 AWS 게임 고객사례 - Gungho, Grani, Nintendo를 중심으로
AWS Summit Seoul 2015 - 일본 AWS 게임 고객사례 - Gungho, Grani, Nintendo를 중심으로
 
Taking the Next Hot Mobile Game Live with Docker and IBM SoftLayer
Taking the Next Hot Mobile Game Live with Docker and IBM SoftLayerTaking the Next Hot Mobile Game Live with Docker and IBM SoftLayer
Taking the Next Hot Mobile Game Live with Docker and IBM SoftLayer
 
Write retrogames in the web and add something more with Azure
Write retrogames in the web and add something more with AzureWrite retrogames in the web and add something more with Azure
Write retrogames in the web and add something more with Azure
 
Massively Social != Massively Multiplayer
Massively Social != Massively MultiplayerMassively Social != Massively Multiplayer
Massively Social != Massively Multiplayer
 
Mobile game architecture on GCP
Mobile game architecture on GCPMobile game architecture on GCP
Mobile game architecture on GCP
 
Developing on StackMob - Flying Monkey Interactive Evaluates BaaS
Developing on StackMob - Flying Monkey Interactive Evaluates BaaS Developing on StackMob - Flying Monkey Interactive Evaluates BaaS
Developing on StackMob - Flying Monkey Interactive Evaluates BaaS
 
[KGC 2012] Online Game Server Architecture Case Study Performance and Security
[KGC 2012] Online Game Server Architecture Case Study Performance and Security[KGC 2012] Online Game Server Architecture Case Study Performance and Security
[KGC 2012] Online Game Server Architecture Case Study Performance and Security
 
Designing a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile gamesDesigning a pragmatic back-end service for mobile games
Designing a pragmatic back-end service for mobile games
 
Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Ama...
Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Ama...Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Ama...
Gam301 Real-Time Game Analytics with Amazon Redshift, Amazon Kinesis, and Ama...
 
Cloud Native 오픈소스 서비스 소개 및 Serverless로 실제 게임 개발하기
Cloud Native 오픈소스 서비스 소개 및 Serverless로 실제 게임 개발하기Cloud Native 오픈소스 서비스 소개 및 Serverless로 실제 게임 개발하기
Cloud Native 오픈소스 서비스 소개 및 Serverless로 실제 게임 개발하기
 
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
OpenStack cloud for ConoHa, Z.com and GMO AppsCloud in okinawa opendays 2015 ...
 

Mehr von Amazon Web Services

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Amazon Web Services
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Amazon Web Services
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateAmazon Web Services
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSAmazon Web Services
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Amazon Web Services
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Amazon Web Services
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...Amazon Web Services
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsAmazon Web Services
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareAmazon Web Services
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSAmazon Web Services
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAmazon Web Services
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareAmazon Web Services
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWSAmazon Web Services
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckAmazon Web Services
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without serversAmazon Web Services
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...Amazon Web Services
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceAmazon Web Services
 

Mehr von Amazon Web Services (20)

Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
Come costruire servizi di Forecasting sfruttando algoritmi di ML e deep learn...
 
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
Big Data per le Startup: come creare applicazioni Big Data in modalità Server...
 
Esegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS FargateEsegui pod serverless con Amazon EKS e AWS Fargate
Esegui pod serverless con Amazon EKS e AWS Fargate
 
Costruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWSCostruire Applicazioni Moderne con AWS
Costruire Applicazioni Moderne con AWS
 
Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot Come spendere fino al 90% in meno con i container e le istanze spot
Come spendere fino al 90% in meno con i container e le istanze spot
 
Open banking as a service
Open banking as a serviceOpen banking as a service
Open banking as a service
 
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
Rendi unica l’offerta della tua startup sul mercato con i servizi Machine Lea...
 
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...OpsWorks Configuration Management: automatizza la gestione e i deployment del...
OpsWorks Configuration Management: automatizza la gestione e i deployment del...
 
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows WorkloadsMicrosoft Active Directory su AWS per supportare i tuoi Windows Workloads
Microsoft Active Directory su AWS per supportare i tuoi Windows Workloads
 
Computer Vision con AWS
Computer Vision con AWSComputer Vision con AWS
Computer Vision con AWS
 
Database Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatareDatabase Oracle e VMware Cloud on AWS i miti da sfatare
Database Oracle e VMware Cloud on AWS i miti da sfatare
 
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJSCrea la tua prima serverless ledger-based app con QLDB e NodeJS
Crea la tua prima serverless ledger-based app con QLDB e NodeJS
 
API moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e webAPI moderne real-time per applicazioni mobili e web
API moderne real-time per applicazioni mobili e web
 
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatareDatabase Oracle e VMware Cloud™ on AWS: i miti da sfatare
Database Oracle e VMware Cloud™ on AWS: i miti da sfatare
 
Tools for building your MVP on AWS
Tools for building your MVP on AWSTools for building your MVP on AWS
Tools for building your MVP on AWS
 
How to Build a Winning Pitch Deck
How to Build a Winning Pitch DeckHow to Build a Winning Pitch Deck
How to Build a Winning Pitch Deck
 
Building a web application without servers
Building a web application without serversBuilding a web application without servers
Building a web application without servers
 
Fundraising Essentials
Fundraising EssentialsFundraising Essentials
Fundraising Essentials
 
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
AWS_HK_StartupDay_Building Interactive websites while automating for efficien...
 
Introduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container ServiceIntroduzione a Amazon Elastic Container Service
Introduzione a Amazon Elastic Container Service
 

Kürzlich hochgeladen

Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 

Kürzlich hochgeladen (20)

Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 

Scaling Gaming Workloads on AWS

  • 1. © 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Evan Pipho - Warner Bros. Games - Turbine Platform Lead - MGP William Day - Warner Bros. Games - Turbine Senior Software Engineer Romesh McCullough - Warner Bros. Games - Turbine Staff Software Engineer October 2015 GAM 402 Turbine: A Microservice Approach to 3 Billion Requests per Day
  • 2. What to expect from the session • Handling gaming workloads on AWS • Personal experiences from a AAA multiplatform game launch • Containerized service platform on CoreOS and AWS • Scaling MongoDB
  • 3. Challenges 1. Managing multiple games on AWS 2. Scale 3. Pick your battles 4. MongoDB at scale 5. Staying up through launch
  • 4. A bit about us! • Founded in 1994, acquired by WB in 2010 • Pioneer in online games • Work with huge properties (LoTR, D&D, DC Comics) • Launching our first mobile game
  • 5. We support lots of WB titles
  • 6. Turbine’s platforms WBPlay game (WBG): Customized cross-platform, cross- studio game back end and analytics Mobile game platform (MGP): Next gen game back end for Turbine games Analytics platform: Analytics data crunching for WBIE WBPlay identity: Identity and e-commerce We will be discussing the first two
  • 7. WBG and MGP Currently powering • Batman: Arkham Underworld • Unnamed AAA multiplatform game Provides: • Authentication • Profiles • Matchmaking • Match history • Guilds • Cross-platform unlocks • Feeds • Social identity mapping • Analytics events
  • 8. • Data center capacity • Unknown infrastructure footprint • Platform automation • Bursty gaming workloads • Multiple Availability Zones Why AWS?
  • 9. • Support multiple games, studios, environments, and teams • One game / environment cannot affect another • Access control • Centralized services access Challenge 1: How to set up AWS?
  • 10. Multiple AWS accounts Cons Management overhead Must be automated Pros Service limits can’t clash Simplified billing allocation Digestible chunks of infrastructure • One account per game • One VPC per environment • One account for internal core services
  • 11. Game 2 Account Game 2 Prod Game 2 Dev Game 2 Stage Game 2 Load Test VPC Peering Game 1 Account Game 1 Prod Game 1 Dev Game 1 Stage Game 1 Load Test VPC Peering Game Production VPC’s cannot communicate directly Prod & Non Prod VPC’s cannot communicate Turbine Ops Services AWS Account Turbine Ops Services US-EAST-1
  • 12. Globally unique addressing • Central route table entries must be unique • Provisioned 5 / 20s for 5 environments up front • VPC IP space divided into 3 public and 3 private subnets in 3 AZs • Bitmask to precompute consistent VPC blocks
  • 16. WBG overview • Game back end and analytics • Monolithic code base • Python on Linux • MongoDB and Redis • Custom binary message formats • Console and Mobile SDK • Chef (solo)
  • 17. WBG high level Proxy Layer RabbitMQ Feed Service Profile Service Auth Service Match- making …Servi ce Data Layer
  • 18. WBG at scale • High availability • Isolated from public internet • Load balancers • Scaling application components • Scaling MongoDB • Configuration management automation • High availability Redis
  • 19. Mobile Client Internet us-east-1 AZ-1a AZ-1b AZ-1c Private Translator Subnet Private MongoDB Subnet Public NAT Subnet NAT-SG NAT-1 Public NAT Subnet NAT-SG NAT-2 NATHeartbeat Redis Master Redis Replica Mongo Primary Log & Journal GP2 GP2 Mongo Secondary Amazon S3 bucket Public Bastion Subnet BAS-SG Bastion Host Corporate DataCenter VPN connection VGW Private MongoDB Subnet Mongo Shard 1 Primary Mongo Shard N Primary Config Server MONGO-SG Config Server VPC Peering AZ-1a Public Bastion Subnet Bastion Host IGW Bastion Host Private Core Svs Subnet BAS-SG Docker Registry Drone Servers Jenkins ServersPrivate REDIS Subnet Private REDIS Subnet CACHE-SG PROXY PROXY PROXY DNS ELB Private RabbitMQ Subnet RABBIT- MQ Private Services Subnet Profile Services Feed Services Leader Boards Auth Services BiS Services …… Data GP2 Log & Journal Data GP2GP2 Private Translator Subnet PROXY PROXY PROXY Private RabbitMQ Subnet RABBIT- MQ Private Services Subnet Profile Services Feed Services Leader Boards Auth Services BiS Services …… Private MongoDB Subnet Log & Journal GP2Mongo Shard 1 Primary Mongo Shard N Primary Config Server Data GP2 Log & Journal Data GP2GP2 Mongo Arbiter IGW
  • 20. Challenge 2: Scale • Game clients being finalized close to launch • Difficult to distribute prerelease builds • Multiplatform differences • Multistudio ports • Hard to establish metric baselines
  • 21. Pre-emptive AWS capacity planning • Elastic Load Balancing prewarming • Amazon EC2 limit increases • 500 C4 and R3, per size • Amazon Elastic Block Store (EBS) limit • 192TB GP2 • Amazon S3 bucket partitioning
  • 22. Instrumentation • Preproduction metrics measured externally • Load test clients • Amazon CloudWatch • Late addition of internal metrics • Statsd -> Librato • No baselines for key metrics, so we instrumented all the things
  • 23. Operational complexity • Nine scalable components for just the app layer • Scaling HA RabbitMQ • MongoDB sharding • Redis sharding
  • 24. Mobile Client Internet us-east-1 AZ-1a AZ-1b AZ-1c Private Translator Subnet Private MongoDB Subnet Public NAT Subnet NAT-SG NAT-1 Public NAT Subnet NAT-SG NAT-2 NATHeartbeat Redis Master Redis Replica Mongo Primary Log & Journal GP2 GP2 Mongo Secondary Amazon S3 bucket Public Bastion Subnet BAS-SG Bastion Host Corporate DataCenter VPN connection VGW Private MongoDB Subnet Mongo Shard 1 Primary Mongo Shard N Primary Config Server MONGO-SG Config Server VPC Peering AZ-1a Public Bastion Subnet Bastion Host IGW Bastion Host Private Core Svs Subnet BAS-SG Chef Servers Drone Servers Jenkins ServersPrivate REDIS Subnet Private REDIS Subnet CACHE-SG PROXY PROXY PROXY DNS ELB Private RabbitMQ Subnet RABBIT- MQ Private Services Subnet Profile Services Feed Services Leader Boards Auth Services BiS Services …… Data GP2 Log & Journal Data GP2GP2 Private Translator Subnet PROXY PROXY PROXY Private RabbitMQ Subnet RABBIT- MQ Private Services Subnet Profile Services Feed Services Leader Boards Auth Services BiS Services …… Private MongoDB Subnet Log & Journal GP2Mongo Shard 1 Primary Mongo Shard N Primary Config Server Data GP2 Log & Journal Data GP2GP2 Mongo Arbiter IGW
  • 25. WBG “slice” • Entire stack on a single instance • Baked AMI • One ASG for whole app layer Proxy RabbitMQ Feed Auth BIS ... Pros Simplified scaling decisions and troubleshooting Simplified build and deploy Coarser control Cons Easy to be resource inefficient Coarser control
  • 26. Mobile Client Internet us-east-1 AZ-1a AZ-1b AZ-1c Private Translator Subnet Private MongoDB Subnet Public NAT Subnet NAT-SG NAT-1 Public NAT Subnet NAT-SG NAT-2 Redis Master Redis Replica Mongo Primary Log & Journal GP2 GP2 Mongo Secondary Amazon S3 bucket Public Bastion Subnet BAS-SG Bastion Host Corporate DataCenter VPN connection VGW Private MongoDB Subnet Mongo Shard 1 Primary Mongo Shard N Primary Config Server MONGO-SG Config Server VPC Peering AZ-1a Public Bastion Subnet Bastion Host IGW Bastion Host Private Core Svs Subnet BAS-SG Chef Servers Drone Servers Jenkins ServersPrivate REDIS Subnet Private REDIS Subnet CACHE-SG PROXY PROXY PROXY DNS ELB Private RabbitMQ Subnet RABBIT- MQ Private Services Subnet Profile Services Feed Services Leader Boards Auth Services BiS Services …… Data GP2 Log & Journal Data GP2GP2 Private Translator Subnet PROXY PROXY PROXY Private RabbitMQ Subnet RABBIT- MQ Private Services Subnet Profile Services Feed Services Leader Boards Auth Services BiS Services …… Private MongoDB Subnet Log & Journal GP2Mongo Shard 1 Primary Mongo Shard N Primary Config Server Data GP2 Log & Journal Data GP2GP2 Mongo Arbiter IGW
  • 27. Mobile Client Internet us-east-1 AZ-1a AZ-1b AZ-1c Private Slice Subnet Private MongoDB Subnet Public NAT Subnet NAT-SG NAT-1 Public NAT Subnet NAT-SG NAT-2 Redis Master Redis Replica Mongo Primary GP2Mongo Secondary Public Bastion Subnet BAS-SG Bastion Host Corporate DataCenter VPN connection VGW Private MongoDB Subnet MONGO-SG Config Server VPC Peering AZ-1a Public Bastion Subnet Bastion Host IGW Bastion Host Private Core Svs Subnet BAS-SG Chef Servers Drone Servers Jenkins ServersPrivate REDIS Subnet Private REDIS Subnet CACHE-SG SLICE SLICE SLICE DNS ELB Private MongoDB Subnet Mongo Arbiter IGW Amazon S3 bucket S3 Endpoint Private Slice Subnet SLICE SLICE SLICE GP2 Mongo Shard 1 Primary Mongo Shard N Primary Config Server Data GP2 Data GP2GP2 Mongo Shard N Primary GP2 Mongo Shard 1 Primary Mongo Shard N Primary Config Server Data GP2 Data GP2GP2 Mongo Shard N Primary
  • 28. Challenge 3: Event log • WBG services fire events, stored in Mongo • Batch process scrapes and dumps daily Pros We already have the data “here” Events from server-side callbacks Clients already integrated Cons Huge Mongo performance hit Huge Mongo storage footprint Rabbit message rate amplification Duration of scraper process Large halo
  • 29. MGP
  • 30. Mobile game platform team • Microservices architecture • Go, Docker, CoreOS, AWS • Next generation platform being written and deployed in parallel to WBG • HTTP + REST • Green-field
  • 31. MGP Microservices Feature Benefit HTTP + REST API contracts minimize surprises Do “One Thing” Focused code base sanity Datastore per-service Per-service tuning and scaling Config in Consul HA central management with a good API Config cached at startup Quick lookups, protects from outages Encryption key rotated every deploy Automatic and easy secure secrets
  • 32. How we use containers Feature Benefit From scratch containers No OS in the container means tiny containers <1MB on the wire Tiny containers means ultra-fast deploys Deployment conformity Proprietary and third party apps deploy the same way Deployment certainty Git sha in tag ensures app version Docker “--cap-drop-all” Improved security stance
  • 37. Event ingestion Pros Independent scaling Supports real-time analytics Isolated service Cons New client integration • Built to replace event log • First public MGP service • Clients send events direct to standalone service • Service dumps data in Kafka • Analytics team consumes from Kafka as fast as they want
  • 38. Event ingestion traffic flow ● ELB used to help Kafka broker discovery ● Amazon Route53 alias for easy configuration
  • 39. Event ingestion: Benchmarks Event ingestion • 200 k requests/second • 250 byte messages • 1-6 messages/request • 15x c4.large @ 75% cpu Kafka • 250 k messages/second • 20 partitions per topic • Replication factor of 2 • 6 brokers • r3.xlarge per broker • 1x 10TB GP2 per broker
  • 40. Side by side WBG Game Data MGP Event Ingestion
  • 42. NEW PLAYERS/SEC Midnight release! All the traffic, exactly at midnight Average rate after launch
  • 43. Three problems at scale 1.Mongodb Oplog data 2.Read queues under load causing service backlogs 3.Frequent Mongodb failovers Challenge 4: MongoDB
  • 44. MongoDB architecture • 3 node sharded replica set • Multiple shards • Mongo 2.6.9 • r3.2xl • 2TB GP2 • 3 AZ’s 1 Shard
  • 45. Symptoms • up to 100 of GB/h in oplog data per shard! • TB of data per day to back up • Unable to use off-the-shelf backup solutions MongoDB: Oplog data
  • 46. Why? • Application bug read / wrote too much data • Unexpectedly chatty clients • Clients that did not send diffs Solution • Fixed bug (update only document keys that were changed) • Patched client to send significantly less updates MongoDB: Oplog data
  • 47. MongoDB scaling timeline 6 shards r3.2xl 6 shards r3.4xl 6 shards r3.8xl 12 shards r3.8xl 24 shards r3.8xl 24 shards r3.4xl 24 shards r3.2xl Stability over time Write lock problems Failovers from process stalls Stable
  • 48. MongoDB: Read queue backlog Symptoms • Huge spikes in queued operations • Predominantly read operations • Relatively low lock percentage (~20-30)%
  • 49. MongoDB: Read queue backlog 20 k! Queue Backlog • 80 k reads/sec • 3 k writes/sec • 50 k100 k write size • 20% lock (average) • No I/O bottleneck
  • 50. MongoDB: Write lock Write lock (micros) 95% is 2 ms! Cumulative frequency
  • 51. MongoDB: Read queue backlog Why? • Very long write locks increased impact of low lock percentage • Linux kernel known issue, frequent and slow context switches • Document moves Solutions • Newer Linux kernel (halved the number of context switches) • Doubled number of shards twice
  • 52. MongoDB scaling timeline 6 shards r3.2xl 6 shards r3.4xl 6 shards r3.8xl 12 shards r3.8xl 24 shards r3.8xl 24 shards r3.4xl 24 shards r3.2xl Stability over time Write lock problems Failovers from process stalls Stable
  • 53. Symptoms • Spikes in system CPU • Mongod stall • Mongo elections • “Network” partition to replica set members • Application queue backups MongoDB: Mystery failovers
  • 54. Why? • Too much RAM • Linux memory compaction taking too long • Busy processes (mongod) had to wait Solution • Reduced instance size to r3.2xl • Less memory = faster and more frequent memory compaction • Scale out widely with smaller instances MongoDB: Mystery failovers
  • 55. MongoDB scaling timeline 6 shards r3.2xl 6 shards r3.4xl 6 shards r3.8xl 12 shards r3.8xl 24 shards r3.8xl 24 shards r3.4xl 24 shards r3.2xl Stability over time Write lock problems Failovers from process stalls Stable
  • 56. CDF’s are awesome for bottleneck analysis import numpy as np from pylab import * writelocks = np.loadtxt(“writelocks.csv”) num_bins = 100 counts, bin_edges = np.histogram(writelocks, bins=num_bins, density=True) cdf = np.cumsum(counts*np.diff(bin_edges)) idx = next(i for i, v in enumerate(cdf) if v >= 0.95) plot(bin_edges[1:], cdf) plot([0, 10000],[0.95, 0.95]) plot([bin_edges[idx], bin_edges[idx]], [0, 1]) ylim([0,1]) show()
  • 57. • Needed to buy time to solve back-end issues • Game is live; we can’t pull it • Specific calls were causing stack problems • Some calls were low value to the client, but high impact on the back end Challenge 5: Selective degradation
  • 58. Nginx is your friend • Caching of “uncacheable” calls • Rate limiting by single endpoint or service • Confd+Consul allowed for easy updates
  • 59. • Different definitions of “real time” • Caching 2 endpoints saved 50% app layer network throughput • Smoothed out everything Caching Established TCP ConnectionsELB LatencyMongo Lock %
  • 60. Caching with Nginx Some Problems... • Nginx caches on disk • Large requests are not good for Nginx proxy defaults • Caching too much; needed to tune proxy_min_uses • Small EBS root volume became an unexpected bottleneck • Unexpected disk usage pattern also consumed all inodes with default ext4 settings
  • 61. Throttling • Focused on highest impact calls first • Poorly indexed queries • Chatty writes from clients • Reduced the number of writes to allow reads • Blocked unexpectedly bad but low-customer-impact calls • Used detailed metrics
  • 62. Problems with throttling • Clients behave in different ways • Multistep auth caused more failures than individual rates would imply • Induced client retry storms • Single failure forced some clients into offline mode
  • 64. Metric overload • Don’t display graphs unless there’s a problem or someone will find one • Measure everything = mysteries everywhere • Outliers • Because the Internet • Measure everything, show important things
  • 65. Soft launch if you can • Build baselines • Test / validate your metrics • Confirm graphs mean what you think they mean
  • 66. Soft launch if you can • Real players create real data • Flexible APIs let clients do “flexible” things • Look at your soft launch data and usage patterns
  • 67. Your blast radius scales too • Vendor contacts before launch • Other internal team contacts too • Let them know before something big happens • Blast radius can be more than just you
  • 68. Pick your battles • Solve your biggest problem first • Use AWS scalability to buy time to find root causes • Make sure you have someone dedicated to triage • Don’t need to rewrite everything • Share APIs, not data
  • 69. The future • More microservices • Embrace immutability • More cross-team collaboration • More Amazon support (Thanks, Dhruv) • Come work for us!
  • 70. Special thanks Turbine: WBPlay Turbine: MGP Turbine: Cloud solutions and integration Amazon  TAMs and Dhruv are the best Librato support MongoDB support Splunk Cloud support
  • 71. Contact us Evan Pipho: epipho@turbine.com William Day: wday@turbine.com Romesh McCullough rmccullough@turbine.com www.turbine.com/careers