aplicaciones a gran escala: cómo servir a millones de usuarios

64
© 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 2 nd , 2016 Aplicaciones a gran escala Cómo servir a millones de usuarios #AWSSummit @awscloud_es

Upload: amazon-web-services

Post on 09-Jan-2017

97 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Aplicaciones a gran escala: Cómo servir a millones de usuarios

© 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

Page 2: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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/

Page 3: Aplicaciones a gran escala: Cómo servir a millones de usuarios
Page 4: Aplicaciones a gran escala: Cómo servir a millones de usuarios
Page 5: Aplicaciones a gran escala: Cómo servir a millones de usuarios

So how do we scale?

One size does not fit all !!

Page 6: Aplicaciones a gran escala: Cómo servir a millones de usuarios

Auto Scaling??...Not Yet..

Let’s start with some basics….

Page 7: Aplicaciones a gran escala: Cómo servir a millones de usuarios

AWS Regions 12 (+ 5)33 (+11)

RegionsAvailability Zones

Page 8: Aplicaciones a gran escala: Cómo servir a millones de usuarios

Example AWS Region

AZ

AZ

AZ AZ AZ

Transit

Transit

Re:Invent 2014 (SPOT301)https://www.youtube.com/watch?v=JIQETrFC_SQ

Page 9: Aplicaciones a gran escala: Cómo servir a millones de usuarios

Example AWS Availability Zone

AZ

AZ

AZ AZ AZ

Transit

Transit

Page 10: Aplicaciones a gran escala: Cómo servir a millones de usuarios

Example AWS Data Center

Page 11: Aplicaciones a gran escala: Cómo servir a millones de usuarios

AWS Edge locations 55 Edge locations

Page 12: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Email

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

Page 13: Aplicaciones a gran escala: Cómo servir a millones de usuarios

So let’s start from…

Page 14: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 15: Aplicaciones a gran escala: Cómo servir a millones de usuarios

“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

Page 16: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 17: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 18: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 19: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 20: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 21: Aplicaciones a gran escala: Cómo servir a millones de usuarios

Elastic Load Balancing

• Highly available• 1 - 65535• Health checks• Session stickiness• Secure sockets layer• Monitoring• Logging

Page 22: Aplicaciones a gran escala: Cómo servir a millones de usuarios

Scaling…

horizontally

vert

ical

ly

Page 23: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 24: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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…

Page 25: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 26: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 27: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 28: Aplicaciones a gran escala: Cómo servir a millones de usuarios

Amazon DynamoDB

• Managed NoSQL database• Provisioned throughput• Fast, predictable performance• Fully distributed, fault tolerant• JSON support• Items up to 400 KB

Page 29: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 30: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 31: Aplicaciones a gran escala: Cómo servir a millones de usuarios

Auto Scaling!

Page 32: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 33: Aplicaciones a gran escala: Cómo servir a millones de usuarios

Sunday Monday Tuesday Wednesday Thursday Friday Saturday

Typical weekly traffic to Amazon.com

Page 34: Aplicaciones a gran escala: Cómo servir a millones de usuarios

Sunday Monday Tuesday Wednesday Thursday Friday Saturday

Typical weekly traffic to Amazon.com

Provisioned capacity

Page 35: Aplicaciones a gran escala: Cómo servir a millones de usuarios

November

November traffic to Amazon.com

Page 36: Aplicaciones a gran escala: Cómo servir a millones de usuarios

Provisioned capacity

November

November traffic to Amazon.com

Page 37: Aplicaciones a gran escala: Cómo servir a millones de usuarios

November traffic to Amazon.com76%

24%November

Provisioned capacity

Page 38: Aplicaciones a gran escala: Cómo servir a millones de usuarios

November traffic to Amazon.com

November

Page 39: Aplicaciones a gran escala: Cómo servir a millones de usuarios

= one user

= 100,000 users= 1,000,000 users

Page 40: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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)

Page 41: Aplicaciones a gran escala: Cómo servir a millones de usuarios

Use automation

Page 42: Aplicaciones a gran escala: Cómo servir a millones de usuarios

AWS application management solutions

Convenience Control

Higher-level services Do it yourself

AWSElastic Beanstalk

AWSOpsWorks

AWSCloudFormation Amazon EC2

Page 43: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 44: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 45: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 46: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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)

Page 47: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 48: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 49: Aplicaciones a gran escala: Cómo servir a millones de usuarios

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

Page 50: Aplicaciones a gran escala: Cómo servir a millones de usuarios

Congratulations!!

You’ve become acloud ninja!!

Page 51: Aplicaciones a gran escala: Cómo servir a millones de usuarios
Page 52: Aplicaciones a gran escala: Cómo servir a millones de usuarios
Page 53: Aplicaciones a gran escala: Cómo servir a millones de usuarios
Page 54: Aplicaciones a gran escala: Cómo servir a millones de usuarios
Page 55: Aplicaciones a gran escala: Cómo servir a millones de usuarios
Page 56: Aplicaciones a gran escala: Cómo servir a millones de usuarios
Page 57: Aplicaciones a gran escala: Cómo servir a millones de usuarios
Page 58: Aplicaciones a gran escala: Cómo servir a millones de usuarios
Page 59: Aplicaciones a gran escala: Cómo servir a millones de usuarios
Page 60: Aplicaciones a gran escala: Cómo servir a millones de usuarios
Page 61: Aplicaciones a gran escala: Cómo servir a millones de usuarios
Page 62: Aplicaciones a gran escala: Cómo servir a millones de usuarios

Next steps?

READ! aws.amazon.com/documentationaws.amazon.com/architecture

START USING AWS: aws.amazon.com/free/

Page 63: Aplicaciones a gran escala: Cómo servir a millones de usuarios

Ask for Help!

forums.aws.amazon.comaws.amazon.com/premiumsupport/

Your Account Manager

A Solutions Architect

Page 64: Aplicaciones a gran escala: Cómo servir a millones de usuarios

Thank you!