AWS provides a platform that is ideally suited for deploying highly available and reliable systems that can scale with a minimal amount of human interaction. This talk describes a set of architectural patterns that support highly available services that are also scalable, low cost, low latency and allow for agile development practices. We walk through the various architectural decisions taken for each tier and explain our choices for appropriate AWS services and building blocks to ensure the security, scale, availability and reliability of the application.
2. What’s a web scale application?
Three principles to build upon
Layering the cake:
Data
Application
Total Jobs Group – their story
What are we going to cover?
6. Built on a global footprint
9 Regions
25 Availability Zones
Continuous Expansion
Built across regional availability zones
7. 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 databases
Use DynamoDB for
high performance key-
value DB
Architected using services
8. Amazon SQS
Processing
task/processing
trigger
Processing results
Amazon SQS
Reliable, highly scalable, queue service
for storing messages as they travel
between instances
Task A
Task B
(Auto-scaling)
Task C
2
3
1
Simple Workflow
Reliably coordinate processing steps
across applications
Integrate AWS and non-AWS resources
Manage distributed state in complex
systems
Push inter-process
workflows into the
cloud with SWF
Reliable message
queuing without
additional software
Architected using services
9. Cloud Search
Elastic search engine based upon
Amazon A9 search engine
Fully managed service with
sophisticated feature set
Scales automatically
Document
Server
Results
Search
Server
Don’t install search
software, use
CloudSearch
Process large volumes
of data cost effectively
with EMR
Elastic MapReduce
Elastic Hadoop cluster
Integrates with S3 & DynamoDB
Leverage Hive & Pig analytics scripts
Integrates with instance types such as
spot
Architected using services
29. Data
hash
ring
Sharded Horizontal Scaling
More complex at the application layer
No practical limit on scalability
Operation complexity/sophistication
Shard by function or key space
RDBMS or NoSQL
A
B
C
D
37. Data
Application
Loose coupling sets you free!
The looser they're coupled, the bigger
they scale
Independent components
Design everything as a black box
Decouple interactions
Load-balance clusters
41. Data
Application
Auto Scaling
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.
49. Data
Application
Load Balancing
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 Balancing
Create highly scalable applications
Distribute load across EC2 instances
in multiple availability zones
63. Summary
Use these techniques (and many others) as appropriate
Awareness of the options is the first step to good design
Scaling is the ability to move the bottlenecks around to
the least expensive part of the architecture
AWS makes this easier – so your application is not a
victim of its own success
Summary