aws webcast - scaling on aws 13 08-20

84

Upload: amazon-web-services

Post on 06-May-2015

2.423 views

Category:

Technology


3 download

DESCRIPTION

Learn about the patterns and techniques a business should be using in building their infrastructure on Amazon Web Services to be able to handle rapid growth and success in the early days. From leveraging highly scalable AWS services, to architecting best patterns, there are a number of smart choices you can make early on to help you overcome some typical infrastructure issues. Presenter: Chris Munns,Solutions Architect, Amazon Web Services

TRANSCRIPT

Page 1: Aws webcast - Scaling on AWS 13 08-20
Page 2: Aws webcast - Scaling on AWS 13 08-20

Scaling on AWS for the First 10 Million Users

• ME: Chris Munns – Solutions Architect – Amazon Web

Services – [email protected]

• YOU: Here to learn more about scaling infrastructure

on AWS

• TODAY: about best practices and things to think about

when building for large scale

Page 3: Aws webcast - Scaling on AWS 13 08-20

So how do we scale?

Page 4: Aws webcast - Scaling on AWS 13 08-20
Page 5: Aws webcast - Scaling on AWS 13 08-20
Page 6: Aws webcast - Scaling on AWS 13 08-20

a lot of things to read

Page 7: Aws webcast - Scaling on AWS 13 08-20

not where we want to start

a lot of things to read

Page 8: Aws webcast - Scaling on AWS 13 08-20

Auto-Scaling is a tool and a

destination. It’s not the

single thing that fixes

everything.

Page 9: Aws webcast - Scaling on AWS 13 08-20

What do we need first?

Page 10: Aws webcast - Scaling on AWS 13 08-20

Some basics:

Page 11: Aws webcast - Scaling on AWS 13 08-20

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)

Regions

ASIA PAC

(Singapore)

Page 12: Aws webcast - Scaling on AWS 13 08-20

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)

Availability Zones

ASIA PAC

(Singapore)

Page 13: Aws webcast - Scaling on AWS 13 08-20

• $5.2B retail business

• 7,800 employees

• A whole lot of servers

Every day, AWS adds enough

server capacity to power that

whole $5B enterprise

Page 14: Aws webcast - Scaling on AWS 13 08-20

Compute Storage

AWS Global Infrastructure

Database

App Services

Deployment & Administration

Networking

Page 15: Aws webcast - Scaling on AWS 13 08-20

Compute Storage

AWS Global Infrastructure

Database

App Services

Deployment & Administration

Networking

Amazon

CloudWatch AWS IAM AWS

CloudFormation

Amazon Elastic

Beanstalk AWS

Data

Pipeline

AWS

OpsWorks

Amazon

CloudSearch Amazon SQS Amazon

SNS

Amazon

Elastic

Transcoder

Amazon SWF Amazon SES

Amazon

DynamoDB

Amazon RDS

Amazon

ElastiCache

Amazon

RedShift

AWS Storage

Gateway

Amazon S3

Amazon

Glacier

Amazon

CloudFront Amazon

EC2

Amazon

EMR Amazon

VPC

Amazon

Route 53 AWS

Direct

Connect

Page 16: Aws webcast - Scaling on AWS 13 08-20

So let’s start from day

one, user one ( you ):

Page 17: Aws webcast - Scaling on AWS 13 08-20

Day One, User One:

• A single EC2 Instance

– With full stack on this host • Web App

• Database

• Management

• Etc.

• A single Elastic IP

• Route53 for DNS

EC2

Instance

Elastic IP

Amazon

Route 53 User

Page 18: Aws webcast - Scaling on AWS 13 08-20

“We’re gonna need a bigger box”

• Simplest approach

• Can now leverage PIOPs

• High I/O instances

• High memory instances

• High CPU instances

• High storage instances

• Easy to change instance sizes

• Will hit an endpoint eventually

hi1.4xlarge

m2.4xlarge

m1.small

Page 19: Aws webcast - Scaling on AWS 13 08-20

Day One, User One:

• We could potentially get to a few hundred to a few thousand depending on application complexity and traffic

• No failover

• No redundancy

• Too many eggs in one basket

EC2

Instance

Elastic IP

Amazon

Route 53 User

Page 20: Aws webcast - Scaling on AWS 13 08-20

Day Two, User >1:

First let’s separate out

our single host into

more than one.

• Web

• Database – Make use of a database

service?

Web

Instance

Database

Instance

Elastic IP

Amazon

Route 53 User

Page 21: Aws webcast - Scaling on AWS 13 08-20

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 or MySQL 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 22: Aws webcast - Scaling on AWS 13 08-20

But how do I choose

what DB technology I

need? SQL? NoSQL?

Page 23: Aws webcast - Scaling on AWS 13 08-20

Some folks won’t like

this. But…

Page 24: Aws webcast - Scaling on AWS 13 08-20

Start with SQL

databases

Page 25: Aws webcast - Scaling on AWS 13 08-20

But, but, but, but…

Page 26: Aws webcast - Scaling on AWS 13 08-20

No. You don’t.

Page 27: Aws webcast - Scaling on AWS 13 08-20

Start with SQL

databases

Page 28: Aws webcast - Scaling on AWS 13 08-20

Why start with SQL?

• Established and well worn technology

• Lots of existing code, communities, books,

background, tools, etc

• You aren’t going to break SQL DBs in your first 10

million users. No really, you won’t*

• Clear patterns to scalability

*Unless you are doing something SUPER weird with the data or

MASSIVE amounts of it, even then SQL will have a place in your stack

Page 29: Aws webcast - Scaling on AWS 13 08-20

AH HA! You said “massive

amounts”, I will have

massive amounts!

Page 30: Aws webcast - Scaling on AWS 13 08-20

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 you might

need NoSQL

Page 31: Aws webcast - Scaling on AWS 13 08-20

But this is probably

less than 90% of you

Page 32: Aws webcast - Scaling on AWS 13 08-20

User >100:

First let’s separate out

our single host into

more than one.

• Web

• Database – Use RDS to make your life

easier

Web

Instance

Elastic IP

RDS DB

Instance

Amazon

Route 53 User

Page 33: Aws webcast - Scaling on AWS 13 08-20

User > 1000:

Next let’s address our

lack of failover and

redundancy issues: • Elastic Load Balancer

• Another Web Instance

– In another Availability Zone

• Enable RDS Multi-AZ

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 53 User

Page 34: Aws webcast - Scaling on AWS 13 08-20

• Create highly scalable applications

• Distribute load across EC2 instances

in multiple availability zones Feature Details

Available Load balance across instances in multiple Availability Zones

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

Session stickiness Route 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

Elastic Load

Balancer

Elastic Load Balancing

Page 35: Aws webcast - Scaling on AWS 13 08-20

Scaling this horizontally

and vertically will get

us pretty far ( 10s-100s of thousands )

Page 36: Aws webcast - Scaling on AWS 13 08-20

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 53 User

Page 37: Aws webcast - Scaling on AWS 13 08-20

This will take us pretty far

honestly, but we care about

performance and efficiency,

so let’s clean this up a bit

Page 38: Aws webcast - Scaling on AWS 13 08-20

Shift some load around:

Let’s lighten the load on

our web and database

instances:

• Move static content from the

Web Instance to S3 and

CloudFront

• Move session/state and DB

caching to ElastiCache or

DynamoDB

Web

Instance

RDS DB Instance

Active (Multi-AZ)

Availability Zone

Elastic Load

Balancer

Amazon S3

Amazon

Cloudfront Amazon

Cloudfront Amazon

Cloudfront Amazon

Cloudfront Amazon

Cloudfront

Amazon

Cloudfront

Amazon

Route 53 User

ElastiCache

Cache Node ElastiCache

Cache Node ElastiCache

Cache Node

ElastiCache

DynamoDB

Page 39: Aws webcast - Scaling on AWS 13 08-20

Working with S3 - Amazon Simple Storage Service

• Object based storage for the web

• 11 9s of durability

• Good for things like:

– Static assets ( css, js, images,

videos )

– Backups

– Logs

– Ingest of files for processing

• “Infinitely scalable”

• Supports fine grained permission

control

• Ties in well with CloudFront

• Ties in with EMR

• Acts as a logging endpoint for

S3/CloudFront/Billing

• Supports Encryption at transit and at

rest

• Reduced Redundancy 1/3 cheaper

• Glacier for super long term storage

Page 40: Aws webcast - Scaling on AWS 13 08-20

DynamoDB

• Provisioned throughput NoSQL

database

• Fast, predictable performance

• Fully distributed, fault tolerant

architecture

• Considerations for non-uniform

data

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 to CloudWatch.

Secure Integrates with AWS Identity and Access Management (IAM).

Elastic MapReduce

Integrates with Elastic MapReduce for complex analytics on large datasets.

Page 41: Aws webcast - Scaling on AWS 13 08-20

ElastiCache

• Hosted Memcached

– Speaks same API as traditional open source

memcached

• Scale from one to many nodes

• Self healing ( replaces dead instance )

• Very fast ( single digit ms speeds usually (or less) )

• Local to a single AZ

– So need to run different clusters across different Azs

• Data is only in memory, so not persistent

• Use AWS’s Auto Discovery client to simplify clusters

growing and shrinking without affecting your application

Page 42: Aws webcast - Scaling on AWS 13 08-20

Now that our Web tier is

much more lightweight, we

can revisit the beginning of

our talk…

Page 43: Aws webcast - Scaling on AWS 13 08-20

Auto-Scaling!

Page 44: Aws webcast - Scaling on AWS 13 08-20

Automatic resizing of compute

clusters based on demand

Trigger auto-scaling

policy

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.

as-create-auto-scaling-group MyGroup

--launch-configuration MyConfig

--availability-zones us-east-1a

--min-size 4

--max-size 200

Auto-Scaling

Amazon

CloudWatch

Page 45: Aws webcast - Scaling on AWS 13 08-20

Sunday Monday Tuesday Wednesday Thursday Friday Saturday

Typical weekly traffic to Amazon.com

Page 46: Aws webcast - Scaling on AWS 13 08-20

Sunday Monday Tuesday Wednesday Thursday Friday Saturday

Typical weekly traffic to Amazon.com

Provisioned capacity

Page 47: Aws webcast - Scaling on AWS 13 08-20

November traffic to Amazon.com

November

Page 48: Aws webcast - Scaling on AWS 13 08-20

November traffic to Amazon.com

Provisioned capacity

November

Page 49: Aws webcast - Scaling on AWS 13 08-20

November traffic to Amazon.com

76%

24%

Provisioned capacity

November

Page 50: Aws webcast - Scaling on AWS 13 08-20

November traffic to Amazon.com

November

Page 51: Aws webcast - Scaling on AWS 13 08-20

Auto-Scaling lets you do this!

Page 52: Aws webcast - Scaling on AWS 13 08-20

There’s further

improvements to be made

in breaking apart our

web/app layer more

Page 53: Aws webcast - Scaling on AWS 13 08-20

SOA = Service Oriented Architecture

Page 54: Aws webcast - Scaling on AWS 13 08-20

SOA’ing

Move services into their own

tiers/modules. Treat each of

these as 100% whole-y separate

pieces of your infrastructure and

scale them independently.

Amazon.com and AWS do this

extensively! It offers flexibility

and greater understanding of

each component.

Page 55: Aws webcast - Scaling on AWS 13 08-20

Loose coupling sets you free!

• The looser they're coupled, the bigger they scale

– Independent components

– Design everything as a black box

– Decouple interactions

– Favor services with built in redundancy and scalability than

building your own

Controller A Controller B

Controller A Controller B

Q Q

Tight Coupling

Use Amazon SQS as Buffers

Loose Coupling

Page 56: Aws webcast - Scaling on AWS 13 08-20

Loose coupling + SOA = winning

Examples:

• Email

• Queuing

• Transcoding

• Search

• Databases

• Monitoring

• Metrics

• Logging

Amazon

CloudSearch Amazon SQS Amazon SNS

Amazon Elastic

Transcoder Amazon SWF

Amazon SES

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

opt to use that instead of building it yourself.

DON’T REINVENT THE WHEEL

Page 57: Aws webcast - Scaling on AWS 13 08-20

On re-inventing the wheel: If

you find yourself writing

your own: queue, DNS

server, database, storage

system, monitoring tool

Page 58: Aws webcast - Scaling on AWS 13 08-20

Take a deep breath and stop

it. Now.

Page 59: Aws webcast - Scaling on AWS 13 08-20

Back to SOA

Page 60: Aws webcast - Scaling on AWS 13 08-20

Imagine we let our users

upload photos

Page 61: Aws webcast - Scaling on AWS 13 08-20

S3 Bucket

For Ingest

User

SNS Topic

RRS S3

Bucket to

Serve

content to

CloudFront

S3 Bucket

For

originals

CloudFront

Download

Distribution

SQS Queue

Size for Thumbnail

SQS Queue

Size Image for

Mobile

SQS Queue

Size Image for Web

Auto scaling

Group

Instances

Auto scaling

Group

Instances

Auto scaling

Group

Instances

Page 62: Aws webcast - Scaling on AWS 13 08-20

User >1mil+:

Reaching a million and above is going to require some bit of all the previous things:

• Multi-AZ

• Elastic Load Balancer between tiers

• Auto-Scaling

• Service oriented architecture

• Serving content smartly ( S3/CloudFront )

• Caching off DB

• Moving state off tiers that auto-scale

Page 63: Aws webcast - Scaling on AWS 13 08-20

User >1mil+:

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 53 User

Amazon S3

Amazon

Cloudfront

DynamoDB

Amazon SQS

ElastiCache

Worker

Instance

Worker

Instance

Amazon

CloudWatch

Internal App

Instance

Internal App

Instance Amazon SES

Page 64: Aws webcast - Scaling on AWS 13 08-20

The next big steps

Page 65: Aws webcast - Scaling on AWS 13 08-20

User >5mil – 10mil:

You’ll potentially start to run into issues with your database around contention on the write master.

How can you solve it?

• Federation ( splitting into multiple DBs based on function)

• Sharding ( splitting one data set up across multiple hosts)

• Moving some functionality to other types of DBs ( NoSQL )

Page 66: Aws webcast - Scaling on AWS 13 08-20

Database Federation • 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 67: Aws webcast - Scaling on AWS 13 08-20

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

A

B

C

Page 68: Aws webcast - Scaling on AWS 13 08-20

User >5mil – 10mil:

You’ll potentially start to run into issues with speed and

performance of your applications.

• Make sure you have monitoring/metrics/logging in place

– If you can’t build it internally, outsource it! ( 3rd party SaaS )

• Pay attention to what customers are saying works well vs.

what doesn’t

• Try to work on squeezing as much performance out of

each service/component

Page 69: Aws webcast - Scaling on AWS 13 08-20

HOST

LEVEL

METRICS

AGGREGATE

LEVEL

METRICS

LOG

ANALYSIS

EXTERNAL

SITE

PERFORMANCE

Page 70: Aws webcast - Scaling on AWS 13 08-20

Not having proper

monitoring/metrics is like

flying a plane with an eye

mask on in a thunderstorm.

Oh and your wing is on fire.

Page 71: Aws webcast - Scaling on AWS 13 08-20

AWS Marketplace & Partners Can Help

• Customer can find, research,

buy software

• Simple pricing, aligns with EC2

usage model

• Launch in minutes

• Marketplace billing integrated

into your AWS account

• 700+ products across 20+

categories

Learn more at: aws.amazon.com/marketplace

Page 72: Aws webcast - Scaling on AWS 13 08-20

User >5mil – 10mil:

Managing your infrastructure will become an ever

increasing important part of your time. Use tools to

automate repetitive tasks.

• Tools to manage AWS resources

• Tools to manage software and configuration on your

instances

• Automated data analysis of logs and user actions

Page 73: Aws webcast - Scaling on AWS 13 08-20

AWS Application Management Solutions

Elastic Beanstalk OpsWorks CloudFormation EC2

Convenience Control

Higher-level Services Do it yourself

Page 74: Aws webcast - Scaling on AWS 13 08-20

Host Based Configuration Management

Two big players: – Opscode Chef

– PuppetLabs Puppet

• Both do more or less the same thing

• Both have syntax that isn’t too dissimilar

• Use HBCM along side one of the tools from the previous slide

• Spend the time required to learn them

• Can’t scale easily without HBCM

Page 75: Aws webcast - Scaling on AWS 13 08-20

A Quick Review:

Page 76: Aws webcast - Scaling on AWS 13 08-20

• Multi-AZ your infrastructure

• Make use of self scaling services ( ELB, S3, SNS, SQS, SWF, SES, etc )

• Build in redundancy at every level.

• Start SQL. Seriously.

• Move to NoSQL if it really makes sense

• Leverage managed/low touch services

• Split tiers into individual services ( SOA )

• Use Auto-scaling once you’re ready to

• Use automation tools in your infrastructure

• Make sure you have good metrics/monitoring/logging tools in place

• Don’t reinvent the wheel

Page 77: Aws webcast - Scaling on AWS 13 08-20

Putting all this together

means we should now

easily be able to handle

10+ million users!

Page 78: Aws webcast - Scaling on AWS 13 08-20

To infinity…..

Page 79: Aws webcast - Scaling on AWS 13 08-20

User >10mil:

A lot of what we covered today will

get you potentially into the high

10s of millions. Iterating on top of

the patterns seen here will get you

up and over 100 million users.

Page 80: Aws webcast - Scaling on AWS 13 08-20

User >10mil:

• More fine tuning of your application

• More SOA of features/functionality

• Going from Multi-AZ to Multi-Region

• Needing to start potentially building custom

solutions

• Deep analysis of your whole stack

Page 81: Aws webcast - Scaling on AWS 13 08-20

Next steps?

READ! –

• aws.amazon.com/documentation

• aws.amazon.com/architecture

• aws.amazon.com/start-ups

Page 82: Aws webcast - Scaling on AWS 13 08-20

Next steps?

START USING AWS –

aws.amazon.com/free/

Page 83: Aws webcast - Scaling on AWS 13 08-20

Next steps?

ASK FOR HELP!

• forums.aws.amazon.com

• aws.amazon.com/support

• Your local account manager

Page 84: Aws webcast - Scaling on AWS 13 08-20

THANKS F0R LISTENING!

Chris Munns - [email protected]