View
881
Download
0
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
© 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 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
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
E então, como escalar?
Bastante
material pra ler
Não é por
onde
deveriamos
começar
Bastante
material pra ler
Auto Scaling é uma
ferramenta e um destino.
Mas não é a única solução
mágica que resolve todos os
problemas.
E então:
o que fazer
primeiramente?
Começando pelo
básico…
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)
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)
Pontos de Presença
• 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
Computação Armazenagem
& Entrega de
Conteúdo
Infraestrutura Global da AWS
Banco de
Dados
Serviços para Aplicações
Deployment & Administração
Redes
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
Vamos começar então
pelo dia um, com um
usuário ( você )
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
“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
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
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
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
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
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
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
Mas como escolher a
tecnologia de Banco
de Dados ideal?
SQL? NoSQL?
Alguns de vocês
talvez não gostem
muito do que eu vou
falar agora. Mas…
Comece com Banco
de Dados SQL
A não ser que você já
tenha uma equipe
bem familiar com
NoSQL…
Comece com Banco
de Dados SQL
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
A-há! Te peguei!
Você disse
“enormes
quantidades de
dados”. E eu vou
ter enooooormes
quantidades de
dados!
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
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”
Quando NoSQL = Sim…
considere utilizar o DynamoDB
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
Mas de volta à
conversa inicial…
Vejamos como
podemos escalar um
banco de dados SQL
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
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
• 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
Escalabilidade vertical e
horizontal vai te permitir
ir longe ( de dezenas a centenas de
milhares de usuários )
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
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
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
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
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)
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
Agora que nossa camada
web está bem mais leve,
vamos voltar ao começo da
conversa…
Auto Scaling!
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
Domingo Segunda Terça Quarta Quinta Sexta Sábado
Trafego típico na Amazon.com
Capacidade Provisionada
Trafego típico na Amazon.com
Domingo Segunda Terça Quarta Quinta Sexta Sábado
Trafego em Novembro na Amazon.com
Novembro
Trafego em Novembro na Amazon.com
Capacidade Provisionada
Novembro
Trafego em Novembro na Amazon.com 76%
24%
Capacidade Provisionada
Novembro
Trafego em Novembro na Amazon.com
Novembro
Auto Scaling
te permite fazer isso!
Auto Scaling pode escalar
desde uma instância até
milhares de instâncias e
depois voltar
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)
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
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
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:
MÉTRICAS
DO HOST
MÉTRICAS
AGREGADAS
ANÁLISE
DE LOG
PERFORMANCE
DO SITE
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
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
Agora não há mais como
melhorar apenas
quebrando ainda mais a
camada web e de
aplicação
SOA = Service Oriented Architecture, ou
Arquitetura Orientada a Serviços
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.
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
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
Sobre reinventar a roda…
Se você estiver escrevendo
seu próprio serviço de: fila,
DNS, banco de dados,
armazenamento, monitoração
PARE AGORA !!!
Vamos fazer uma pausa
rápida para conhecermos o
caso da AgênciaClick
Isobar
• 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
• 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.
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
De volta a SOA
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
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
Os próximos grandes
passos
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)
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
…E finalmente chegamos
aos 10 milhões de usuários
Uma Revisão Rápida
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
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)
Juntando tudo isso,
temos agora condições
de suportar até 10
milhões de usuários sem
grandes dores de cabeça
Ao infinito...
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
Próximos Passos?
LEIAM!
• aws.amazon.com/documentation
• aws.amazon.com/architecture
• aws.amazon.com/start-ups
Próximos Passos?
COMEÇEM A USAR
aws.amazon.com/free
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
© 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