Upload
amazon-web-services
View
97
Download
0
Embed Size (px)
Citation preview
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Rubén Ruiz, AWS Solutions Architect (@rruizsan)Genís Ureña, VP Engineering, Inbenta
June 2nd , 2016
Aplicaciones a gran escalaCómo servir a millones de usuarios
#AWSSummit@awscloud_es
Growth is good…
Dev & Test
Friends & Family
Live GA
…but can be challenging!!Source: http://peterskastner.wordpress.com/2011/02/23/cisco-the-lion-king-fights-for-data-center-fabric-leadership/Source: http://iwgcr.org/fire-destroys-wisconsin-data-center/
So how do we scale?
One size does not fit all !!
Auto Scaling??...Not Yet..
Let’s start with some basics….
AWS Regions 12 (+ 5)33 (+11)
RegionsAvailability Zones
Example AWS Region
AZ
AZ
AZ AZ AZ
Transit
Transit
Re:Invent 2014 (SPOT301)https://www.youtube.com/watch?v=JIQETrFC_SQ
Example AWS Availability Zone
AZ
AZ
AZ AZ AZ
Transit
Transit
Example AWS Data Center
AWS Edge locations 55 Edge locations
ENTERPRISE APPS
DEVELOPMENT & OPERATIONSMOBILE SERVICESAPP SERVICESANALYTICS
DataWarehousing
Hadoop/Spark
Streaming Data Collection
Machine Learning
Elastic Search
Virtual Desktops
Sharing & Collaboration
Corporate Email
Backup
Queuing & Notifications
Workflow
Search
Transcoding
One-click App Deployment
Identity
Sync
Single Integrated Console
PushNotifications
DevOps Resource Management
Application Lifecycle Management
Containers
Triggers
Resource Templates
TECHNICAL & BUSINESS SUPPORT
Account Management
Support
Professional Services
Training & Certification
Security & Pricing Reports
Partner Ecosystem
Solutions Architects
MARKETPLACE
Business Apps
Business Intelligence
DatabasesDevOps Tools
NetworkingSecurity Storage
Regions Availability Zones
Points of Presence
INFRASTRUCTURE
CORE SERVICES
ComputeVMs, Auto-scaling, & Load Balancing
StorageObject, Blocks, Archival, Import/Export
DatabasesRelational, NoSQL, Caching, Migration
NetworkingVPC, DX, DNS
CDN
Access Control
Identity Management
Key Management & Storage
Monitoring & Logs
Assessment and reporting
Resource & Usage Auditing
SECURITY & COMPLIANCE
Configuration Compliance
Web application firewall
HYBRIDARCHITECTURE
Data Backups
Integrated App Deployments
DirectConnect
IdentityFederation
IntegratedResource Management
Integrated Networking
API Gateway
IoT
Rules Engine
Device Shadows
Device SDKs
Registry
Device Gateway
Streaming Data Analysis
Business Intelligence
MobileAnalytics
So let’s start from…
1 User
• Amazon Route 53 for DNS• A single Elastic IP• A single Amazon EC2
instance• With full stack on this host
• Web app• Database• Management• And so on…
Amazon EC2
instance
Elastic IP
UserAmazon Route 53
“We’re gonna need a bigger box”
• Simplest approach• 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
c4.8xlarge
m3.2xlarge
t2.micro
1 User
• 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
UserAmazon Route 53
Users > 1
First, let’s separate out our single host into more than one.• Web• Database
§ Make use of a database service?
Web Instance
DatabaseInstance
Elastic IP
UserAmazon Route 53
Database options
Self-managed Fully managed
Database server on Amazon EC2
Your choice of database running on
Amazon EC2
Bring Your Own License (BYOL)
Amazon DynamoDB
Managed NoSQL database service
using SSD storage
Seamless scalability Zero administration
Amazon RDSMicrosoft SQL Server
OracleMySQL
PostgreSQLMariaDB
Amazon Aurora
BYOL or license Included
Amazon Redshift
Massively parallel, petabyte-scale data warehouse service
Fast, powerful, and easy to scale
Users > 100
First, let’s separate out our single host into more than one:• Web• Database
§ Use Amazon RDS to make your life easier
Web instance
Elastic IP
RDS DB instance
UserAmazon Route 53
Users > 1000
Next, let’s address our lack of failover and redundancy issues:
Another web instance• In another Availability Zone
RDS Multi-AZElastic Load Balancing (ELB)
Web Instance
RDS DB InstanceActive (Multi-AZ)Availability Zone Availability Zone
Web Instance
RDS DB Instance Standby (Multi-AZ)
ELB Balancer
UserAmazon Route 53
Elastic Load Balancing
• Highly available• 1 - 65535• Health checks• Session stickiness• Secure sockets layer• Monitoring• Logging
Scaling…
horizontally
vert
ical
ly
Users > 10,000s–100,000s
RDS DB InstanceActive (Multi-AZ)
Availability Zone Availability Zone
RDS DB Instance Standby (Multi-AZ)
ELB Balancer
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 53User
RDS DB InstanceActive (Multi-AZ)
Availability Zone
ELB Balancer
Amazon S3
Amazon CloudFront
Amazon Route 53
User
Shift some load around
Web Instances
• static content to Amazon S3 and Amazon CloudFront
Move…
Amazon Simple Storage Service (S3)
• Object-based storage • Highly durable• Great for static assets• “Infinitely scalable”• Objects up to 5 TB in size• Optional encryption
Amazon CloudFront
• Cache content for faster delivery• Lower load on origin• Dynamic and static content• Streaming video• Custom SSL certificates• Low TTLs (as short as 0 seconds)• Free origin fetches?• Optimized for AWS
Shift some load around
• static content to Amazon S3 and Amazon CloudFront
Move…
• session/state to Amazon DynamoDB
• DB caching to Amazon ElastiCache
RDS DB InstanceActive (Multi-AZ)
Availability Zone
ELB Balancer
Amazon S3
Amazon CloudFront
Amazon Route 53
User
ElastiCache DynamoDB
Web Instances
Amazon DynamoDB
• Managed NoSQL database• Provisioned throughput• Fast, predictable performance• Fully distributed, fault tolerant• JSON support• Items up to 400 KB
Amazon Elasticache
• Managed Memcached or Redis• Scale from one to many nodes• Self-healing (replaces dead instance)• Single digit ms speeds (usually)• Local to a single AZ for Memcache• Multi-AZ possible with Redis
Shift some load aroundMove…
• static content to Amazon S3 and Amazon CloudFront
• session/state to Amazon DynamoDB
• DB caching to Amazon ElastiCache
• dynamic content to Amazon CloudFront
RDS DB InstanceActive (Multi-AZ)
Availability Zone
ELB Balancer
Amazon S3
Amazon CloudFrontUser
ElastiCache DynamoDB
Web Instances
Amazon Route 53
Auto Scaling!
Auto ScalingAutomatic resizing of compute clusters Define min/max pool sizesCloudWatch metrics drive scalingOn-demand or Spot instances
aws autoscaling create-auto-scaling-group--auto-scaling-group-name MyGroup--launch-configuration-name MyConfig--min-size 4--max-size 200--availability-zones eu-west-1a, eu-west-1b
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Typical weekly traffic to Amazon.com
Sunday Monday Tuesday Wednesday Thursday Friday Saturday
Typical weekly traffic to Amazon.com
Provisioned capacity
November
November traffic to Amazon.com
Provisioned capacity
November
November traffic to Amazon.com
November traffic to Amazon.com76%
24%November
Provisioned capacity
November traffic to Amazon.com
November
= one user
= 100,000 users= 1,000,000 users
Users > 500.000+
Availability Zone
Amazon Route 53
User
Amazon S3
Amazon CloudFront
Availability Zone
ELB Balancer
DynamoDBRDS DB Instance
Read Replica
Web Instance
Web Instance
Web Instance
ElastiCache RDS DB Instance Read Replica
Web Instance
Web Instance
Web Instance
ElastiCacheRDS DB Instance Standby (Multi-AZ)
RDS DB InstanceActive (Multi-AZ)
Use automation
AWS application management solutions
Convenience Control
Higher-level services Do it yourself
AWSElastic Beanstalk
AWSOpsWorks
AWSCloudFormation Amazon EC2
SOAing
Move services into their own tiers.• Treat them separately and scale them
independently.
Amazon and AWS do this extensively!
It offers flexibility and greater understanding of each component
Microservices approach w/ Containers
Leverage API Gateway & Lambda + Load Balancing
Loose coupling + SOA = winning
DON’T REINVENT THE WHEEL
• Email• Queuing• Transcoding• Search• Monitoring• Metrics• Logging• Compute
Amazon CloudSearch
Amazon SQSAmazon SNS
Amazon Elastic Transcoder
Amazon SWFAmazon SES
AWS Lambda
Users >1 million+
RDS DB InstanceActive (Multi-AZ)
Availability Zone
ELB Balancer
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
DynamoDB
Amazon SQS
ElastiCache
WorkerInstance
WorkerInstance
Amazon CloudWatch
Internal AppInstance
Internal AppInstance Amazon SES
Lambda
Users > 5 million - 10 million
You’ll potentially start to run into issues with your database around contention on the write master.
How can you solve it?• Federation—splitting into multiple DBs based on function• Sharding—splitting one dataset up across multiple hosts• Moving some functionality to other types of DBs (NoSQL, Graph)
Database federation• Split up databases by function/purpose
• Harder to do cross-function queries
• Essentially delays sharding/NoSQL
• Won’t help with single huge functions/tables
Forums DB
Users DB
Products DB
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
User ShardID
002345 A
002346 B
002347 C
002348 B
002349 A
CBA
Shifting functionality to NoSQL• Similar in a sense to federation
• Again, think about the earlier points for when you need NoSQL vs. SQL
• Leverage managed services like DynamoDB
Some use cases:• Leaderboards/scoring• Rapid ingest of clickstream/log data• Temporary data needs (cart data)• “Hot” tables• Metadata/lookup tablesDynamoDB
Congratulations!!
You’ve become acloud ninja!!
Next steps?
READ! aws.amazon.com/documentationaws.amazon.com/architecture
START USING AWS: aws.amazon.com/free/
Ask for Help!
forums.aws.amazon.comaws.amazon.com/premiumsupport/
Your Account Manager
A Solutions Architect
Thank you!