SlideShare a Scribd company logo
1 of 55
Download to read offline
How Parse built a mobile backend as a service
Charity Majors
November 14, 2013

© 2013 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.
Friday, November 15, 13
What is Parse?
• platform for mobile developers
•
•
•
•

iOS, Android, WinRT
API and native SDKs
Scales automatically to handle traffic
Analytics, cloud code, file storage, push notifications, hosting

Friday, November 15, 13
Parse is magic.

Friday, November 15, 13
Parse is built on AWS
• Parse has never touched bare metal
• Recently acquired by Facebook
• Current plan is to stay on AWS
• We love AWS!

Friday, November 15, 13
Parse is growing fast
• Developers
• Apps
• API usage
• Nodes and compute resources
• Connected devices

Friday, November 15, 13
Friday, November 15, 13

9/11/13

8/11/13

7/11/13

6/11/13

5/11/13

4/11/13

3/11/13

2/11/13

1/11/13

12/11/12

11/11/12

10/11/12

9/11/12

8/11/12

7/11/12

6/11/12

5/11/12

4/11/12

3/11/12

2/11/12

1/11/12

12/11/12

11/11/11

10/11/11

9/11/11

8/11/11

7/11/11

6/11/11

Developers
Friday, November 15, 13

9/11/13

8/11/13

7/11/13

6/11/13

5/11/13

4/11/13

3/11/13

2/11/13

1/11/13

12/11/12

11/11/12

10/11/12

9/11/12

8/11/12

7/11/12

6/11/12

5/11/12

4/11/12

3/11/12

2/11/12

1/11/12

12/11/12

11/11/11

10/11/11

9/11/11

8/11/11

7/11/11

6/11/11

Developers
When PARSE
was acquired
Top left: Parse Grid Load last year
Top Right: Number of Hits last year
Bottom Left: Active PPNS Connections last year

Friday, November 15, 13
1.5 years ago

Friday, November 15, 13
Now

Friday, November 15, 13
Parse ops philosophy
• Work smarter, not harder
• Small team, full stack generalists
• Automate, automate, automate
• Our goal:
• 80% time working on things we want to do
• 20% time working on things we have to do

Friday, November 15, 13
Past & Present
October 2012
• 60% time spent on must-do’s
• 40% time spent on want to do’s
• ~400 event alerts
• Very sleepy opsen

October 2013
• 20% time spent on must-do’s
• 80% time spent want to do’s
• ~100 event alerts (mostly daytime)
• Infra complexity has 5x’d but time to
•

Friday, November 15, 13

manage it has dropped
We have shifted a lot of work from
ourselves to AWS
Takeaways
• ASGs are your best friend
• Automation should be reusable
• Choose your source of truth carefully

Friday, November 15, 13
Parse stack

Friday, November 15, 13
Friday, November 15, 13
Infrastructure design choices
• Chef
• Amazon Route 53
• Use real hostnames
• Distribute evenly across 3 AZs
• Fail over automatically
• Single source of truth

Friday, November 15, 13
Amazon EC2 design choices
• Standardize on a few instance types
• Makes reserved instances more efficient
• We use m1.large, m1.xlarge, m2.4xlarge (multi-core is a must). Prefer many
small disposable instances for stateless services.

• Security groups
• One group per role
• Verify working set with expected set using git/nagios

• All inbound requests come through Elastic Load Balancing
• Nothing talks directly to Amazon EC2 instances

Friday, November 15, 13
Friday, November 15, 13
API path
•
•
•
•
•

Elastic Load Balancing
nginx
haproxy
Ruby app servers (unicorns)
Go api servers (go rewrite from the
ground up)
• Go logging servers to FB endpoint

Friday, November 15, 13
Friday, November 15, 13
Hosting
• Elastic Load Balancing
• Elastic IPs for apex domain redirect service
• Go service that wraps cloud code and Amazon S3

Friday, November 15, 13
Friday, November 15, 13
Cloud code
•
•
•
•

Server-side javascript in v8 virtual machine
Third-party modules for partners (Stripe, Twilio, etc.)
Restrictive security groups
Scrub IPs with squid

Friday, November 15, 13
Push
•
•
•
•
•

Resque on redis
Billions of pushes per month
700/sec steady state
Spikes to 10k/sec (15x burst)
PPNS holds sockets open to all
android devices
• PDNS to serve android phonehome IPs

Friday, November 15, 13
Friday, November 15, 13
MongoDB
•
•
•
•
•
•
•

12 replica sets, ~50 nodes, 2-4 TB per rs
Over 1M collections
Over 170k schemas
Autoindexing of keys based on entropy
Compute compound indexes from real traffic analysis
Implemented our own app-level sharding
PIOPS (striped RAID, 2000-8000 PIOPS/vol)
• totally saved our bacon. Amazon EBS was a killer.

• Fully instrumented provisioning with chef
Friday, November 15, 13
Memcache
• Pool of memcaches with consistent hash
• I would use ElastiCache instead next time

Friday, November 15, 13
Redis
• Queueing using resque
• Android outboxes
• Single-threaded
• Just started playing with ElastiCache redis

Friday, November 15, 13
MySQL
• Trivially tiny and we would love to get rid of it
• ... but rails

• Considered Amazon RDS
•
•
•
•

No chained replication
Visibility is challenging
Even tiny periodic blips impact the API
... but AZ failover would be sooo nice

Friday, November 15, 13
Cassandra
• Powers the front-end Parse Analytics
• Super fast writes and increments
• 12 node cluster of m2.4xlarge
• Ephemeral storage
• Cheap & won our benchmarks

Friday, November 15, 13
Cassandra + Priam
• Initial token assignments
• Incremental backups to Amazon S3
• Uses Auto Scaling groups
• Amazon SimpleDB for tracking tokens, instance
identities
• Non-trivial to set up but WORTH IT

Friday, November 15, 13
Infrastructure

Friday, November 15, 13
First-generation infrastructure
Characteristics
• Ruby on Rails everywhere
• Chef to build AMIs
• Chef role per service
• Capistrano to deploy code
• Source of truth: git

Friday, November 15, 13
First-generation infrastructure
Characteristics

Effects

• Ruby on Rails everywhere
• Chef to build AMIs
• Chef role per service
• Capistrano to deploy code
• Source of truth: git

• Sooo
• Make

the same change in many

places

• Full

deploy and restart any time

a single host is added or removed

• Fine

Friday, November 15, 13

much hand-editing

for small static host sets
How to deploy 20 new servers:
• Run

20 knife-ec2 commands to

launch 20 hosts,

• Edit the cap deploy file,
• Edit the yml files, push to git,
• Do a cap cold deploy to new
hosts,

• Do

a full deploy/restart to all

the services that need to talk to
the new hosts

Friday, November 15, 13

Total time elapsed:

1.5–2.5
hours
How to deploy 20 new servers:
• Run

20 knife-ec2 commands to

launch 20 hosts,

• Edit the cap deploy file,
• Edit the yml files, push to git,
• Do a cap cold deploy to new
hosts,

• Do

a full deploy/restart to all

the services that need to talk to
the new hosts

Friday, November 15, 13

Total time elapsed:

1.5–2.5
MG.
O t ok
hours
no
PROBLEMS
• Babysitting
• Maintaining machine lists by hand
• No consistent human readable host naming
• Requires full code deploy to add single node
• Humans have to know things and make decisions

Friday, November 15, 13
Second-generation infrastructure
Characteristics
• Ruby on Rails everywhere
• Chef to configure systems
• Chef to generate host lists
• Capistrano to deploy code
• Source of truth: chef

Friday, November 15, 13
Second-generation infrastructure
Characteristics

Effects

• Ruby on Rails everywhere
• Chef to configure systems
• Chef to generate host lists
• Capistrano to deploy code
• Source of truth: chef

• YML

files, haproxy configs, etc

generated every chef run

• No

longer need to do full deploys

to affected services, just restart

• Only

one set of files to maintain

by hand (capistrano)

Friday, November 15, 13
How to deploy 20 new servers:
• Run

20 knife-ec2 commands to

launch 20 hosts

• Edit the cap deploy file
• Do a cap cold deploy to

new

hosts

• Let

chef-client run to generate

YML files

• Restart

services that need to

talk to the new hosts

Friday, November 15, 13

Total time elapsed:

30-60
minutes
How to deploy 20 new servers:
• Run

20 knife-ec2 commands to

launch 20 hosts

• Edit the cap deploy file
• Do a cap cold deploy to

new

hosts

• Let

chef-client run to generate

YML files

• Restart

services that need to

talk to the new hosts

Friday, November 15, 13

Total time elapsed:

30-60

ILL
ST
!

minutes
ok
not
what are our primary goals?
• Scale up any class of service in < 5 minutes
• Automatically detect new nodes
• Automatically remove downed nodes from service
• No hand maintained lists ANYWHERE (ugh)
• Deploy fast—no time to build AMIs
• Option of deploying from master
• Design a new deploy process for go binaries

Friday, November 15, 13
putting together a solution
Auto Scaling Groups

Jenkins + Amazon S3

• Each service lives in an ASG
• Same AMI used for most services
• Base AMI generated by chef
• System state managed by chef
• ASG named after chef role

• Runs unit tests
• Generate a tarball

Friday, November 15, 13

artifact

for each successful build

• Upload

to Amazon S3, tag

with the build # and role
autoification
auto-bootstrap

auto-deploy

• Runs on first boot
• Infers chef role from ASG name
• Generates a client.rb and initial

• infers

runlist
DNS with

Amazon Route 53
a lock from zookeeper, so

DNS is atomic

• Bootstraps chef
• Auto-deploy
Friday, November 15, 13

name

• pulls

build artifact from Amazon

S3

• Registers
• Grabs

the chef role from ASG

• unpacks

tarball, restarts
a better source of truth
zookeeper
• We LOVE zookeeper!!
• Service registration, service
discovery

• Distributed locking
• Coordinated actions,

Friday, November 15, 13

unique ids
a better source of truth
zookeeper

how it works

• We LOVE zookeeper!!
• Service registration, service

• zkwatcher

discovery

• Distributed locking
• Coordinated actions,

detects the service is

up, establishes an ephemeral node
to zk

unique ids

• Or the service registers itself
• Ephemeral node goes away,
service gets deregistered

• Capistrano

asks zookeeper for the

list of alive servers to deploy to

Friday, November 15, 13
Third-generation infrastructure
Characteristics
• Some go, some ruby
• Chef to maintain state
• ASG per chef role
• Capistrano + zk + jenkins
Amazon S3

• Source

Friday, November 15, 13

of truth: zookeeper

+
Third-generation infrastructure
Characteristics

Effects

• Some go, some ruby
• Chef to maintain state
• ASG per chef role
• Capistrano + zk + jenkins

• No lists of hosts
• No manual labor
• Happy opsen

Amazon S3

• Source

Friday, November 15, 13

of truth: zookeeper

+
Deploy 20 new servers:
• Adjust
• Have a

the size of the ASG
cocktail

Total time elapsed:

5-10
minutes

Friday, November 15, 13
Deploy 20 new servers:
• Adjust
• Have a

the size of the ASG
cocktail

Total time elapsed:

5-10
minutes

Y!
YA
Friday, November 15, 13
ASG caveats
• Amazon CloudWatch triggers are minimally useful for us
• Our bursts are usually too short and sharp
• No periodicity to our traffic patterns

• ... but we are lazy so we would like to add them anyway
• Need more tooling around downsizing ASGs gracefully
• Initial chef run may take 5-7 minutes
• Could someday optimize this
• Or eat the overhead of building AMIs with each successful jenkins build

Friday, November 15, 13
Remaining issues
• When we get rid of ruby, get rid of cap
• Just use auto-deploy for everything
• Trigger a deploy by updating build version # in zookeeper

• Automatic failover for mysql and redis
• Move everything into VPC
• ASGs will really help with this!
• Then we can use internal load balancers instead of haproxy. Want badly.

Friday, November 15, 13
Takeaways
• Single source of truth, or multiple sources of lies
• The more real-time your source of truth, the faster your
response time can be
• ASGs are amazing <3 <3

Friday, November 15, 13
Q&A

Friday, November 15, 13
Please give us your feedback on this
presentation

MBL307
As a thank you, we will select prize
winners daily for completed surveys!

Friday, November 15, 13

Thank You

More Related Content

What's hot

Honest Performance Testing with "NDBench" (Vinay Chella, Netflix) | Cassandra...
Honest Performance Testing with "NDBench" (Vinay Chella, Netflix) | Cassandra...Honest Performance Testing with "NDBench" (Vinay Chella, Netflix) | Cassandra...
Honest Performance Testing with "NDBench" (Vinay Chella, Netflix) | Cassandra...DataStax
 
Using Riak for Events storage and analysis at Booking.com
Using Riak for Events storage and analysis at Booking.comUsing Riak for Events storage and analysis at Booking.com
Using Riak for Events storage and analysis at Booking.comDamien Krotkine
 
Debugging PySpark: Spark Summit East talk by Holden Karau
Debugging PySpark: Spark Summit East talk by Holden KarauDebugging PySpark: Spark Summit East talk by Holden Karau
Debugging PySpark: Spark Summit East talk by Holden KarauSpark Summit
 
Erlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughputErlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughputPaolo Negri
 
Building production spark streaming applications
Building production spark streaming applicationsBuilding production spark streaming applications
Building production spark streaming applicationsJoey Echeverria
 
Five Years of EC2 Distilled
Five Years of EC2 DistilledFive Years of EC2 Distilled
Five Years of EC2 DistilledGrig Gheorghiu
 
PyCon India 2012: Celery Talk
PyCon India 2012: Celery TalkPyCon India 2012: Celery Talk
PyCon India 2012: Celery TalkPiyush Kumar
 
Speedment - Reactive programming for Java8
Speedment - Reactive programming for Java8Speedment - Reactive programming for Java8
Speedment - Reactive programming for Java8Speedment, Inc.
 
Containerised ASP.NET Core apps with Kubernetes
Containerised ASP.NET Core apps with KubernetesContainerised ASP.NET Core apps with Kubernetes
Containerised ASP.NET Core apps with KubernetesCodemotion Tel Aviv
 
Do's and don'ts when deploying akka in production
Do's and don'ts when deploying akka in productionDo's and don'ts when deploying akka in production
Do's and don'ts when deploying akka in productionjglobal
 
Automating Application over OpenStack using Workflows
Automating Application over OpenStack using WorkflowsAutomating Application over OpenStack using Workflows
Automating Application over OpenStack using WorkflowsYaron Parasol
 
Loading 350M documents into a large Solr cluster: Presented by Dion Olsthoorn...
Loading 350M documents into a large Solr cluster: Presented by Dion Olsthoorn...Loading 350M documents into a large Solr cluster: Presented by Dion Olsthoorn...
Loading 350M documents into a large Solr cluster: Presented by Dion Olsthoorn...Lucidworks
 
Docker Cluster Management with ECS
Docker Cluster Management with ECSDocker Cluster Management with ECS
Docker Cluster Management with ECSMatt Callanan
 
Analyzing Log Data With Apache Spark
Analyzing Log Data With Apache SparkAnalyzing Log Data With Apache Spark
Analyzing Log Data With Apache SparkSpark Summit
 
Combining the strength of erlang and Ruby
Combining the strength of erlang and RubyCombining the strength of erlang and Ruby
Combining the strength of erlang and RubyMartin Rehfeld
 

What's hot (17)

Way to cloud
Way to cloudWay to cloud
Way to cloud
 
Honest Performance Testing with "NDBench" (Vinay Chella, Netflix) | Cassandra...
Honest Performance Testing with "NDBench" (Vinay Chella, Netflix) | Cassandra...Honest Performance Testing with "NDBench" (Vinay Chella, Netflix) | Cassandra...
Honest Performance Testing with "NDBench" (Vinay Chella, Netflix) | Cassandra...
 
Using Riak for Events storage and analysis at Booking.com
Using Riak for Events storage and analysis at Booking.comUsing Riak for Events storage and analysis at Booking.com
Using Riak for Events storage and analysis at Booking.com
 
Debugging PySpark: Spark Summit East talk by Holden Karau
Debugging PySpark: Spark Summit East talk by Holden KarauDebugging PySpark: Spark Summit East talk by Holden Karau
Debugging PySpark: Spark Summit East talk by Holden Karau
 
Erlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughputErlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughput
 
Building production spark streaming applications
Building production spark streaming applicationsBuilding production spark streaming applications
Building production spark streaming applications
 
Five Years of EC2 Distilled
Five Years of EC2 DistilledFive Years of EC2 Distilled
Five Years of EC2 Distilled
 
PyCon India 2012: Celery Talk
PyCon India 2012: Celery TalkPyCon India 2012: Celery Talk
PyCon India 2012: Celery Talk
 
Speedment - Reactive programming for Java8
Speedment - Reactive programming for Java8Speedment - Reactive programming for Java8
Speedment - Reactive programming for Java8
 
Containerised ASP.NET Core apps with Kubernetes
Containerised ASP.NET Core apps with KubernetesContainerised ASP.NET Core apps with Kubernetes
Containerised ASP.NET Core apps with Kubernetes
 
Openstack summit 2015
Openstack summit 2015Openstack summit 2015
Openstack summit 2015
 
Do's and don'ts when deploying akka in production
Do's and don'ts when deploying akka in productionDo's and don'ts when deploying akka in production
Do's and don'ts when deploying akka in production
 
Automating Application over OpenStack using Workflows
Automating Application over OpenStack using WorkflowsAutomating Application over OpenStack using Workflows
Automating Application over OpenStack using Workflows
 
Loading 350M documents into a large Solr cluster: Presented by Dion Olsthoorn...
Loading 350M documents into a large Solr cluster: Presented by Dion Olsthoorn...Loading 350M documents into a large Solr cluster: Presented by Dion Olsthoorn...
Loading 350M documents into a large Solr cluster: Presented by Dion Olsthoorn...
 
Docker Cluster Management with ECS
Docker Cluster Management with ECSDocker Cluster Management with ECS
Docker Cluster Management with ECS
 
Analyzing Log Data With Apache Spark
Analyzing Log Data With Apache SparkAnalyzing Log Data With Apache Spark
Analyzing Log Data With Apache Spark
 
Combining the strength of erlang and Ruby
Combining the strength of erlang and RubyCombining the strength of erlang and Ruby
Combining the strength of erlang and Ruby
 

Similar to How Parse Built a Mobile Backend as a Service on AWS (MBL307) | AWS re:Invent 2013

SmugMug's Zero-Downtime Migration to AWS (ARC312) | AWS re:Invent 2013
SmugMug's Zero-Downtime Migration to AWS (ARC312) | AWS re:Invent 2013SmugMug's Zero-Downtime Migration to AWS (ARC312) | AWS re:Invent 2013
SmugMug's Zero-Downtime Migration to AWS (ARC312) | AWS re:Invent 2013Amazon Web Services
 
Pgbr 2013 postgres on aws
Pgbr 2013   postgres on awsPgbr 2013   postgres on aws
Pgbr 2013 postgres on awsEmanuel Calvo
 
Running Lean and Mean: Designing Cost-efficient Architectures on AWS (ARC313)...
Running Lean and Mean: Designing Cost-efficient Architectures on AWS (ARC313)...Running Lean and Mean: Designing Cost-efficient Architectures on AWS (ARC313)...
Running Lean and Mean: Designing Cost-efficient Architectures on AWS (ARC313)...Amazon Web Services
 
Running Lean and Mean: Designing Cost-efficient Architectures on AWS (ARC313)...
Running Lean and Mean: Designing Cost-efficient Architectures on AWS (ARC313)...Running Lean and Mean: Designing Cost-efficient Architectures on AWS (ARC313)...
Running Lean and Mean: Designing Cost-efficient Architectures on AWS (ARC313)...Amazon Web Services
 
Introduction to Amazon Web Services (AWS)
Introduction to Amazon Web Services (AWS)Introduction to Amazon Web Services (AWS)
Introduction to Amazon Web Services (AWS)Jason "JP" Pomerleau
 
Using Aws As A Game Server (AWS UG Bandung)
Using Aws As A Game Server (AWS UG Bandung)Using Aws As A Game Server (AWS UG Bandung)
Using Aws As A Game Server (AWS UG Bandung)Aswin Juari
 
Hosting a Rails App
Hosting a Rails AppHosting a Rails App
Hosting a Rails AppJosh Schramm
 
(GAM404) Hunting Monsters in a Low-Latency Multiplayer Game on EC2
(GAM404) Hunting Monsters in a Low-Latency Multiplayer Game on EC2(GAM404) Hunting Monsters in a Low-Latency Multiplayer Game on EC2
(GAM404) Hunting Monsters in a Low-Latency Multiplayer Game on EC2Amazon Web Services
 
SmugMug: From MySQL to Amazon DynamoDB (DAT204) | AWS re:Invent 2013
SmugMug: From MySQL to Amazon DynamoDB (DAT204) | AWS re:Invent 2013SmugMug: From MySQL to Amazon DynamoDB (DAT204) | AWS re:Invent 2013
SmugMug: From MySQL to Amazon DynamoDB (DAT204) | AWS re:Invent 2013Amazon Web Services
 
Scaling a Mobile Web App to 100 Million Clients and Beyond (MBL302) | AWS re:...
Scaling a Mobile Web App to 100 Million Clients and Beyond (MBL302) | AWS re:...Scaling a Mobile Web App to 100 Million Clients and Beyond (MBL302) | AWS re:...
Scaling a Mobile Web App to 100 Million Clients and Beyond (MBL302) | AWS re:...Amazon Web Services
 
AWS Cloud experience concepts tips and tricks
AWS Cloud experience concepts tips and tricksAWS Cloud experience concepts tips and tricks
AWS Cloud experience concepts tips and tricksDirk Harms-Merbitz
 
Rubyslava + PyVo #48
Rubyslava + PyVo #48Rubyslava + PyVo #48
Rubyslava + PyVo #48Jozef Képesi
 
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013Amazon Web Services
 
Re:Inventing your Innovation Cycle by Scaling Out with Spot Instances (CPN207...
Re:Inventing your Innovation Cycle by Scaling Out with Spot Instances (CPN207...Re:Inventing your Innovation Cycle by Scaling Out with Spot Instances (CPN207...
Re:Inventing your Innovation Cycle by Scaling Out with Spot Instances (CPN207...Amazon Web Services
 
Running Oracle EBS in the cloud (OAUG Collaborate 18 edition)
Running Oracle EBS in the cloud (OAUG Collaborate 18 edition)Running Oracle EBS in the cloud (OAUG Collaborate 18 edition)
Running Oracle EBS in the cloud (OAUG Collaborate 18 edition)Andrejs Prokopjevs
 
Performance_Out.pptx
Performance_Out.pptxPerformance_Out.pptx
Performance_Out.pptxsanjanabal
 

Similar to How Parse Built a Mobile Backend as a Service on AWS (MBL307) | AWS re:Invent 2013 (20)

SmugMug's Zero-Downtime Migration to AWS (ARC312) | AWS re:Invent 2013
SmugMug's Zero-Downtime Migration to AWS (ARC312) | AWS re:Invent 2013SmugMug's Zero-Downtime Migration to AWS (ARC312) | AWS re:Invent 2013
SmugMug's Zero-Downtime Migration to AWS (ARC312) | AWS re:Invent 2013
 
Pgbr 2013 postgres on aws
Pgbr 2013   postgres on awsPgbr 2013   postgres on aws
Pgbr 2013 postgres on aws
 
Running Lean and Mean: Designing Cost-efficient Architectures on AWS (ARC313)...
Running Lean and Mean: Designing Cost-efficient Architectures on AWS (ARC313)...Running Lean and Mean: Designing Cost-efficient Architectures on AWS (ARC313)...
Running Lean and Mean: Designing Cost-efficient Architectures on AWS (ARC313)...
 
Running Lean and Mean: Designing Cost-efficient Architectures on AWS (ARC313)...
Running Lean and Mean: Designing Cost-efficient Architectures on AWS (ARC313)...Running Lean and Mean: Designing Cost-efficient Architectures on AWS (ARC313)...
Running Lean and Mean: Designing Cost-efficient Architectures on AWS (ARC313)...
 
Perl in Teh Cloud
Perl in Teh CloudPerl in Teh Cloud
Perl in Teh Cloud
 
Introduction to Amazon Web Services (AWS)
Introduction to Amazon Web Services (AWS)Introduction to Amazon Web Services (AWS)
Introduction to Amazon Web Services (AWS)
 
Using Aws As A Game Server (AWS UG Bandung)
Using Aws As A Game Server (AWS UG Bandung)Using Aws As A Game Server (AWS UG Bandung)
Using Aws As A Game Server (AWS UG Bandung)
 
Zero mq logs
Zero mq logsZero mq logs
Zero mq logs
 
JRubyConf 2009
JRubyConf 2009JRubyConf 2009
JRubyConf 2009
 
Hosting a Rails App
Hosting a Rails AppHosting a Rails App
Hosting a Rails App
 
(GAM404) Hunting Monsters in a Low-Latency Multiplayer Game on EC2
(GAM404) Hunting Monsters in a Low-Latency Multiplayer Game on EC2(GAM404) Hunting Monsters in a Low-Latency Multiplayer Game on EC2
(GAM404) Hunting Monsters in a Low-Latency Multiplayer Game on EC2
 
SmugMug: From MySQL to Amazon DynamoDB (DAT204) | AWS re:Invent 2013
SmugMug: From MySQL to Amazon DynamoDB (DAT204) | AWS re:Invent 2013SmugMug: From MySQL to Amazon DynamoDB (DAT204) | AWS re:Invent 2013
SmugMug: From MySQL to Amazon DynamoDB (DAT204) | AWS re:Invent 2013
 
Scaling a Mobile Web App to 100 Million Clients and Beyond (MBL302) | AWS re:...
Scaling a Mobile Web App to 100 Million Clients and Beyond (MBL302) | AWS re:...Scaling a Mobile Web App to 100 Million Clients and Beyond (MBL302) | AWS re:...
Scaling a Mobile Web App to 100 Million Clients and Beyond (MBL302) | AWS re:...
 
AWS Cloud experience concepts tips and tricks
AWS Cloud experience concepts tips and tricksAWS Cloud experience concepts tips and tricks
AWS Cloud experience concepts tips and tricks
 
Rubyslava + PyVo #48
Rubyslava + PyVo #48Rubyslava + PyVo #48
Rubyslava + PyVo #48
 
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013
 
Re:Inventing your Innovation Cycle by Scaling Out with Spot Instances (CPN207...
Re:Inventing your Innovation Cycle by Scaling Out with Spot Instances (CPN207...Re:Inventing your Innovation Cycle by Scaling Out with Spot Instances (CPN207...
Re:Inventing your Innovation Cycle by Scaling Out with Spot Instances (CPN207...
 
Running Oracle EBS in the cloud (OAUG Collaborate 18 edition)
Running Oracle EBS in the cloud (OAUG Collaborate 18 edition)Running Oracle EBS in the cloud (OAUG Collaborate 18 edition)
Running Oracle EBS in the cloud (OAUG Collaborate 18 edition)
 
Performance_Out.pptx
Performance_Out.pptxPerformance_Out.pptx
Performance_Out.pptx
 
2 7
2 72 7
2 7
 

More from 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
 

More from 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
 

Recently uploaded

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
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
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 

Recently uploaded (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
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
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 

How Parse Built a Mobile Backend as a Service on AWS (MBL307) | AWS re:Invent 2013

  • 1. How Parse built a mobile backend as a service Charity Majors November 14, 2013 © 2013 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc. Friday, November 15, 13
  • 2. What is Parse? • platform for mobile developers • • • • iOS, Android, WinRT API and native SDKs Scales automatically to handle traffic Analytics, cloud code, file storage, push notifications, hosting Friday, November 15, 13
  • 3. Parse is magic. Friday, November 15, 13
  • 4. Parse is built on AWS • Parse has never touched bare metal • Recently acquired by Facebook • Current plan is to stay on AWS • We love AWS! Friday, November 15, 13
  • 5. Parse is growing fast • Developers • Apps • API usage • Nodes and compute resources • Connected devices Friday, November 15, 13
  • 6. Friday, November 15, 13 9/11/13 8/11/13 7/11/13 6/11/13 5/11/13 4/11/13 3/11/13 2/11/13 1/11/13 12/11/12 11/11/12 10/11/12 9/11/12 8/11/12 7/11/12 6/11/12 5/11/12 4/11/12 3/11/12 2/11/12 1/11/12 12/11/12 11/11/11 10/11/11 9/11/11 8/11/11 7/11/11 6/11/11 Developers
  • 7. Friday, November 15, 13 9/11/13 8/11/13 7/11/13 6/11/13 5/11/13 4/11/13 3/11/13 2/11/13 1/11/13 12/11/12 11/11/12 10/11/12 9/11/12 8/11/12 7/11/12 6/11/12 5/11/12 4/11/12 3/11/12 2/11/12 1/11/12 12/11/12 11/11/11 10/11/11 9/11/11 8/11/11 7/11/11 6/11/11 Developers When PARSE was acquired
  • 8. Top left: Parse Grid Load last year Top Right: Number of Hits last year Bottom Left: Active PPNS Connections last year Friday, November 15, 13
  • 9. 1.5 years ago Friday, November 15, 13
  • 11. Parse ops philosophy • Work smarter, not harder • Small team, full stack generalists • Automate, automate, automate • Our goal: • 80% time working on things we want to do • 20% time working on things we have to do Friday, November 15, 13
  • 12. Past & Present October 2012 • 60% time spent on must-do’s • 40% time spent on want to do’s • ~400 event alerts • Very sleepy opsen October 2013 • 20% time spent on must-do’s • 80% time spent want to do’s • ~100 event alerts (mostly daytime) • Infra complexity has 5x’d but time to • Friday, November 15, 13 manage it has dropped We have shifted a lot of work from ourselves to AWS
  • 13. Takeaways • ASGs are your best friend • Automation should be reusable • Choose your source of truth carefully Friday, November 15, 13
  • 16. Infrastructure design choices • Chef • Amazon Route 53 • Use real hostnames • Distribute evenly across 3 AZs • Fail over automatically • Single source of truth Friday, November 15, 13
  • 17. Amazon EC2 design choices • Standardize on a few instance types • Makes reserved instances more efficient • We use m1.large, m1.xlarge, m2.4xlarge (multi-core is a must). Prefer many small disposable instances for stateless services. • Security groups • One group per role • Verify working set with expected set using git/nagios • All inbound requests come through Elastic Load Balancing • Nothing talks directly to Amazon EC2 instances Friday, November 15, 13
  • 19. API path • • • • • Elastic Load Balancing nginx haproxy Ruby app servers (unicorns) Go api servers (go rewrite from the ground up) • Go logging servers to FB endpoint Friday, November 15, 13
  • 21. Hosting • Elastic Load Balancing • Elastic IPs for apex domain redirect service • Go service that wraps cloud code and Amazon S3 Friday, November 15, 13
  • 23. Cloud code • • • • Server-side javascript in v8 virtual machine Third-party modules for partners (Stripe, Twilio, etc.) Restrictive security groups Scrub IPs with squid Friday, November 15, 13
  • 24. Push • • • • • Resque on redis Billions of pushes per month 700/sec steady state Spikes to 10k/sec (15x burst) PPNS holds sockets open to all android devices • PDNS to serve android phonehome IPs Friday, November 15, 13
  • 26. MongoDB • • • • • • • 12 replica sets, ~50 nodes, 2-4 TB per rs Over 1M collections Over 170k schemas Autoindexing of keys based on entropy Compute compound indexes from real traffic analysis Implemented our own app-level sharding PIOPS (striped RAID, 2000-8000 PIOPS/vol) • totally saved our bacon. Amazon EBS was a killer. • Fully instrumented provisioning with chef Friday, November 15, 13
  • 27. Memcache • Pool of memcaches with consistent hash • I would use ElastiCache instead next time Friday, November 15, 13
  • 28. Redis • Queueing using resque • Android outboxes • Single-threaded • Just started playing with ElastiCache redis Friday, November 15, 13
  • 29. MySQL • Trivially tiny and we would love to get rid of it • ... but rails • Considered Amazon RDS • • • • No chained replication Visibility is challenging Even tiny periodic blips impact the API ... but AZ failover would be sooo nice Friday, November 15, 13
  • 30. Cassandra • Powers the front-end Parse Analytics • Super fast writes and increments • 12 node cluster of m2.4xlarge • Ephemeral storage • Cheap & won our benchmarks Friday, November 15, 13
  • 31. Cassandra + Priam • Initial token assignments • Incremental backups to Amazon S3 • Uses Auto Scaling groups • Amazon SimpleDB for tracking tokens, instance identities • Non-trivial to set up but WORTH IT Friday, November 15, 13
  • 33. First-generation infrastructure Characteristics • Ruby on Rails everywhere • Chef to build AMIs • Chef role per service • Capistrano to deploy code • Source of truth: git Friday, November 15, 13
  • 34. First-generation infrastructure Characteristics Effects • Ruby on Rails everywhere • Chef to build AMIs • Chef role per service • Capistrano to deploy code • Source of truth: git • Sooo • Make the same change in many places • Full deploy and restart any time a single host is added or removed • Fine Friday, November 15, 13 much hand-editing for small static host sets
  • 35. How to deploy 20 new servers: • Run 20 knife-ec2 commands to launch 20 hosts, • Edit the cap deploy file, • Edit the yml files, push to git, • Do a cap cold deploy to new hosts, • Do a full deploy/restart to all the services that need to talk to the new hosts Friday, November 15, 13 Total time elapsed: 1.5–2.5 hours
  • 36. How to deploy 20 new servers: • Run 20 knife-ec2 commands to launch 20 hosts, • Edit the cap deploy file, • Edit the yml files, push to git, • Do a cap cold deploy to new hosts, • Do a full deploy/restart to all the services that need to talk to the new hosts Friday, November 15, 13 Total time elapsed: 1.5–2.5 MG. O t ok hours no
  • 37. PROBLEMS • Babysitting • Maintaining machine lists by hand • No consistent human readable host naming • Requires full code deploy to add single node • Humans have to know things and make decisions Friday, November 15, 13
  • 38. Second-generation infrastructure Characteristics • Ruby on Rails everywhere • Chef to configure systems • Chef to generate host lists • Capistrano to deploy code • Source of truth: chef Friday, November 15, 13
  • 39. Second-generation infrastructure Characteristics Effects • Ruby on Rails everywhere • Chef to configure systems • Chef to generate host lists • Capistrano to deploy code • Source of truth: chef • YML files, haproxy configs, etc generated every chef run • No longer need to do full deploys to affected services, just restart • Only one set of files to maintain by hand (capistrano) Friday, November 15, 13
  • 40. How to deploy 20 new servers: • Run 20 knife-ec2 commands to launch 20 hosts • Edit the cap deploy file • Do a cap cold deploy to new hosts • Let chef-client run to generate YML files • Restart services that need to talk to the new hosts Friday, November 15, 13 Total time elapsed: 30-60 minutes
  • 41. How to deploy 20 new servers: • Run 20 knife-ec2 commands to launch 20 hosts • Edit the cap deploy file • Do a cap cold deploy to new hosts • Let chef-client run to generate YML files • Restart services that need to talk to the new hosts Friday, November 15, 13 Total time elapsed: 30-60 ILL ST ! minutes ok not
  • 42. what are our primary goals? • Scale up any class of service in < 5 minutes • Automatically detect new nodes • Automatically remove downed nodes from service • No hand maintained lists ANYWHERE (ugh) • Deploy fast—no time to build AMIs • Option of deploying from master • Design a new deploy process for go binaries Friday, November 15, 13
  • 43. putting together a solution Auto Scaling Groups Jenkins + Amazon S3 • Each service lives in an ASG • Same AMI used for most services • Base AMI generated by chef • System state managed by chef • ASG named after chef role • Runs unit tests • Generate a tarball Friday, November 15, 13 artifact for each successful build • Upload to Amazon S3, tag with the build # and role
  • 44. autoification auto-bootstrap auto-deploy • Runs on first boot • Infers chef role from ASG name • Generates a client.rb and initial • infers runlist DNS with Amazon Route 53 a lock from zookeeper, so DNS is atomic • Bootstraps chef • Auto-deploy Friday, November 15, 13 name • pulls build artifact from Amazon S3 • Registers • Grabs the chef role from ASG • unpacks tarball, restarts
  • 45. a better source of truth zookeeper • We LOVE zookeeper!! • Service registration, service discovery • Distributed locking • Coordinated actions, Friday, November 15, 13 unique ids
  • 46. a better source of truth zookeeper how it works • We LOVE zookeeper!! • Service registration, service • zkwatcher discovery • Distributed locking • Coordinated actions, detects the service is up, establishes an ephemeral node to zk unique ids • Or the service registers itself • Ephemeral node goes away, service gets deregistered • Capistrano asks zookeeper for the list of alive servers to deploy to Friday, November 15, 13
  • 47. Third-generation infrastructure Characteristics • Some go, some ruby • Chef to maintain state • ASG per chef role • Capistrano + zk + jenkins Amazon S3 • Source Friday, November 15, 13 of truth: zookeeper +
  • 48. Third-generation infrastructure Characteristics Effects • Some go, some ruby • Chef to maintain state • ASG per chef role • Capistrano + zk + jenkins • No lists of hosts • No manual labor • Happy opsen Amazon S3 • Source Friday, November 15, 13 of truth: zookeeper +
  • 49. Deploy 20 new servers: • Adjust • Have a the size of the ASG cocktail Total time elapsed: 5-10 minutes Friday, November 15, 13
  • 50. Deploy 20 new servers: • Adjust • Have a the size of the ASG cocktail Total time elapsed: 5-10 minutes Y! YA Friday, November 15, 13
  • 51. ASG caveats • Amazon CloudWatch triggers are minimally useful for us • Our bursts are usually too short and sharp • No periodicity to our traffic patterns • ... but we are lazy so we would like to add them anyway • Need more tooling around downsizing ASGs gracefully • Initial chef run may take 5-7 minutes • Could someday optimize this • Or eat the overhead of building AMIs with each successful jenkins build Friday, November 15, 13
  • 52. Remaining issues • When we get rid of ruby, get rid of cap • Just use auto-deploy for everything • Trigger a deploy by updating build version # in zookeeper • Automatic failover for mysql and redis • Move everything into VPC • ASGs will really help with this! • Then we can use internal load balancers instead of haproxy. Want badly. Friday, November 15, 13
  • 53. Takeaways • Single source of truth, or multiple sources of lies • The more real-time your source of truth, the faster your response time can be • ASGs are amazing <3 <3 Friday, November 15, 13
  • 55. Please give us your feedback on this presentation MBL307 As a thank you, we will select prize winners daily for completed surveys! Friday, November 15, 13 Thank You