Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

70
José Papo AWS Tech Evangelist @josepapo

description

Link para o vídeo gravado do webinar: https://vimeo.com/68720156

Transcript of Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Page 1: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

José Papo

AWS Tech Evangelist

@josepapo

Page 2: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Então, como ter escalabilidade na Nuvem?

Page 3: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Auto-Scaling???

Page 4: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Começando pelo básico primeiro

Page 5: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

US-WEST (Oregon) EU-WEST (Ireland)

ASIA PAC (Tokyo)

US-WEST (N. California)

SOUTH AMERICA (Sao Paulo)

US-EAST (Virginia)

AWS GovCloud (US)

ASIA PAC

(Sydney)

Regiões

ASIA PAC

(Singapore)

Page 6: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

US-WEST (Oregon) EU-WEST (Ireland)

ASIA PAC (Tokyo)

US-WEST (N. California)

SOUTH AMERICA (Sao Paulo)

US-EAST (Virginia)

AWS GovCloud (US)

ASIA PAC

(Sydney)

Zonas de Disponibilidade

ASIA PAC

(Singapore)

Page 7: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Compute Storage

AWS Global Infrastructure

Database

App Services

Deployment & Administration

Networking

Page 8: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Compute Storage

AWS Global Infrastructure

Database

App Services

Deployment & Administration

Networking

Amazon

CloudWatch AWS IAM AWS

CloudFormation

Amazon Elastic

Beanstalk AWS

Data

Pipeline

AWS

OpsWorks

Amazon

CloudSearch Amazon SQS Amazon

SNS

Amazon

Elastic

Transcoder

Amazon SWF Amazon SES

Amazon

DynamoDB

Amazon RDS

Amazon

ElastiCache

Amazon

RedShift

AWS Storage

Gateway

Amazon S3

Amazon

Glacier

Amazon

CloudFront Amazon

EC2

Amazon

EMR Amazon

VPC

Amazon

Route 53 AWS

Direct

Connect

Page 9: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Vamos então começar pelo dia

um, um usuário ( você! ):

Page 10: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Dia Um, Um Usuário

• Uma instancia EC2

– Stack completo • Aplicação Web

• Banco de Dados

• Gestão

• Etc.

• Um Elastic IP

• Route53 para DNS

EC2

Instance

Elastic IP

Amazon

Route 53 User

Page 11: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

“Precisamos de uma máquina maior”

• Modo mais simples

• Pode alavancar uso de PIOPs

• Instancias High I/O

• Instancias High Memory

• Instancias High CPU

• Instancias High Storage

• Fácil de mudar tamanhos de

instancias

• Vai eventualmente ter limitações

hi1.4xlarge

m2.4xlarge

m1.small

Page 12: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

“Precisamos de uma máquina maior”

• Modo mais simples

• Pode alavancar uso de PIOPs

• Instancias High I/O

• Instancias High Memory

• Instancias High CPU

• Instancias High Storage

• Fácil de mudar tamanhos de

instancias

• Vai eventualmente ter limitações

hi1.4xlarge

m2.4xlarge

m1.small

Page 13: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Dia Um, Um Usuário:

• Pode potencialmente atender

algumas centenas até alguns

milhares de usuários

dependendo da instancia,

complexidade da app e

tráfego

• Não tem failover

• Não tem redundância

• Todos os ovos no mesmo cesto

EC2

Instance

Elastic IP

Amazon

Route 53 User

Page 14: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Dia Um, Um Usuário:

• Pode potencialmente atender

algumas centenas até alguns

milhares de usuários

dependendo da instancia,

complexidade da app e

tráfego

• Não tem failover

• Não tem redundância

• Todos os ovos no mesmo cesto

EC2

Instance

Elastic IP

Amazon

Route 53 User

Page 15: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Dia Dois, Usuário >1:

Vamos primeiro

separar os recursos em

mais de uma instancia.

• Instancia Web

• Instancia de Banco Web

Instance

Database

Instance

Elastic IP

Amazon

Route 53 User

Page 16: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Gestão Própria Serviço Gerenciado

Banco de Dados

no Amazon EC2

Sua escolha de BD

no Amazon EC2

Bring Your Own

License (BYOL)

Amazon

DynamoDB

Serviço gerenciado

de BD NoSQL que

usa storage SSD

Amazon RDS

MS SQL Server,

Oracle ou MySQL

as a service

BYOL ou Licença

Incluída

Amazon

Redshift

Data Warehouse as

a service

distribuído e com

escala de petabytes

Opções de Bases de Dados

Page 17: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Que tecnologia usar?

SQL? NoSQL?

Page 18: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Depende do seu caso

de uso, mas…

Page 19: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Comece com aquilo que for

mais simples para você

Page 20: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Vamos começar com o

Amazon RDS nesse exemplo

Page 21: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Usuários >100:

Web

Instance

Elastic IP

RDS DB

Instance

Amazon

Route 53 User

Vamos primeiro separar

os recursos em mais de

uma instancia.

• Instancia Web

• Instancia de Banco

– Use o RDS para ter uma

vida mais simples!

Page 22: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Usuários > 1000:

Agora vamos endereçar

a falta de failover e

redundancia: • Elastic Load Balancer

• Mais uma Instancia Web

– Em outra Zona de Disponibilidade

• Habilitar RDS Multi-AZ

Web

Instance

RDS DB Instance

Active (Multi-AZ)

Availability Zone Availability Zone

Web

Instance

RDS DB Instance

Standby (Multi-AZ)

Elastic Load

Balancer

Amazon

Route 53 User

Page 23: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Escalando

horizontalmente e

verticalmente podemos

chegar bem longe ( 10s-100s de milhares )

Page 24: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Usuários >10ks-100ks:

RDS DB Instance

Active (Multi-AZ)

Availability Zone Availability Zone

RDS DB Instance

Standby (Multi-AZ)

Elastic Load

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 53 User

Page 25: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Isso realmente nos levará

longe, mas queremos

também performance e

eficiência. Vamos limpar um

pouco mais

Page 26: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Mova a carga:

Diminua a carga nas

instancias Web e BD:

• Mova conteúdo estático da

instancia Web para o S3 e

CloudFront

• Mova estado/sessões e faça

cache do BD com ElastiCache

e/ou DynamoDB

Web

Instance

RDS DB Instance

Active (Multi-AZ)

Availability Zone

Elastic Load

Balancer

Amazon S3

Amazon

Cloudfront Amazon

Cloudfront Amazon

Cloudfront Amazon

Cloudfront Amazon

Cloudfront

Amazon

Cloudfront

Amazon

Route 53 User

ElastiCache

Cache Node ElastiCache

Cache Node ElastiCache

Cache Node

ElastiCache

DynamoDB

Page 27: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Agora que nossas camadas

Web e de BD estão mais

leves vamos voltar ao início

da nossa discussão…

Page 28: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Auto-Scaling!!!

Page 29: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Escalabilidade automática de

instancias de acordo com políticas

definidas

Trigger auto-scaling

policy

as-create-auto-scaling-group MyGroup

--launch-configuration MyConfig

--availability-zones us-east-1a

--min-size 4

--max-size 200

Auto-Scaling

Amazon

CloudWatch

Page 30: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Tráfego em Novembro na Amazon.com

November

Page 31: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Provisioned capacity

November

Tráfego em Novembro na Amazon.com

Page 32: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

76%

24%

Provisioned capacity

November

Tráfego em Novembro na Amazon.com

Page 33: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

November

Tráfego em Novembro na Amazon.com

Auto Scaling

Page 34: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

É possível fazer ainda mais

melhorias deixando suas

camadas ainda mais leves e

orientadas a serviços

Page 35: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários
Page 36: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

SOA = Service Oriented Architecture

Page 37: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Baixo acoplamente te liberta!

• Reduza o acoplamento para escalar ainda mais

– Componentes independentes

– Projete-os como uma caixa preta

– Desacople as integrações

– Prefira serviços já construídos com redundancia e

escalabilidade ao invés de contruir novamente

Controller A Controller B

Controller A Controller B

Q Q

Alto acomplamento

Use Amazon SQS como Buffers

Baixo acoplamento

Page 38: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Baixo acoplamento + SOA = Win!

Exemplos:

• Email

• Filas

• Transcoding de Vídeos

• Busca

• Bancos de Dados

• Monitoramento

• Métricas

• Logs

Amazon

CloudSearch Amazon SQS Amazon SNS

Amazon Elastic

Transcoder Amazon SWF

Amazon SES

Não reinvente a roda!

Page 39: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Baixo acoplamento + SOA

Exemplo

Page 40: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Imagine um site/app para

upload e compartilhamento

de fotos entre usuários

Page 41: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Exemplo usando filas de

mensagem SQS

Page 42: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

S3 Bucket

For Ingest

User

SNS Topic

RRS S3

Bucket to

Serve

content to

CloudFront

S3 Bucket

For

originals

CloudFront

Download

Distribution

SQS Queue

Size for Thumbnail

SQS Queue

Size Image for

Mobile

SQS Queue

Size Image for Web

Auto scaling

Group

Instances

Auto scaling

Group

Instances

Auto scaling

Group

Instances

Page 43: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Exemplo usando serviço

Simple Workflow (SWF)

Page 44: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

S3 Bucket

For Ingest

User

RRS S3

Bucket to

Serve

content to

CloudFront

S3 Bucket

For

originals

CloudFront

Download

Distribution

Auto scaling

Group

Instances

Auto scaling

Group

Instances

Auto scaling

Group

Instances

SWF

Instance running

decider

Page 45: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Usuários >1milhão+:

Chegar em um milhão e além requer uma arquitetura que utilize os recursos vistos anteriormente:

• Multi-AZ

• Elastic Load Balancer entre as camadas

• Auto-Scaling

• Service oriented architecture

• Servir conteúdo estático com as soluções certas ( S3/CloudFront )

• Cache e réplicas de bases de dados

• Mover estado para fora das camadas com auto-scaling

Page 46: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Usuários >1milhão+:

RDS DB Instance

Active (Multi-AZ)

Availability Zone

Elastic Load

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

Worker

Instance

Worker

Instance

Amazon

CloudWatch

Internal App

Instance

Internal App

Instance Amazon SES

Page 47: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Próximos passos

Page 48: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Usuários > 10milhões+:

Você provavelmente encontrará dificuldades com sua

base de dados nas escritas no BD Master.

Como resolver?

• Sharding ( separar conjuntos de dados em mais de

uma base de dados )

• Mover funcionalidades para outros tipos de BDs (

NoSQL )

Page 49: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Sharding

• Mais complexo para a

camada de aplicação

• Complexidade

operacional

• Shard por função ou

chave

User ShardID

002345 A

002346 B

002347 C

002348 B

002349 A

A

B

C

Page 50: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Mover funcionalidades para NoSQL

• Soluções NoSQL usualmente possuem

escalabilidade horizontal transparente

• Use serviços gerenciados como o

DynamoDB

DynamoDB

Page 51: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Você também poderá ter problemas relacionados a

velocidade ou performance.

• Tenha soluções de monitoração/métricas/logs

– Se possível, use soluções prontas! ( SaaS )

• Preste atenção no que seus usuários estão dizendo

• Verifique a performance de cada serviço/componente

Usuários > 10milhões+:

Page 52: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

HOST

LEVEL

METRICS

AGGREGATE

LEVEL

METRICS

LOG

ANALYSIS

EXTERNAL

SITE

PERFORMANCE

Page 53: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

AWS Marketplace & Partners AWS podem ajudar

Saiba mais em: aws.amazon.com/marketplace

Page 54: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Usuários > 10 milhões+:

Gerenciar sua infraestrutura será fundamental com

número de instancias e recursos utilizados em

crescimento. Use ferramentas para automatizar tarefas.

• Ferramentas da AWS

• Ferramentas de gestão de configuração

• Análise automatizada de logs e ações de usuários

Page 55: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Soluções de Gestão de Aplicações da AWS

Elastic Beanstalk OpsWorks CloudFormation EC2

Conveniência Controle

Serviços de Alto Nível Faça você mesmo

Page 56: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Host Based Configuration Management

Dois grandes players: – Opscode Chef

– PuppetLabs Puppet

• São parecidos em recursos

• Use HBCM junto com uma das soluções da AWS (OpsWorks integra com Chef e CloudFormation com Chef ou Puppet)

• Mais difícil gerenciar muitos recursos computacionais sem HBCM

Page 57: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Breve revisão sobre

escalabilidade

Page 58: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Pense em redundância em

todas as camadas

Page 59: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Multi-AZ na sua infraestrutura

Page 60: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Faça uso de serviços prontos

( ELB, S3, SNS, SQS, SWF,

SES, etc )

Page 61: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Use SQL ou NoSQL de

acordo com os requisitos de

seu negócio

Page 62: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Crie uma arquitetura

orientada a serviços ( SOA )

Page 63: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Use Auto-scaling quando

precisar crescer ou diminuir

automaticamente

Page 64: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Use ferramentas de automação

sempre que possível

Page 65: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Tenha soluções de

métricas/monitoração/logs

Page 66: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Não reinvente a roda!

Page 67: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

Pensando nesses elementos

você certamente poderá

atender dezenas e até centenas

de milhões de usuários!

Page 68: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

aws.amazon.com/pt/architecture

Saiba mais em…

Page 69: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

RECURSOS TÉCNICOS

awshub.com.br

Page 70: Escalabilidade para sua solução na Nuvem da AWS de um para centenas de milhões de usuários

OBRIGADO! aws.typepad.com/brasil

slideshare.net/AmazonWebServicesLATAM

José Papo

AWS Tech Evangelist

@josepapo