85

(SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Embed Size (px)

DESCRIPTION

Cloud computing gives you a number of advantages, such as the ability to scale your application on demand. If you have a new business and want to use cloud computing, you might be asking yourself, andquot;Where do I start?andquot; Join us in this session to understand best practices for scaling your resources from zero to millions of users. We show you how to best combine different AWS services, how to make smarter decisions for architecting your application, and how to scale your infrastructure in the cloud.

Citation preview

Page 1: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 2: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 3: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

So how do we scale?

Page 4: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 5: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 6: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

a lot of things to read

Page 7: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

a lot of things to read

not where we want to start

Page 8: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Auto Scaling is a tool

and a destination. It’s

not the single thing that

fixes everything.

Page 9: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

What do we need first?

Page 10: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Some basics…

Page 11: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

US-WEST (Oregon)

EU-WEST (Ireland)

ASIA PAC (Tokyo)

US-WEST (N. California)

SOUTH

AMERICA (Sao

Paulo)

US-EAST (Virginia)

AWS GovCloud (US)

ASIA PAC

(Sydney)

ASIA PAC

(Singapore)

CHINA (Beijing)

EU-CENTRAL (Frankfurt)

Page 12: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

US-WEST (Oregon)

EU-WEST (Ireland)

ASIA PAC (Tokyo)

US-WEST (N. California)

SOUTH

AMERICA (Sao

Paulo)

US-EAST (Virginia)

AWS GovCloud (US)

ASIA PAC

(Sydney)

ASIA PAC

(Singapore)

CHINA (Beijing)

EU-CENTRAL (Frankfurt)

Page 13: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 14: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Platform

Services

Containers

Dev/ops Tools

Resource Templates

Usage Tracking

Monitoring and Logs

Foundation

Services

Compute(VMs, Auto-scaling

and Load Balancing)

Storage(Object, Block

and Archive)

Security &

Access ControlNetworking

Infrastructure Regions CDN and Points of PresenceAvailability Zones

Applications Virtual Desktops Collaboration and Sharing

Caching

Relational

No SQL

Hadoop

Real-time

Data

Workflows

Data

Warehouse

Queuing

Orchestration

App Streaming

Transcoding

Email

Search

Identity

Sync

Mobile Analytics

Notifications

Databases Analytics App Services Deployment & Management Mobile Services

Managed User Directories

Applications

Platform services

Foundation services

Global infrastructure

Page 15: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Platform

services

Containers

Dev/ops Tools

Resource Templates

Usage Tracking

Monitoring and Logs

Foundation

services

Compute(VMs, Auto-scaling

and Load Balancing)

Storage(Object, Block

and Archive)

Security &

Access ControlNetworking

Infrastructure Regions CDN and Points of PresenceAvailability Zones

Applications Virtual Desktops Collaboration and Sharing

Caching

Relational

No SQL

Hadoop

Real-time

Data

Workflows

Data

Warehouse

Queuing

Orchestration

App Streaming

Transcoding

Email

Search

Identity

Sync

Mobile Analytics

Notifications

Databases Analytics App Services Deployment & Management Mobile Services

Managed User Directories

Page 16: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

So let’s start from day one,

user one (you)

Page 17: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

EC2

instance

Elastic IP

Amazon

Route 53User

Page 18: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

c3.8xlarge

m3.2xlarge

t2.micro

Page 19: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

• Will hit an endpoint eventually

c3.8xlarge

m3.2xlarge

t2.micro

Page 20: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

EC2

Instance

Elastic IP

Amazon

Route 53User

Page 21: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

• No failover

• No redundancy

• Too many eggs in one

basket

EC2

Instance

Elastic IP

Amazon

Route 53User

Page 22: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Web

Instance

Database

Instance

Elastic IP

Amazon

Route 53User

Page 23: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Self-managed Fully managed

Database server

on Amazon EC2

Your choice of

database running on

Amazon EC2

Bring Your Own

License (BYOL)

Amazon

DynamoDB

Managed NoSQL

database service

using SSD storage

Seamless scalability

Zero administration

Amazon RDS

Microsoft SQL,

Oracle, MySQL or

PostgreSQL as a

managed service

Flexible licensing:

BYOL or License

Included

Amazon

Redshift

Massively parallel,

petabyte-scale data

warehouse service

Fast, powerful, and

easy to scale

Database options

Page 24: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

But how do I choose

what DB technology I

need? SQL? NoSQL?

Page 25: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Some folks won’t like

this. But…

Page 26: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Start with SQL

databases

Page 27: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 28: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

AH HA! You said

“massive amounts,”

and I will have

massive amounts!

Page 29: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

If your usage is such that you

will be generating several TB

( >5 ) of data in the first year

OR have an incredibly data

intensive workload, then you

might need NoSQL

Page 30: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 31: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Web

instance

Elastic IP

RDS DB

instance

Amazon

Route 53User

Page 32: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Web

Instance

RDS DB Instance

Active (Multi-AZ)

Availability Zone Availability Zone

Web

Instance

RDS DB Instance

Standby (Multi-AZ)

Elastic Load

Balancer

Amazon

Route 53User

Page 33: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

• Create highly scalable applications

• Distribute load across EC2 instances

in multiple Availability ZonesFeature Details

Available Load balances across instances in multipleAvailability Zones

Health checks Automatically checks health of instances and takes them in or out of service

Session stickiness Routes requests to the same instance

Secure sockets layer Supports SSL offload from web and application servers with flexible cipher support

Monitoring Publishes metrics to CloudWatch and can get logs of requests processed

Elastic Load

Balancer

Elastic Load Balancer

Page 34: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Scaling this horizontally and

vertically will get us pretty far( 10s-100s of thousands )

Page 35: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

User >10ks-100ks

RDS DB Instance

Active (Multi-AZ)

Availability Zone Availability Zone

RDS DB Instance

Standby (Multi-AZ)

Elastic Load

Balancer

RDS DB Instance

Read Replica

RDS DB Instance

Read Replica

RDS DB Instance

Read Replica

RDS DB Instance

Read Replica

Web

Instance

Web

Instance

Web

Instance

Web

Instance

Web

Instance

Web

Instance

Web

Instance

Web

Instance

Amazon

Route 53User

Page 36: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

This will take us pretty far, but

we care about performance

and efficiency, so let’s improve

further

Page 37: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Web

Instance

RDS DB Instance

Active (Multi-AZ)

Availability Zone

Elastic Load

Balancer

Amazon

Route 53User

Page 38: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Web

Instance

RDS DB Instance

Active (Multi-AZ)

Availability Zone

Elastic Load

Balancer

Amazon S3

Amazon

Cloudfront

Amazon

Route 53User

• Move static content from the web instance to Amazon S3 and Amazon CloudFront

Page 39: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Amazon Simple Storage Service (S3) is

cloud storage for the Internet: Amazon S3

Page 40: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

CloudFrontAmazon CloudFront is a web service for scalable

content delivery:

• Cache static content at the edge for faster delivery

• Helps lower load on origin infrastructure

• Dynamic and static content

• Streaming video

• Zone apex support

• Custom SSL certificates

• Low TTLs (as short as 0 seconds)

• Lower costs for origin fetches (between Amazon

S3 / Amazon EC2 and CloudFront)

• Optimized to work with Amazon EC2, Amazon S3,

Elastic Load Balancing, and Amazon Route 53

Res

po

nse

Tim

e

Serv

er L

oad

Res

po

nse

Ti

me

Serv

er

Load

Res

po

nse

Ti

me

Serv

er

Load

No CDN CDN for Static

Content

CDN for Static &

Dynamic Content

0

10

20

30

40

50

60

70

80

8:00AM

9:00AM

10:00AM

11:00AM

12:00PM

1:00PM

2:00PM

3:00PM

4:00PM

5:00PM

6:00PM

7:00PM

8:00PM

9:00PM

Vo

lum

e o

f D

ata

D

eliv

ere

d (

Gb

ps

)

Page 41: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Web

Instance

RDS DB Instance

Active (Multi-AZ)

Availability Zone

Elastic Load

Balancer

Amazon S3

Amazon

Cloudfront

Amazon

Route 53User

Page 42: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

• Move session/state and DB caching to Amazon ElastiCache or Amazon DynamoDB

Web

Instance

RDS DB Instance

Active (Multi-AZ)

Availability Zone

Elastic Load

Balancer

Amazon S3

Amazon

Cloudfront

Amazon

Route 53User

ElastiCache

DynamoDB

Page 43: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

• Managed, provisioned throughput

NoSQL database

• Fast, predictable performance

• Fully distributed, fault tolerant

architecture

• JSON support (NEW)

• Items up to 400 KB (NEW)

Feature Details

Provisioned throughput

Dial up or down provisioned read/write capacity

Predictable performance

Average single digit millisecond latencies from SSD-backed infrastructure

Strong consistency

Be sure you are reading the most up to date values

Fault tolerant Data replicated across Availability Zones

Monitoring Integrated with Amazon CloudWatch

Secure Integrates with AWS Identity and Access Management (IAM)

Amazon EMR Integrates with Amazon EMR

for complex analytics on large

datasets

Page 44: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 45: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

• Move dynamic content from the ELB to Amazon CloudFront

Web

Instance

RDS DB Instance

Active (Multi-AZ)

Availability Zone

Elastic Load

Balancer

Amazon S3

Amazon

Cloudfront

Amazon

Route 53User

ElastiCache

DynamoDB

Page 46: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

• Move dynamic content from the ELB to Amazon CloudFront

Web

Instance

RDS DB Instance

Active (Multi-AZ)

Availability Zone

Elastic Load

Balancer

Amazon S3

Amazon

Cloudfront

Amazon

Route 53User

ElastiCache

DynamoDB

Page 47: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Now that our web tier is

much more lightweight, we

can revisit the beginning of

our talk…

Page 48: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Auto Scaling!

Page 49: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Automatic resizing of compute

clusters based on demand

Feature Details

Control Define minimum and maximum instance pool sizes and when scaling and cool down occurs.

Integrated to Amazon CloudWatch

Use metrics gathered by CloudWatch to drive scaling.

Instance types Run Auto Scaling for on-demand and Spot Instances. Compatible with VPC.

aws autoscaling create-auto-scaling-group

--auto-scaling-group-name MyGroup

--launch-configuration-name MyConfig

--min-size 4

--max-size 200--availability-zones us-west-2c, us-west-2b

Auto Scaling Trigger auto-scaling policy

Amazon

CloudWatch

Page 50: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Sunday Monday Tuesday Wednesday Thursday Friday Saturday

Typical weekly traffic to Amazon.com

Page 51: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Sunday Monday Tuesday Wednesday Thursday Friday Saturday

Typical weekly traffic to Amazon.com

Provisioned capacity

Page 52: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

November

Page 53: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Provisioned capacity

November

Page 54: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

76%

24%

Provisioned capacity

November

Page 55: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

November

Page 56: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Auto Scaling lets

you do this!

Page 57: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Availability Zone

Amazon

Route 53User

Amazon S3

Amazon

Cloudfront

Availability Zone

Elastic Load

Balancer

DynamoDB

RDS DB Instance

Read Replica

Web

Instance

Web

Instance

Web

Instance

ElastiCache RDS DB Instance

Read Replica

Web

InstanceWeb

Instance

Web

Instance

ElastiCacheRDS DB Instance

Standby (Multi-AZ)RDS DB Instance

Active (Multi-AZ)

Page 58: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 59: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 60: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

AWS application management solutions

Convenience Control

Higher-level services Do it yourself

AWS

Elastic Beanstalk

AWS

OpsWorks

AWS

CloudFormationAmazon EC2

Page 61: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 62: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

HOST

LEVEL

METRICS

AGGREGATE

LEVEL

METRICS

LOG

ANALYSIS

EXTERNAL

SITE

PERFORMANCE

Page 63: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

There are further

improvements to be

made in breaking apart

our web/app layer

Page 64: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 65: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 66: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Controller A Controller B

Controller A Controller B

Q Q

Tight coupling

Use Amazon SQS as buffers

Loose coupling

Page 67: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

DON’T REINVENT THE WHEEL

Examples:

• Email

• Queuing

• Transcoding

• Search

• Databases

• Monitoring

• Metrics

• Logging

Amazon

CloudSearchAmazon SQSAmazon SNS

Amazon Elastic

TranscoderAmazon SWF

Amazon SES

In the early days, if someone has a service for it already,

opt to use that instead of building it yourself.

Page 68: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 69: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

RDS DB Instance

Active (Multi-AZ)

Availability Zone

Elastic Load

Balancer

RDS DB Instance

Read Replica

RDS DB Instance

Read Replica

Web

Instance

Web

Instance

Web

Instance

Web

Instance

Amazon

Route 53User

Amazon S3

Amazon

Cloudfront

DynamoDB

Amazon SQS

ElastiCache

Worker

Instance

Worker

Instance

Amazon

CloudWatch

Internal App

Instance

Internal App

InstanceAmazon SES

Page 70: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

The next big steps

Page 71: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 72: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

• Split up databases by

function/purpose

• Harder to do cross-function

queries

• Essentially delaying the need

for something like

sharding/NoSQL until much

further down the line

• Won’t help with single huge

functions/tables

ForumsDB

UsersDB

ProductsDB

Page 73: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Sharded horizontal scaling• More complex at the

application layer

• ORM support can help

• No practical limit on

scalability

• Operation

complexity/sophistication

• Shard by function or key

space

• RDBMS or NoSQL

User ShardID

002345 A

002346 B

002347 C

002348 B

002349 A

Shard C

Shard B

Shard A

Page 74: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Shifting functionality to NoSQL

• Similar in a sense to federation

• Again, think about the earlier points for when you need NoSQL vs SQL

• Leverage hosted services like DynamoDB

• Some use cases:– Leaderboards/scoring

– Rapid ingest of clickstream/log data

– Temporary data needs (cart data)

– “Hot” tables

– Metadata/lookup tables

DynamoDB

Page 75: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

A quick review

Page 76: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 77: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 78: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Putting all this together

means we should now easily

be able to handle

10+ million users!

Page 79: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

To infinity…..

Page 80: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Iterating on top of the

patterns seen here will get

you up and over 100 million

users.

Page 81: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 82: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 83: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014
Page 84: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

THANKS

FOR

LISTENING!

Chris Munns - [email protected]

Page 85: (SOV204) Scaling Up to Your First 10 Million Users | AWS re:Invent 2014

Please give us your feedback on this session.

Complete session evaluations and earn re:Invent swag.

http://bit.ly/awsevals