97
© 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc. © 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc. Escalando na AWS até os Primeiros 10 Milhões de Usuários Fábio Aragão da Silva Arquiteto de Soluções Amazon Web Services LATAM 27 de Maio de 2014

Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Embed Size (px)

DESCRIPTION

Apresentações do AWS Summit Sao Paulo 2014. Baixe o conteúdo preparado por nossos especialistas para auxiliá-lo na jornada para a nuvem.

Citation preview

Page 1: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

© 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc. © 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.

Escalando na AWS até os

Primeiros 10 Milhões de Usuários Fábio Aragão da Silva

Arquiteto de Soluções

Amazon Web Services LATAM

27 de Maio de 2014

Page 2: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Escalando na AWS até os Primeiros 10 Milhões de

Usuários

• EU: – Fábio Aragão da Silva – [email protected]

• VOCÊS: Estão aqui para aprender mais sobre

como escalar sua infraestrutura na AWS

• HOJE: Veremos as melhores praticas e

considerações para quanto estiverem

projetando em larga escala na AWS

Page 3: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Escalado até 10 milhões de usuários: uma estória

em quatro capítulos

• Introdução e Primeiros Passos

• Fundação

• Ferramentas e Monitoração

• 10 Milhões de Usuários e Além

Page 4: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

E então, como escalar?

Page 5: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
Page 6: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
Page 7: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Bastante

material pra ler

Page 8: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Não é por

onde

deveriamos

começar

Bastante

material pra ler

Page 9: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Auto Scaling é uma

ferramenta e um destino.

Mas não é a única solução

mágica que resolve todos os

problemas.

Page 10: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

E então:

o que fazer

primeiramente?

Page 11: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Começando pelo

básico…

Page 12: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Regiões US-WEST (Oregon)

EU-WEST (Ireland)

ASIA PAC (Tókio)

US-WEST (N. California)

AMÉRICA DO SUL (São Paulo)

US-EAST (Virginia)

AWS GovCloud (US)

ASIA PAC

(Sydney)

ASIA PAC

(Singapore)

CHINA (Beijing)

Page 13: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Zonas de Disponibilidade US-WEST (Oregon)

EU-WEST (Ireland)

ASIA PAC (Tókio)

US-WEST (N. California)

AMÉRICA DO SUL (São Paulo)

US-EAST (Virginia)

AWS GovCloud (US)

ASIA PAC

(Sydney)

ASIA PAC

(Singapore)

CHINA (Beijing)

Page 14: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Pontos de Presença

Page 15: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

• Negócio de mais de $7B

• Mais de 8,000 funcionários

• Uma porrada grande

quantidade de servidores

Todos os dias, a AWS

acrescenta capacidade

computacional equivalente a

esse negócio de $7B em 2004

2004 2014

Page 16: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Computação Armazenagem

& Entrega de

Conteúdo

Infraestrutura Global da AWS

Banco de

Dados

Serviços para Aplicações

Deployment & Administração

Redes

Page 17: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

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

Amazon

Kinesis

Amazon

CloudWatch AWS IAM AWS

CloudFormation

Amazon Elastic

Beanstalk AWS

Data

Pipeline

AWS

OpsWorks AWS

CloudTrail

Computação Armazenagem

& Entrega de

Conteúdo

Infraestrutura Global da AWS

Banco de

Dados

Serviços para Aplicações

Deployment & Administração

Redes

Page 18: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Vamos começar então

pelo dia um, com um

usuário ( você )

Page 19: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Dia Um, Um Usuário:

• Uma única instância EC2 – Com toda a pilha de software no

servidor • Servidor de Aplicações WEB

• Banco de Dados

• Gerenciamento

• etc.

• Um único endereço IP elástico

• Amazon Route 53 como DNS

Instância

EC2

Endereço IP

Elástico

Amazon

Route 53 Usuário

Page 20: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

“Putz Vamos precisar de uma caixa maior”

• Abordagem mais simples

• Agora podendo usar PIOPs

• Instâncias para I/O Alto

• Instâncias para Memória Alta

• Instâncias para CPU Alta

• Instâncias para Armazenagem Alta

• É fácil trocar o tipo de instância

• Mas vai atingir um limite m3.xlarge

m1.small

i2.4xlarge

Page 21: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

m3.xlarge

m1.small

i2.4xlarge

“Putz Vamos precisar de uma caixa maior”

• Abordagem mais simples

• Agora podendo usar PIOPs

• Instâncias para I/O Alto

• Instâncias para Memória Alta

• Instâncias para CPU Alta

• Instâncias para Armazenagem Alta

• É fácil trocar o tipo de instância

• Mas vai atingir um limite

Page 22: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Dia Um, Um Usuário:

• Poderiamos chegar

potencialmente a dezenas ou

até alguns milhares de

usuários dependendo do

tráfego e da complexidade da

aplicação

• Mas sem tolerância a falhas

• E sem redundância

Instância

EC2

Endereço IP

Elástico

Amazon

Route 53 Usuário

Page 23: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Dia Um, Um Usuário:

• Poderiamos chegar

potencialmente a dezenas ou

até alguns milhares de

usuários dependendo do

tráfego e da complexidade da

aplicação

• Mas sem tolerância a falhas

• E sem redundância

Instância

EC2

Endereço IP

Elástico

Amazon

Route 53 Usuário

Page 24: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Dia Dois, Usuários > 1: Primeiramente, vamos separar nosso host “monolítico” em mais de um servidor:

• Servidor Web

• Servidor de Banco de Dados – E que tal fazer uso de um

serviço de Banco de Dados gerenciado?

Instância

WEB

Instância

de Banco

Endereço

IP elástico

Amazon

Route 53 Usuário

Page 25: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Gerência Própria Completamente Gerenciado

Banco de Dados

na Amazon EC2

Sua escolha de banco

de dados rodando na

Amazon EC2

Traga sua própria

licença (BYOL)

Amazon

DynamoDB

Serviço de Banco

NoSQL gerenciado

usando discos de SSD

Escalabilidade simples

e nenhuma

administração

Amazon RDS

Microsoft SQL, Oracle,

MySQL or PostgreSQL

como serviço

gerenciado

Licenciamento flexível

BYOL or com licença

incluída

Amazon

Redshift

Serviço de data

warehouse altamente

paralelo, da ordem de

petabytes

Rápido, poderoso e

fácil de escalar

Opções de Bancos de Dados

Page 26: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Escalado até 10 milhões de usuários: uma estória em quatro capítulos

• Introdução e Primeiros Passos

• Fundação

• Ferramentas e Monitoração

• 10 Milhões de Usuários e Além

Page 27: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Mas como escolher a

tecnologia de Banco

de Dados ideal?

SQL? NoSQL?

Page 28: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Alguns de vocês

talvez não gostem

muito do que eu vou

falar agora. Mas…

Page 29: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Comece com Banco

de Dados SQL

Page 30: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

A não ser que você já

tenha uma equipe

bem familiar com

NoSQL…

Page 31: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Comece com Banco

de Dados SQL

Page 32: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Mas por que começar com SQL?

• É uma tecnologia bem conhecida e estável

• Muito código já existente, comunidades, livros,

ferramentas, etc.

• Você provavelmente não vai conseguir ”sentar” um

banco SQL antes dos seus primeiros 10 milhões de

usuários. É sério, você não vai conseguir*

• Padrões claros e bem conhecidos para escalar

* A não ser que você se esforce muito esteja manipulando enormes quantidades de

dados; ainda assim um banco SQL terá lugar na sua pilha de software

Page 33: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

A-há! Te peguei!

Você disse

“enormes

quantidades de

dados”. E eu vou

ter enooooormes

quantidades de

dados!

Page 34: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Só se a sua utilização estiver

gerando muitos TB ( >5 ) de dados

no primeiro ano OU você possuir um

fluxo extremamente intensivo em

termos de processamento de

dados… é que você provavelmente

vai precisar de verdade de NoSQL

Page 35: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Em todo caso, quando então usar

NoSQL? • Aplicações de latência super baixa

• Conjunto de dados orientado a metadados

• Dados altamente não-relacionais

• Necessidade de tabelas sem estrutura pré-definida*

• Quantidades massivas de dados (na casa dos TB)

• Ingestão rápida de dados ( milhares de registros/seg )

• Já possui equipe qualificada em NoSQL

*Necessidade != “é mais fácil pra desenvolver”

Page 36: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Quando NoSQL = Sim…

considere utilizar o DynamoDB

Page 37: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Amazon Dynamo DB

• Banco NoSQL gerênciado e

com throughput provisionado

• Performance rápida e

previsível

• Arquitetura completamente

distribuída e tolerante a falhas

Característica Detalhes

Throughput

provisionado

Suba ou desça a capacidade de

escrita e leitura facilmente

Performance

previsível

Latência média de um único

dígito através de arquitetura

baseada em discos SSD

Consistência

Forte

Tenha certeza de estar lendo os

valores mais atuais

Tolerância a

falhas

Dados replicados entre

diferentes Zonas de

Disponibilidade

Monitoramento Integrado ao Amazon

CloudWatch

Segurança Integrado ao AWS Identity and

Access Management (AWS

IAM)

Amazon EMR Integrado ao Amazon EMR para

análises complexas em grandes

conjuntos de dados

Page 38: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Mas de volta à

conversa inicial…

Vejamos como

podemos escalar um

banco de dados SQL

Page 39: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Usuários > 100:

Primeiramente, vamos separar nosso host “monolítico” em mais de um servidor:

• Servidor Web

• Servidor de Banco de Dados – Utilize o RDS para facilitar a

gestão e manutenção do seu banco de dados SQL

Instância

WEB

Endereço

IP elástico

Amazon

Route 53 Usuário

RDS DB

instance

Page 40: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Usuários > 1000:

Agora, vamos

endereçar a falta de

tolerância a falha e

redundância: • Com Elastic Load Balancing

• Com outra instância WEB

– Em outra zona de disponibiliza

• Habilitando Multi-AZ no RDS

Instância

WEB

Instância Amazon RDS

Ativa (Multi-AZ)

Zona de Disponibilidade Zona de Disponibilidade

Instância

WEB

Instância Amazon RDS

Standby (Multi-AZ)

Elastic Load

Balancing

Amazon

Route 53 Usuário

Page 41: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

• Crie aplicações altamente escaláveis

Característica Detalhes

Disponível Distribui carga entre instâncias em múltiplas

zonas de disponibilidade

Verificação de Saúde Verifica automaticamente a saúde das instâncias

e tira-as de serviço caso não estejam

respondendo

Afinidade de Sessão Roteia pedidos da mesma origem para a mesma

instância

Secure sockets layer Suporta SSL offload de servidores web e de

aplicação com suporte de cifragem flexível

Monitoração Publica métricas para o Amazon CloudWatch

Elastic Load

Balancing

Elastic Load Balancing

Page 42: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Escalabilidade vertical e

horizontal vai te permitir

ir longe ( de dezenas a centenas de

milhares de usuários )

Page 43: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Usuários > 10 mil - 100 mil:

RDS DB Instância

Ativa (Multi-AZ)

Zona de Disponibilidade Zona de Disponibilidade

RDS DB Instância

Standby (Multi-AZ)

Elastic Load

Balancing

RDS DB Réplica

de Leitura

RDS DB Réplica

de Leitura

RDS DB Réplica

de Leitura

RDS DB Réplica

de Leitura

Instância

WEB

Instância

WEB

Instância

WEB

Instância

WEB

Instância

WEB

Instância

WEB

Instância

WEB

Instância

WEB

Amazon

Route 53 Usuário

Page 44: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Essas medidas vão nos

levar longe, mas a gente se

importa com performance e

eficiência, então vamos

melhorar a arquitetura com

componentes e serviços

Page 45: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Movendo parte da carga:

Pense em componentes e

serviços:

• Mova conteúdo estático da

instância WEB para o S3 e o

Cloudfront

• Mova estado/sessão e cache

do banco de dados para o

ElastiCache e/ou o DynamoDB

• Mais serviços daqui a pouco…

Instância

WEB

RDS DB Instância

Ativa (Multi-AZ)

Zona de Disponibilidade

Elastic Load

Balancing

Amazon S3

Amazon

CloudFront

Amazon

Route 53 Usuário

ElastiCache

Amazon

DynamoDB

Page 46: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Trabalhando com o S3

• Serviço de armazenamento de objetos

para a web

• Projetado para onze noves de

durabilidade

• Bom para:

– Conteúdo estático (css, js, imagens,

vídeos)

– Backups

– Logs

• “Escalabilidade Infinita”

• Suporta controle fino de permissões

• Integrado ao CloudFront

• Integrado ao EMR

• Atua como endpoint de logging para o

S3/CloudFront/Billing

• Suporta criptografia de dados em

descanso e em trânsito

• Redundância reduzida é 1/3 mais barata

• Amazon Glaciar para armazenamento

barato de longo prazo

Page 47: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

CloudFront

Amazon CloudFront é um serviço web para

entrega escalável de conteúdo:

• Faz cache de conteúdo nos pontos de presença

para entrega mais rápida

• Ajuda a diminuir a carga na infra de origem

• Suporta conteúdo dinâmico e estático

• Suporta streaming de vídeo

• Suporta zone apex

• Suporta certificados SSL customizados

• TTL baixo (até 0 segundos)

• Baixo custo de transferência da origem (S3 e EC2)

• Otimizado para EC2, S3, ELB e Route 53

Tem

po

de

Re

spo

sta

Car

ga n

o S

ervi

do

r

Tem

po

de

Res

po

sta

Tem

po

de

Res

po

sta

Sem CDN Com CDN para

arquivos

estáticos

Com CDN para

arquivos

estáticos e

conteúdo

dinâmico

0

10

20

30

40

50

60

70

80

8:00AM

9:00AM

10:00AM

11:00AM

12:00PM

1:00PM

2:00PM

3:00PM

4:00PM

5:00PM

6:00PM

7:00PM

8:00PM

9:00PM

Vo

lum

e d

e D

ad

os

En

treg

ues

(G

bp

s)

Page 48: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Escalado até 10 milhões de usuários: uma estória

em quatro capítulos

• Introdução e Primeiros Passos

• Fundação

• Ferramentas e Monitoração

• 10 milhões de Usuários e Além

Page 49: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Agora que nossa camada

web está bem mais leve,

vamos voltar ao começo da

conversa…

Page 50: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Auto Scaling!

Page 51: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Mudança automática do tamanho do

cluster baseado na demanda

Disparo da política de auto-scaling

Característica Detalhes

Controle Permite definir as quantidades máximas e mínimas de servidores e quando e como as mudanças acontecem

Integrado ao Amazon CloudWatch

Permite utilizar as métricas colhidas pelo CloudWatch para decidir a melhor escalabilidade

Tipos de Instâncias Funciona com instâncias Spot e Sob Demanda; compatível com VPC

aws autoscaling create-auto-scaling-group --auto-scaling-group-name MyGroup --launch-configuration-name MyConfig --min-size 4 --max-size 200 --availability-zones us-west-2c

Auto Scaling Amazon

CloudWatch

Page 52: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Domingo Segunda Terça Quarta Quinta Sexta Sábado

Trafego típico na Amazon.com

Page 53: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Capacidade Provisionada

Trafego típico na Amazon.com

Domingo Segunda Terça Quarta Quinta Sexta Sábado

Page 54: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Trafego em Novembro na Amazon.com

Novembro

Page 55: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Trafego em Novembro na Amazon.com

Capacidade Provisionada

Novembro

Page 56: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Trafego em Novembro na Amazon.com 76%

24%

Capacidade Provisionada

Novembro

Page 57: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Trafego em Novembro na Amazon.com

Novembro

Page 58: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Auto Scaling

te permite fazer isso!

Page 59: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Auto Scaling pode escalar

desde uma instância até

milhares de instâncias e

depois voltar

Page 60: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Usuários > 500 mil:

Zona de Disponibilidade

Amazon

Route 53 Usuário

Amazon S3

Amazon

CloudFront

Zona de Disponibilidade

Elastic Load

Balancing

Amazon

DynamoDB RDS DB Réplica

de Leitura

Instância

WEB

Instância

WEB

Instância

WEB

ElastiCache RDS DB Réplica

de Leitura

Instância

WEB Instância

WEB

Instância

WEB

ElastiCache RDS DB Instância

Standby (Multi-AZ) RDS DB Instancia

Ativa (Multi-AZ)

Page 61: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
Page 62: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Use Ferramentas: Gerenciar sua infraestrutura vai tomar uma parte

considerável e cada vez maior do seu tempo. Utilize então

ferramentas para automatizar as tarefas repetitivas.

• Ferramentas para gerenciar recursos da AWS

• Ferramentas de gestão de software and configuração

das instâncias (chef, puppet, salt, ansible, etc.)

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

Page 63: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

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

AWS

Elastic Beanstalk

AWS

OpsWorks

AWS

CloudFormation Amazon EC2

Conveniência Controle

Serviços de mais alto nível Faça você mesmo

Page 64: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Nesse ponto, você provavelmente vai encontrar problemas de

performance na aplicação:

• Tenha monitoramento/métricas/logging

– Se não puder construir, utilize soluções prontas de terceiros!

(Software-as-a-Service)

• Tire o máximo de informações que puder de cada

componente ou serviço

Usuários > 500 mil:

Page 65: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

MÉTRICAS

DO HOST

MÉTRICAS

AGREGADAS

ANÁLISE

DE LOG

PERFORMANCE

DO SITE

Page 66: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

AWS Marketplace & Parceiros podem ajudar

• Clientes podem pesquisar,

encontrar e comprar software

• Precificação simplificada,

alinhada com o modelo do EC2

• Início em minutos

• Cobrança integrada na sua

conta da AWS

• Mais de 1300 produtos em mais

de 20 categorias

Saiba mais em: aws.amazon.com/marketplace

Page 67: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Escalado até 10 milhões de usuários: Uma estória

em quatro capítulos

• Introdução e Primeiros Passos

• Fundação

• Ferramentas e Monitoração

• 10 Milhões de Usuários e Além

Page 68: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Agora não há mais como

melhorar apenas

quebrando ainda mais a

camada web e de

aplicação

Page 69: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
Page 70: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

SOA = Service Oriented Architecture, ou

Arquitetura Orientada a Serviços

Page 71: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

SOA’ndo Mova os serviços para suas

próprias camadas/modulos. Trate

cada um desses serviços como

peças 100% separadas da sua

infraestrutura e escale-os

independentemente.

A Amazon.com e a AWS fazem

isso extensivamente! Essa

abordagem oferece flexibilidade e

maior entendimento de cada

componente.

Page 72: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

O Baixo Acoplamento Vos Libertará!

• Quanto menos acoplamento, mais escalabilidade:

– Componentes Independentes

– Projete tudo como se fosse uma caixa preta

– Desacople as interações

– Dê preferência a serviços que já possuam redundência e

escalabilidade ao invés de construir seus próprios

Controlador A Controlador B

Controlador A Controlador B

FILA

Alto Acoplamento

Use o Amazon SQS para buffers

Baixo Acoplamento FILA

Page 73: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Baixo Acomplamento + SOA = Vitória

Exemplos:

• Email / Filas / Notificação

• Transcodificação

• Busca

• Banco de Dados

• Monitoração

• Workflow

• Logging

Amazon

CloudSearch Amazon SQS Amazon SNS

Amazon Elastic

Transcoder Amazon SWF

Amazon SES

Quando estiver começando, se encontrar algum serviço

que já faça o que você quer, prefira utilizá-lo no lugar de

construí-lo você mesmo.

NÃO REINVENTE A RODA

Page 74: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Sobre reinventar a roda…

Se você estiver escrevendo

seu próprio serviço de: fila,

DNS, banco de dados,

armazenamento, monitoração

Page 75: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

PARE AGORA !!!

Page 76: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Vamos fazer uma pausa

rápida para conhecermos o

caso da AgênciaClick

Isobar

Page 77: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

• Parte da Dentsu Aegis Network (+130 países, +300 agências, +36.000 profissionais)

• Média de 380 implantações por mês (mais de 4.550 por ano)

• Projetos diversificados e com várias constraints tecnológicas diferentes

• Estamos sempre correndo contra o tempo

Cada vez mais estamos conseguindo mostrar para nossos clientes os benefícios e ganhos em utilizar uma infraestrutura cloud based como a AWS

Page 78: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

• O nosso maior desafio é lidar

com um volume de acesso

variável com grandes picos.

• A Amazon Web Services nos

dá a flexibilidade e

escalabilidade necessárias

em momentos críticos das

campanhas.

• Garantir o funcionamento de sites de campanhas onde o volume de acessos é extremamente variável.

• Manter o custo fixo baixo da infra destas campanhas, aumentando o número de servidores quando necessário.

• Projetos muitas vezes casados com campanhas off-line com alto investimento em mídia gerando picos monstruosos de acesso (as vezes de surpresa!)

• Transpor barreiras impostas pelo departamento de tecnologia de nossos clientes, acostumados com o modelo antigo de infraestrutura.

Page 79: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Sobre a o da AWS e Benefícios

alcançados

• Implantação sem entraves, independente da tecnologia.

• Redução e previsibilidade dos custos fixos de projetos

• Escalabilidade e alta disponibilidade

• Suporte e consultoria pela ADTSys

Page 80: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

De volta a SOA

Page 81: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Usuários > 1 milhão: Alcançar um milhão de usuários e além vai exigir um pouco

mais das coisas discutidas anteriormente:

• Multi-AZ

• Elastic Load Balancing entre as camadas

• Auto Scaling

• Arquitetura SOA

• Entrega inteligente de conteúdo (Amazon S3/CloudFront)

• Cache dos dados do Banco de Dados

• Remoção de estado das camadas que usam auto scaling

Page 82: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Usuários > 1 milhão:

RDS DB Instance

Active (Multi-AZ)

Zona de Disponibilidade

Elastic Load

Balancing

RDS DB Réplica

de Leitura

RDS DB Réplica

de Leitura

Instância

WEB

Instância

WEB

Instância

WEB

Instância

WEB

Amazon

Route 53 User

Amazon S3

Amazon

CloudFront

Amazon

DynamoDB

Amazon SQS

ElastiCache

Instância

Worker

Instância

Worker

Amazon

CloudWatch

Instância de

Aplicação

Instância de

Aplicação Amazon SES

Page 83: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Os próximos grandes

passos

Page 84: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Usuários > 5 milhões – 10 milhões: Nesse ponto, você provavelmente vai começar a encontrar problemas no banco de dados em relação a contenção de escrita na base master.

Como resolver?

• Federação ~ divisão dos dados em múltiplas bases de dados a partir de suas funções

• Sharding ~ divisão dos dados em múltiplas bases de dados a partir dos dados em si

• Movimentação de algumas funcionalidades para outros tipos de Bancos de Dados (NoSQL)

Page 85: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Movendo funcionalidades para NoSQL

• Similar à federação

• Novamente, revise os pontos anteriores para determinar se você realmente precisa de NoSQL

• Use serviços gerenciados como Amazon DynamoDB

• Alguns casos de uso: – pontuação/quadro de liderança em jogos

– Ingestão rápida de logs

– Tabelas temporárias ( carrinho de compra ou sessão )

– Tabelas muito acessadas

– Tabelas de pesquisa e metadados

Amazon

DynamoDB

Page 86: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

…E finalmente chegamos

aos 10 milhões de usuários

Page 87: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Uma Revisão Rápida

Page 88: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Revisão

• Crie sempre sua infra-estrutura considerando Multi-AZ

• Use sempre serviços auto-escaláveis: – Elastic Load Balancing, Amazon S3, Amazon SNS, Amazon

SQS, Amazon SWF, Amazon SES, etc.

• Tenha redundância em todos os níveis

• Normalmente comece com SQL

• Utilize ferramentas de automação

Page 89: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Revisão (continuação)

• Tenha sempre métricas/monitoramento/logging

• Divida as camadas em serviços (SOA)

• Utilize Auto Scaling somente quando estiver pronto pra ele

• Não reinvente a roda

• Passe a usar NoSQL apenas quando realmente fizer sentido, mas faça o possível para não ter de administrá-lo (de preferência, use o DynamoDB)

Page 90: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Juntando tudo isso,

temos agora condições

de suportar até 10

milhões de usuários sem

grandes dores de cabeça

Page 91: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Ao infinito...

Page 92: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Usuários > 10 milhões:

• Mais ajustes finos na aplicação

• Mais funcionalidades e recursos de SOA

• Indo de Multi-AZ para Multi-Região

• Potencialmente vai precisar começar a construir

soluções customizadas (ferramentas criadas

pela Netflix, por exemplo)

• Análise profundamente toda a pilha de software

Page 93: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Próximos Passos?

LEIAM!

• aws.amazon.com/documentation

• aws.amazon.com/architecture

• aws.amazon.com/start-ups

Page 94: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Próximos Passos?

COMEÇEM A USAR

aws.amazon.com/free

Page 95: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Próximos Passos?

PEÇAM AJUDA!

• forums.aws.amazon.com

• aws.amazon.com/support

• Seu Gerente de Contas na AWS

• Um dos nossos Arquitetos de Soluções

Page 96: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

Obrigado

pela

presença!

Fábio Silva – [email protected]

Page 97: Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final

© 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc. © 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.

Obrigado!

Escalando na AWS até os Primeiros 10 Milhões de Usuários

Fábio Aragão da Silva

Arquiteto de Soluções

Amazon Web Services LATAM

27 de Maio de 2014