Scaling on AWS for the First 10 Million Users at Websummit Dublin
-
Upload
ian-massingham -
Category
Technology
-
view
509 -
download
0
Transcript of Scaling on AWS for the First 10 Million Users at Websummit Dublin
Scaling on AWS for the First 10 Million Users
@IanMmmm
Ian Massingham — Technical Evangelist
WEB S
UM
MIT
DUBLIN
201
4
#AW
S #W
EBSUM
MIT
STARTING AT 11:00
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
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
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
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
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
• 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+