Scaling on AWS for the First 10 Million Users at Websummit Dublin

31
Scaling on AWS for the First 10 Million Users [email protected] @IanMmmm Ian Massingham — Technical Evangelist WEB SUMMIT DUBLIN 2014 #AWS #WEBSUMMIT STARTING AT 11:00

Transcript of Scaling on AWS for the First 10 Million Users at Websummit Dublin

Scaling on AWS for the First 10 Million Users

[email protected]

@IanMmmm

Ian Massingham — Technical Evangelist

WEB S

UM

MIT

DUBLIN

201

4

#AW

S #W

EBSUM

MIT

STARTING AT 11:00

An Introduction to Scaling on AWS

An awful lot of things to read

Not where we want to start

EC2 Auto Scaling is one tool, not the single thing that ‘fixes’

everything or enables you to scale

SO WHAT DO WE NEED FIRST?

SOME BASICS

2004 2014$7B+ retail business

8,000+ employees

A whole lot of servers

Every day, AWS adds

enough server

capacity to power that

entire $7B enterprise

Infrastructure

Foundation Services

Regions Availability Zones

Storage(Object, Block and Archive) NetworkingSecurity &

Access Control

Platform Services

Databases

Relational

NoSQL

Caching

Analytics

Hadoop

Real-time

Data warehouse

App Services

Queuing

Orchestration

App streaming

Transcoding

Email

Search

Deployment & Management

Containers

Dev/ops Tools

Resource Templates

Mobile Services

Identity

Sync

Mobile Analytics

Notifications

Enterprise Applications Virtual Desktops

Data Workflows

Usage Tracking

Monitoring and Logs

Compute(VMs, Auto-scaling and Load Balancing)

CDN and Points of Presence

Collaboration and Sharing

Startups on AWS

http://aws.amazon.com/solutions/case-studies/

• A single EC2 instance• With a full stack on this host

• Web app

• Database

• Management

• A single Elastic IP address• Amazon Route 53 for DNS

EC2 instance

Elastic IP address

Amazon Route 53

User

DAY ONE, USER ONE. PROBABLY YOU!

• Simplest approach to scaling

• You 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

WE’RE GOING TO NEED A BIGGER BOX!

• 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 address

Amazon Route 53

User

WE’RE GOING TO NEED A BIGGER BOX!

Web instance

Database instance

Elastic IP address

Amazon Route 53

User

• Separate out the functions on our single host onto more than one:

• Web• Database

• Make use of a database service

DAY TWO, USER >1

Self-Managed Fully-Managed

Microsoft SQL, Oracle, MySQL or PostgresSQL

managed service

Flexible licensing: BYOL or Included

Massively parallel, petabyte scale, data warehouse service

Fast, powerful & easy to scale

Managed NoSQL database service using SSD storage

Seamless scalability & zero administration

Database server on Amazon EC2

Amazon RDS Amazon DynamoDB Amazon Redshift

Your chosen database running on Amazon EC2

Database Options

Building Blocks for Scaling on AWS

HOW DO I DETERMINE WHICH DB TECHNOLOGY I NEED?

Why start with SQL?

• Established and well-worn technology• Lots of existing code, communities, books & tools• 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 manipulating data at MASSIVE scale; even then, SQL will have a place in your stack

Why might you need to use a NoSQL DB?

• Super low latency applications• Metadata driven datasets• Highly non-relational data• Need schema-less data constructs*• Massive amounts of data (again, in the TB range)• Rapid ingest of data ( thousands of records/sec )

*Need != “it is easier to do dev without schemas”

• Managed, provisioned throughput NoSQL database• Fast, predictable performance• Fully distributed, fault tolerant architecture

IF YOU DO NEED NOSQL, CONSIDER AMAZON DYNAMODB

Web instance

Elastic IP address

RDS DB instance

Amazon Route 53

User

• First, let’s separate out our single host into more than one:

• Web

• Database

• Use Amazon RDS to make your life easier

USER >100

Web instance

Amazon RDS DB instance Active (Multi-AZ) Availability Zone Availability Zone

Web instance

Amazon RDS DB instance Standby (Multi-AZ)

Elastic Load Balancing

Amazon Route 53

User

• Next, let’s address the lack of failover and redundancy issues:

• Elastic Load Balancing

• Another web instance• In another Availability Zone

• Enable Amazon RDS Multi-AZ

USER >1000

USER 10,000 to 100,000s

RDS DB Instance Active (Multi-AZ)

Availability Zone Availability Zone

RDS DB Instance Standby (Multi-AZ)

Elastic Load Balancing

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

Web instance

RDS DB Instance Active (Multi-AZ) Availability Zone

Elastic Load Balancing

Amazon S3

Amazon CloudFront

Amazon Route 53

User

ElastiCache

Amazon Dynamo DB

• Think components and services:• Move static content from the

web instance to Amazon S3

and Amazon CloudFront

• Move session/state and DB

caching to Amazon ElastiCache

or Amazon Dynamo DB

Shift Some Load Around

NOW THAT OUR WEB TIER IS MUCH MORE LIGHTWEIGHT:

AUTOSCALING!

Automatic resizing of compute clusters based on demand metrics

AMAZON EC2 AUTO SCALING

Trigger auto-scaling policy

Amazon CloudWatch

Feature Details

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

Integration Use metrics gathered by CloudWatch to drive scaling (including custom metrics)

Instance Types Use Auto Scaling with On-Demand and Spot Instances

NOVEMBER TRAFFIC TO AMAZON.COM

24% of traditionally provisioned capacity

76% of traditionally provisioned capacity

AUTO SCALING LETS YOU DO THIS

Traditional provisioning level

Availability Zone

Amazon Route 53

User

Amazon S3

Amazon CloudFront

Availability Zone

Elastic Load Balancing

Amazon DynamoDB RDS DB Instance

Read Replica

Web instance

Web instance

Web instance

ElastiCache RDS DB Instance Read Replica

Web instance

Web instance

Web instance

ElastiCache RDS DB Instance Standby (Multi-AZ)

RDS DB Instance Active (Multi-AZ)

USER 500,000+

GOING BEYOND 500,000 USERS

GOING BEYOND 500,000 USERS

• Monitoring, metrics and logging • Listen and respond to customer feedback as well as your metrics• Optimise each service/component• Implement a Service Orientated Architecture with loose coupling• Load balance between tiers

RDS DB Instance Active (Multi-AZ)

Availability Zone

Elastic Load Balancing

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

Amazon DynamoDB

Amazon SQS

ElastiCache

Worker instance

Worker instance

Amazon CloudWatch

Internal app instance

Internal app instance

Amazon SES

USER 1 MILLION+

WANT TO LEARN MORE?

COME TO OUR ARCHITECTURE ASK US ANYTHING

TODAY AT 16:00

@IanMmmm

Ian Massingham — Technical Evangelist

@AWScloudAWS Global News and Service Launches

@AWS_UKIAWS UK & Ireland News, Events & Webinars

WEB S

UM

MIT

DUBLIN

201

4

#AW

S #W

EBSUM

MIT

DO

N’T

FO

RGET Y

OUR C

RED

ITS