In this presentation you will learn how to design for elasticity and availability within AWS using a common web architecture as a reference point and discuss strategies for scaling, security, application management and global reach. If you want to know how to make your applications truly scale then review this presentation to learn more:
Topics covered:
• Architectural properties of powerful, scalable and highly available applications in the AWS cloud
• Amazon regions and services that operate within them that enable you to scale
• Discover how to manage data with services like Amazon S3, Amazon DynamoDB and Amazon Elastic MapReduce to remove constraints from your applications as your achieve web-scale data volumes
• Hear about customer case studies and real-world examples of scaling from a handful of resources to many thousands in response to customer demand
Watch a recording of this presentation on YouTube here: http://youtu.be/-Ivhe1afw-0
1. Journey Through the Cloud
ianmas@amazon.com
@IanMmmm
Ian Massingham — Technical Evangelist
Scalable Web Apps
2. 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 Cloud
1
2
3
3. Scalable Web Apps
A very popular use-case for AWS services
Applications with growing, variable or cyclical demand fit AWS well
Elasticity and automation can be exercised to real advantage
AWS services allow you to accelerate application development
4. Agenda
Why use AWS for scalable web applications?
Rule Book for scalable web application on AWS
Common patterns for web applications
Where to go to learn more
7. 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/
8. 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
1
2
3
4
5
6
10. 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
1
2
3
4
5
6
15. Service all requests1
DNS APPLICATION DATAREQUEST
100%
Availability
SLA
aws.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
23. 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
24. 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.com
1
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
25. 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
26. 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
Offload
Scale
Down
27. Service requests as fast as possible
2) Offload your application servers
2
Offload
Scale
Down
ResponseTime
ServerLoad
ResponseTime
ServerLoad
ResponseTime
Server
Load
No CDN CDN for
Static
Content
CDN for
Static &
Dynamic
Content
28. 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
29. Service requests as fast as possible
4) Single digit latencies where it matters
2
DatabaseQueryPerformance
Desired consistency & predictability
Scale
30. Service requests as fast as possible
4) Single digit latencies where it matters
2
DatabaseQueryPerformance
Desired consistency & predictability
Scale
Actual performance
degrades with scale
31. DatabaseQueryPerformance
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
32. DatabaseQueryPerformance
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
33. 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/
34. 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)
35. 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
36. 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
37. 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
38. 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
39. 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
40. 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
41. 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/
42. 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-Exupery
French writer (1900 - 1944)
44. 4
Your
Business
70%
Infrastructure
that you own
& operate
30%
Managing All of the
“Undifferentiated Heavy Lifting”
AWS
Cloud-Based
Infrastructure
More Time to Focus on
Your Business
Configuring Your
Cloud Services
30%70%
Simply your architecture with services
45. 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
46. 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
47. 4 Simply your architecture with services
Enterprise Applications
Administration & Security
Core Services
Platform Services
Infrastructure
AWS Marketplace
48. 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
49. 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
50. 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
51. 5 Automate operations & management
2) Think immutable, one click-deployments
Amazon EC2 Container Service
52. 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
54. 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
55. 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