63
Journey Through the Cloud [email protected] @IanMmmm Ian Massingham — Technical Evangelist Scalable Web Apps

Scalable Web Apps - Journey Through the Cloud

Embed Size (px)

Citation preview

Journey Through the Cloud

[email protected]@IanMmmm

Ian Massingham — Technical Evangelist

Scalable Web Apps

Journey Through the Cloud

Learn from the journeys taken by other AWS customers

Discover best practices that you can use to bootstrap your projects

Common use cases and adoption models for the AWS Cloud123

Scalable Web Apps

A very popular use-case for AWS servicesApplications with growing, variable or cyclical demand fit AWS well

Elasticity and automation can be exercised to real advantageAWS services allow you to accelerate application development

Agenda

Why use AWS for scalable web applications?Rule Book for scalable web application on AWS

Common patterns for web applicationsWhere to go to learn more

WHY AWS FOR SCALABLEWEB APPLICATIONS?

Websites & Digital Transformation

BEING IN THE CLOUD GIVES US THE SCALABILITY OF ADDING APPLICATION AND DATABASE SERVERS AS WE NEED THEM.

Keith  Mitchell  Programmer  reddit.com

• reddit is a San Francisco, CA company that provides reddit.com, a social news and entertainment website where users can submit and rank ideas, images, and links

• reddit originally operated reddit.com on physical servers, but after the number of users quadrupled in 18 months, the company realized it couldn’t scale with an on-premises environment

• By migrating to AWS, reddit can scale to manage 4 billion page views per month and run its website with only 20 employees

With AWS, reddit scales its social news site to handle 4 billion page views per month with only 20 employees

Find out more here : aws.amazon.com/solutions/case-studies/reddit/

Pick your platform

Use your favourite tools

Grow & shrink capacity to match demand

Spend your money on what matters

Take your app or site global in minutes

Never make your customers wait

123456

RULE BOOK FOR SCALABLE WEBAPPLICATIONS ON AWS

Service all requests

Service requests as fast as possible

Handle requests at any volume

Simply your architecture

Automate operations & management

Use the unique properties of the cloud

123456

Service all requests1

DNS APPLICATION DATA

Service all requests1

DNS APPLICATION DATAREQUEST

Service all requests1

DNS APPLICATION DATAREQUEST

Service all requests1

DNS APPLICATION DATAREQUEST ╳

Service all requests1

DNS APPLICATION DATAREQUEST

100%Availability

SLAaws.amazon.com/route53/sla

Global Delivered from AWS global edge locations for fast and reliable domain name resolution

Scalable Automatically scales based upon query volumes

Latency based routing

Supports resolution of endpoints based upon latency, enabling multi-region application delivery

Integrated Integrates with other AWS services allowing Route 53 to front elastic load balancers, S3 and EC2

Secure Integrates with IAM giving fine grained control over DNS record access

Service all requests1

DNS APPLICATION DATAREQUEST

1

DNS APPLICATION DATAREQUESTRegion

Region

Elastic Load

Balancer

Elastic Load

BalancerAvailability Zone

Availability Zone

Availability Zone

Availability Zone

Elastic load balancing Multi-availability zone Multi-region

Service all requests

1

DNS APPLICATION DATAREQUESTRegion

Region

Elastic Load

Balancer

Elastic Load

BalancerAvailability Zone

Availability Zone

Availability Zone

Availability Zone

Amazon DynamoDB

Amazon DynamoDB

Service all requests

Service requests as fast as possible2

Service requests as fast as possible 1) Chose the ‘closest’ endpoint

2

REQUEST Amazon Route 53

Region A Region B

2

REQUEST Amazon Route 53

Region A Region B

16ms 92ms

Service requests as fast as possible 1) Chose the ‘closest’ endpoint

2

REQUEST Amazon Route 53

Region A Region B

16ms 92ms

Service requests as fast as possible 1) Chose the ‘closest’ endpoint

2

Amazon Route 53

Region A Region B

16ms

REGION A DNS ENTRY

REQUEST

Service requests as fast as possible 1) Chose the ‘closest’ endpoint

Service requests as fast as possible 2) Offload your application servers

2

London

Paris

NY

Served from S3 /images/*

3

Served from EC2 *.php

2

Single CNAME www.mysite.com1

Amazon CloudFront Content delivery web service

Integrates with other Amazon Web Services Products

Easily distribute content to end users with low latency, high data transfer speeds, and no minimum usage commitments

aws.amazon.com/cloudfront

Service requests as fast as possible 2) Offload your application servers

2

Without Amazon CloudFront EC2 Instances running web and application servers are loaded with user requests for content assets

Service requests as fast as possible 2) Offload your application servers

2

With Amazon CloudFront A significant proportion of the load from user requests is handled by Amazon CloudFront and the EC2 cluster can be scaled down

OffloadScale Down

Service requests as fast as possible 2) Offload your application servers

2

OffloadScale Down

Resp

onse

Tim

e

Serv

er L

oad

Resp

onse

Tim

e

Serv

er L

oad

Resp

onse

Tim

e

Serv

er

Load

No CDN CDN for Static

Content

CDN for Static & Dynamic Content

Service requests as fast as possible 3) Cache it if you can

2

Amazon ElastiCache A web service that makes it easy to deploy, operate, and scale an in-memory cache

Allows you to retrieve information from fast, managed, in-memory caches, instead of relying entirely on slower disk-based databases

Supports two open-source in memory caching engines: Memcached & Redis

Service requests as fast as possible 4) Single digit latencies where it matters

2Da

taba

se Q

uery

Per

form

ance

Desired consistency & predictability

Scale

Service requests as fast as possible 4) Single digit latencies where it matters

2Da

taba

se Q

uery

Per

form

ance

Desired consistency & predictability

Scale

Actual performance degrades with scale

Data

base

Que

ry P

erfo

rman

ce

Desired consistency & predictability

Scale

Actual performance degrades with scale

Filling this gap requires:

Database sharding Data caching Provisioning

Cluster management Fault management

Service requests as fast as possible 4) Single digit latencies where it matters

2

Data

base

Que

ry P

erfo

rman

ce

Amazon DynamoDB Query Performance

Scale

Relational Database Query Performance

Amazon DynamoDB

Service requests as fast as possible 4) Single digit latencies where it matters

2

Amazon DynamoDB

Amazon DynamoDB A fast and flexible NoSQL database service

Consistent, single-digit millisecond latency at any scale

Fully managed

Supports both document & key-value store models

aws.amazon.com/dynamodb

Service requests as fast as possible 4) Single digit latencies where it matters

2

aws.amazon.com/solutions/case-studies/adroll/

3 Handle requests at any volume & scale 1) Scale up

Basic unit of compute capacity Broad range of CPU, memory & local disk options 7 families available, from micro to compute, memory & storage optimized

Scale up with Elastic Compute Cloud (EC2)

3 Handle requests at any volume & scale 2) Scale out

Trigger  auto-­‐scaling  policy

Auto Scaling

Amazon EC2 Auto Scaling Allows you to scale your EC2 capacity up or down automatically according to conditions that you define

Increase the number of Amazon EC2 instances during demand spikes to maintain performance & decrease capacity during lulls to reduce costs

3

Manually

Send an API call or use CLI to launch/terminate instances – Only need to

specify capacity change (+/-)

By Schedule

Scale up/down based on date and time

By Policy

Scale in response to changing conditions, based on user configured

real-time monitoring and alerts

Auto-Rebalance

Instances are automatically launched/terminated to ensure the application is

balanced across multiple Azs

Handle requests at any volume & scale 2) Scale out

3

Manually

Send an API call or use CLI to launch/terminate instances – Only need to

specify capacity change (+/-)

By Schedule

Scale up/down based on date and time

By Policy

Scale in response to changing conditions, based on user configured

real-time monitoring and alerts

Auto-Rebalance

Instances are automatically launched/terminated to ensure the application is

balanced across multiple Azs

Preemptive manual scaling of capacity

Adding 10 more instances before a marketing event

Handle requests at any volume & scale 2) Scale out

3

Manually

Send an API call or use CLI to launch/terminate instances – Only need to

specify capacity change (+/-)

By Schedule

Scale up/down based on date and time

By Policy

Scale in response to changing conditions, based on user configured

real-time monitoring and alerts

Auto-Rebalance

Instances are automatically launched/terminated to ensure the application is

balanced across multiple Azs

Preemptive manual scaling of capacity

Adding 10 more instances before a marketing event

Regular scaling up & down of instances

Scaling from 0 to 2 to process SQS messages every night or doubling

capacity on a Friday night

Handle requests at any volume & scale 2) Scale out

3

Manually

Send an API call or use CLI to launch/terminate instances – Only need to

specify capacity change (+/-)

By Schedule

Scale up/down based on date and time

By Policy

Scale in response to changing conditions, based on user configured

real-time monitoring and alerts

Auto-Rebalance

Instances are automatically launched/terminated to ensure the application is

balanced across multiple Azs

Preemptive manual scaling of capacity

Adding 10 more instances before a marketing event

Regular scaling up & down of instances

Scaling from 0 to 2 to process SQS messages every night or doubling

capacity on a Friday night

Dynamic scaling based on custom metrics

Scaling on SQS queue depth, average CPU load or ELB latency

Handle requests at any volume & scale 2) Scale out

3

Manually

Send an API call or use CLI to launch/terminate instances – Only need to

specify capacity change (+/-)

By Schedule

Scale up/down based on date and time

By Policy

Scale in response to changing conditions, based on user configured

real-time monitoring and alerts

Auto-Rebalance

Instances are automatically launched/terminated to ensure the application is

balanced across multiple Azs

Preemptive manual scaling of capacity

Adding 10 more instances before a marketing event

Regular scaling up & down of instances

Scaling from 0 to 2 to process SQS messages every night or doubling

capacity on a Friday night

Dynamic scaling based on custom metrics

Scaling on SQS queue depth, average CPU load or ELB latency

Maintaining capacity across availability zones

Instance availability is maintained in the event of AZ becoming unavailable

Handle requests at any volume & scale 2) Scale out

3 Handle requests at any volume & scale 3) Dial up throughout

Elastic Block Store

Provisioned IOPS up to 20,000 per EBS volume

Predictable performance for demanding workloads such as

databases

DynamoDB

Provisioned read/write performance per table

Predictable high performance scaled via console or API

https://aws.amazon.com/blogs/aws/auto-scale-dynamodb-with-dynamic-dynamodb/

Simply your architecture with services4

Perfection is achieved, not when there is nothing more to add, but when there is

nothing left to take away            

Antoine de Saint-ExuperyFrench writer (1900 - 1944)

4

YourBusiness

70%

Infrastructure that you own

& operate

30%

Managing All of the “Undifferentiated Heavy Lifting”

Simply your architecture with services

4

YourBusiness

70%

Infrastructure that you own

& operate

30%

Managing All of the “Undifferentiated Heavy Lifting”

AWSCloud-BasedInfrastructure

More Time to Focus on Your Business

Configuring Your Cloud Services

30%70%

Simply your architecture with services

4 Simply your architecture with services

Relational Database Service Database-as-a-Service No need to install or manage database instances Scalable and fault tolerant configurations

DynamoDB Provisioned throughput NoSQL database

Fast, predictable performance Fully distributed, fault tolerant architecture

Use RDS for relational databases such as

MySQL or Oracle

Use DynamoDB as high performance document

or key-value database

4 Simply your architecture with services

Amazon SQS Reliable, highly scalable, queue service for storing messages as they travel between instances

Reliable message queuing without

additional software

Elastic MapReduce Elastic Hadoop cluster Integrates with S3 & DynamoDB Leverage Hive & Pig analytics scripts Integrates with instance types such as spot

Process large volumes of data cost effectively with

Amazon EMR

Amazon SQS

Processing task/processing trigger

Processing results

4 Simply your architecture with services

Enterprise Applications

Administration & Security

Core Services

Platform Services

Infrastructure

AWS Marketplace

5

Access everything via CLI, API or Console

Achieve the highest levels of automation with ease

Find out more at: aws.amazon.com/developers/getting-started/

Automate operations & management 1) Everything is programmable

5 Automate operations & management 2) Think immutable, one click-deployments

AWS CloudFormation An easy way to create & manage a collection of related AWS resources, called a ‘stack’ Automate creation of ‘stacks’ in a repeatable way Version control your infrastructure as you do your software

Feature Details

Platform support Support for AWS resources from EC2 to IAM

Resource creation Creates AWS resources behind the scenes and reports on progress

Declarative Specify stacks in JSON format and source control your environments

Customizable Drive stack creation with paramaters

5 Automate operations & management 2) Think immutable, one click-deployments

Launch and terminate Docker containers

Across a cluster of EC2 instances

Mount persistent volumes at launch

Private Docker repositories

Amazon EC2 Container Service

5 Automate operations & management 2) Think immutable, one click-deployments

Amazon EC2 Container Service

5 Automate operations & management 3) Design for availability, implement self healing

Customize instance startup

Get instances to ask ‘who am I?’ question on startup and be

configured dynamically upon being answered

Maintain capacity of instances

Using a minimum pool size will maintain capacity in the event

of instance failures

Know what’s going on, take automated actions

Use CloudWatch standard and custom metrics to create alarms.

Respond with automated administration actions

Bootstrapping Auto-scaling CloudWatch

5 Automate operations & management 3) Design for availability, implement self healing

https://github.com/Netflix/SimianArmy

6 Use the unique properties of the cloud 1) Optimize costs with different instance types

Choose an instance that best meets your basic

requirements

Start with memory & then choose closest virtual cores

Assess peak IOPS storage requirements

Deploy & run multiple instances in multiple Availability Zones

Change instance size up or down based upon monitoring

Use CloudWatch & Trusted Advisor to assess

Start Deploy & ScaleTune

6 Use the unique properties of the cloud 1) Optimize costs with different instance types

00:00 01:00 02:00 03:00 04:00 05:00 06:00 07:00 08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 20:00 21:00 22:00 23:00

100%

75%

58%

38%

13%

8%On Demand Instance

Reserved Instance

COMMON PATTERNS FORWEB APPLICATIONS

Stateless

Scale horizontally

Loose coupling

Automation

RESOURCES YOU CAN USETO LEARN MORE

aws.amazon.com/websites/

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

aws.amazon.com/architecture/

Certification

aws.amazon.com/certification

Self-Paced Labs

aws.amazon.com/training/self-paced-labs

Try products, gain new skills, and get hands-on practice working

with AWS technologies

aws.amazon.com/training

Training

Validate your proven skills and expertise with the AWS platform

Build technical expertise to design and operate scalable, efficient applications on AWS

AWS Training & Certification

Follow us fo

r more

events

& webina

rs

@AWScloud for Global AWS News & Announcements

@AWS_UKI for local AWS events & news

@IanMmmmIan Massingham — Technical Evangelist