Contrato 003 2013 Ibope em 09072013 R$ 1,7 milhoes - Governo Federal
Escalando para os primeiros 10 milhoes de usuarios
-
Upload
amazon-web-services-latam -
Category
Technology
-
view
619 -
download
5
Transcript of Escalando para os primeiros 10 milhoes de usuarios
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Ari Dias, Sr Mgr, Partner Solutions Architect
Escalando para os primeiros
milhões de usuários1011
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Ari Dias, Sr Mgr, Partner Solutions Architect • Solutions Architect (2012)
AWS Summit 2016
WHO
ARE
YOU?
Como escalar a sua aplicação?
http://i.telegraph.co.uk/multimedia/archive/02674/CLIMBER_2674482b.jpg
Muita coisa para
ler!
Lugar de onde
você não
deveria
começar!
Auto Scaling
…é uma ferramenta e um destino.
Não é uma única solução que
resolverá todos os problemas.
Então, por onde devemos começar?
Vamos começar pelo
básico…
US-WEST (Oregon)
EU (Ireland)
ASIA PACIFIC
(Tokyo)
US-WEST (N. California)
SOUTH
AMERICA (Sao
Paulo)
US-EAST (N. Virginia)
AWS GOVCLOUD (US)
ASIA PACIFIC
(Sydney)
ASIA PACIFIC
(Singapore)
CHINA (Beijing)
RegiõesEU (Frankfurt)
INDIA (2016)
US-WEST (Oregon)
EU (Ireland)
ASIA PACIFIC
(Tokyo)
US-WEST (N. California)
SOUTH
AMERICA (Sao
Paulo)
US-EAST (N. Virginia)
AWS GOVCLOUD (US)
ASIA PACIFIC
(Sydney)
ASIA PACIFIC
(Singapore)
CHINA (Beijing)
Zonas de DisponibilidadeEU (Frankfurt)
INDIA (2016)
Edge locations
TECHNICAL &
BUSINESS
SUPPORT
Account
Management
Support
Professional
Services
Solutions
Architects
Training &
Certification
Security
& Pricing
Reports
Partner
Ecosystem
AWS
MARKETPLACE
Backup
Big Data
& HPC
Business
Apps
Databases
Development
Industry
Solutions
Security
APPLICATION
SERVICES
Queuing
Notifications
Search
Orchestration
ENTERPRISE
APPS
Virtual
Desktops
Storage
Gateway
Sharing &
Collaboration
Email &
Calendaring
Directories
HYBRID CLOUD
MANAGEMENT
Backups
Deployment
Direct
Connect
Identity
Federation
Integrated
Management
SECURITY &
MANAGEMENT
Virtual Private
Networks
Identity &
Access
Encryption
KeysConfiguration Monitoring Dedicated
INFRASTRUCTURE
SERVICES
RegionsAvailability
ZonesCompute Storage
DatabasesSQL, NoSQL,
CachingCDNNetworking
PLATFORM
SERVICES
App
Mobile
& Web
Front-end
Functions
Identity
Data Store
Real-time
Development
Containers
Source
Code
Build
Tools
Deployment
DevOps
Mobile
Sync
Identity
Push
Notifications
Mobile
Analytics
Mobile
Backend
Analytics
Data
Warehousing
Hadoop
Streaming
Data
Pipelines
Machine
Learning
TECHNICAL &
BUSINESS
SUPPORT
Account
Management
Support
Professional
Services
Solutions
Architects
Training &
Certification
Security
& Pricing
Reports
Partner
Ecosystem
AWS
MARKETPLACE
Backup
Big Data
& HPC
Business
Apps
Databases
Development
Industry
Solutions
Security
APPLICATION
SERVICES
Queuing
Notifications
Search
Orchestration
ENTERPRISE
APPS
Virtual
Desktops
Storage
Gateway
Sharing &
Collaboration
Email &
Calendaring
Directories
HYBRID CLOUD
MANAGEMENT
Backups
Deployment
Direct
Connect
Identity
Federation
Integrated
Management
SECURITY &
MANAGEMENT
Virtual Private
Networks
Identity &
Access
Encryption
KeysConfiguration Monitoring Dedicated
INFRASTRUCTURE
SERVICES
RegionsAvailability
ZonesCompute Storage
DatabasesSQL, NoSQL,
CachingCDNNetworking
PLATFORM
SERVICES
App
Mobile
& Web
Front-end
Functions
Identity
Data Store
Real-time
Development
Containers
Source
Code
Build
Tools
Deploymen
t
DevOps
Mobile
Sync
Identity
Push
Notifications
Mobile
Analytics
Mobile
Backend
Analytics
Data
Warehousing
Hadoop
Streaming
Data
Pipelines
Machine
Learning
Solutions
Architects
Solutions Architects
APPLICATION
SERVICES
Queuing
Notifications
Search
Orchestration
SECURITY &
MANAGEMENT
Virtual Private
Networks
Identity &
Access
Encryption
KeysConfiguration Monitoring Dedicated
INFRASTRUCTURE
SERVICES
RegionsAvailability
ZonesCompute Storage
DatabasesSQL, NoSQL,
CachingCDNNetworking
PLATFORM
SERVICES
App
Mobile
& Web
Front-end
Functions
Identity
Data Store
Real-time
Development
Containers
Source
Code
Build
Tools
Deployment
DevOps
Mobile
Sync
Identity
Push
Notifications
Mobile
Analytics
Mobile
Backend
Analytics
Data
Warehousing
Hadoop
Streaming
Data
Pipelines
Machine
Learning
Os bloquinhos para compor a solução
Serviços em alta disponibilidade e
tolerante a falhas
Alta disponibilidade
com a arquitetura
correta
Amazon CloudFront
Amazon Route 53
Amazon S3
Amazon DynamoDB
Elastic Load Balancing
Amazon EFS
AWS Lambda
Amazon SQS
Amazon SNS
Amazon SES
Amazon SWF
…
Amazon EC2
Amazon EBS
Amazon RDS
Amazon VPC
Vamos começar com …
1 usuário
Você
1 Usuário
• Amazon Route 53 para DNS
• Um único Elastic IP
• Uma única instância EC2
• Com tudo instalado
• Aplicação web
• Banco de dados
• Gerenciamento
• Etc …
Instância
Amazon
EC2
Elastic IP
UsuárioAmazon
Route 53
“Vamos precisar de uma máquina maior”
• Estratégia básica
• Pode se basear em PIOPS
• I/O grande
• Memória grande
• CPU grande
• Disco grande
• Fácil de alterar a capacidade da
instância
• Eventualmente vai chegar no limite!
c4.8xlarge
m3.2xlarge
t2.micro
“Vamos precisar de uma máquina maior”
• Estratégia básica
• Pode se basear em PIOPS
• I/O grande
• Memória grande
• CPU grande
• Disco grande
• Fácil de alterar a capacidade da
instância
• Eventualmente vai chegar no limite!
c4.8xlarge
m3.2xlarge
t2.micro
1 Usuário
• Dependendo da
aplicação e da carga
poderemos chegar a
centenas ou milhares de
usuários
• Não há tolerância à falha
• Sem redundânciaInstância
EC2
Elastic IP
UsuárioAmazon
Route 53
1 Usuário
• Dependendo da
aplicação e da carga
poderemos chegar a
centenas ou milhares de
usuários
• Não há tolerância à falha
• Sem redundânciaInstância
EC2
Elastic IP
UsuárioAmazon
Route 53
Usuários >1
Usuários > 1
Primeiro, vamos separar
alguns componentes em mais
de uma instância:
• Aplicação web
• Banco de dados
Usar um serviço
gerenciado de banco de
dados?
Instância
Web
Instância
de Banco
de Dados
Elastic IP
UsuárioAmazon
Route 53
Você gerencia Gerenciado pela AWS
Banco de dados
em EC2
Você é livre para
usar o banco que
escolher
A gestão das
licenças é sua
Amazon
DynamoDB
Banco de dados
NoSQL gerenciado
e executando sobre
SSDs
Escalabilidade
homogênea
Sem administração
Amazon RDS
Microsoft SQL Server
Oracle
MySQL
PostgreSQL
MariaDB
Amazon Aurora
Sua licença ou já
incluída
Amazon
Redshift
DW para
processamento
paralelo
Escala de Petabytes
Rápido, poderoso e
facilmente escalável
Opções de Banco de Dados
Você gerencia Gerenciado pela AWS
Banco de dados
em EC2
Você é livre para
usar o banco que
escolher
A gestão das
licenças é sua
Amazon
DynamoDB
Banco de dados
NoSQL gerenciado
e executando sobre
SSDs
Escalabilidade
homogênea
Sem administração
Amazon RDS
Microsoft SQL Server
Oracle
MySQL
PostgreSQL
MariaDB
Amazon Aurora
Sua licença ou já
incluída
Amazon
Redshift
DW para
processamento
paralelo
Escala de Petabytes
Rápido, poderoso e
facilmente escalável
Opções de Banco de Dados
Amazon Aurora
• Disco escala automaticamente até 64 TB
• Até 15 réplicas de leitura
• Backup incremental no Amazon S3
• Replicado em 3 AZs
• Compatível com MySQL
To NoSQL, or not to NoSQL?
Alguém pode não gostar,
mas…
Comece com banco de dados SQL
Por que começar com SQL?
• Tecnologia madura e bem posicionada.
• Muito código disponível, comunidades, livros e
ferramentas.
• Você não vai quebrar o seu banco SQL nos seus
primeiros 10 milhões de usuários. Não, não vai.
• Estratégias de escala já bem conhecidas.
* A não ser que você esteja fazendo algo SUPER peculiar com os dados ou você tenha um
volume de dados massivo… mas ainda o banco SQL terá um lugar na sua arquitetura.
AH HA! Você
disse massivo?”
Eu terei volumes
massivos de
dados!
> 5 TB em um ano?
Workload de dados incrivelmente
intensos??
OK!Você pode precisa de NoSQL!
Por que você pode precisar de um NoSQL?
• Aplicações de baixa latência
• Metadata-driven
• Dados não estruturados (não relacional)
• Precisa de um modelo de dados sem esquemas*
• Quantidade expressiva de dados (TB+)
• Necessidade de ingestão rápida de dados (milhares de
registros/sec)
*Precisa!= “É mais fácil desenvolver sem schemas”
Usuários >100
Usuários >100
Primeiro, vamos separar
nosso servidor em dois
componentes:
• Aplicação web
• Banco de dados
Use Amazon RDS para
facilitar a sua vida Instância
Web
Elastic IP
Instância
RDS DB
UsuárioAmazon
Route 53
Usuários >1000
Usuários >1000
Agora, vamos adicionar
tolerância à falhas e
redundância:
Mais uma instância web
• Em outra Zona de
disponibilidade
RDS Multi-AZ
Elastic Load Balancing (ELB)
Web
Instance
RDS DB Instance
Active (Multi-AZ)
Availability Zone Availability Zone
Web
Instance
RDS DB Instance
Standby (Multi-AZ)
ELB
Balancer
UserAmazon
Route 53
Elastic Load Balancing
• Em alta disponibilidade
• 1 - 65535
• Health checks
• Redirecionamento por
sessões
• SSL
• Monitoramento
• Logs
horizontal
ve
rtic
al
Usuários > 10,000s–100,000s
RDS DB Instância
Ativa (Multi-AZ)
Availability Zone Availability Zone
RDS DB Instância
Standby (Multi-AZ)
ELB
Balancer
RDS DB
Read Replica
RDS DB
Read Replica
RDS DB
Read Replica
RDS DB
Read Replica
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 53Usuário
E quanto à performance e
eficiência?
Diminuindo a carga…
RDS DB Instance
Active (Multi-AZ)
Availability Zone
ELB
Balancer
Amazon S3
Amazon
CloudFront
Amazon
Route 53User
Mova algum workload
Web Instances
• Conteúdo estático para o Amazon S3 e Amazon CloudFront
Mova…
Amazon Simple Storage Service (S3)
• Storage de objetos
• Altamente durável
• Muito bom para objetos
estáticos
• “Escala infinita”
• Objectos até 5 TB
• Criptografia opcional
Amazon CloudFront
• Cache de conteúdo para entrega
rápida
• Diminui a carga na origem
• Conteúdo estático e dinâmico
• Streaming de vídeos
• Certificados SSL
• Baixo TTLs (tão baixo qnt 0)
• Otimizado para AWS
Amazon CloudFront
Res
po
nse
Tim
e
Serv
er L
oad
Res
po
nse
Ti
me
Serv
er
Load
Res
po
nse
Ti
me
Serv
er
Load
Sem CDN CDN para
Conteúdo
Estático
CDN para
Conteúdo
Estático e
Dinâmico
020406080
8:0
0 A
M
9:0
0 A
M
10:0
0 A
M
11:0
0 A
M
12:0
0 P
M
1:0
0 P
M
2:0
0 P
M
3:0
0 P
M
4:0
0 P
M
5:0
0 P
M
6:0
0 P
M
7:0
0 P
M
8:0
0 P
M
9:0
0 P
MVo
lum
e d
e
da
do
s (
Gb
ps
)
Mova algum workload
• Conteúdo estático no Amazon S3
e Amazon CloudFront
Move…
• Sessão/estado para o Amazon
DynamoDB
• Cache dos dados no Amazon
ElastiCacheRDS DB Instance
Ativo (Multi-AZ)
Availability Zone
ELB
Balancer
Amazon S3
Amazon
CloudFront
Amazon
Route 53Usuário
ElastiCache DynamoDB
Instâncias Web
Amazon DynamoDB
• Banco de dados NoSQL gerenciado
• Throughput provisionado
• Rápido e previsível
• Distribuído e tolerante a falhas
• Suporte à JSON
• Itens até 400 KB
Amazon Elasticache
• Memcached ou Redis gerenciado
• Escala de 01 a vários nós
• Self-healing (substitui instâncias com
problemas)
• Single AZ para nó de Memcache
• Possível Multi-AZ com Redis
Mova algum workload
Move…
RDS DB Instância
Ativa (Multi-AZ)
Availability Zone
ELB
Balancer
Amazon S3
Amazon
CloudFrontUsuário
ElastiCache DynamoDB
Instâncias Web
Amazon
Route 53
• Conteúdo estático no Amazon S3
e Amazon CloudFront
• session/estado para o Amazon
DynamoDB
• Cache dos dados no Amazon
ElastiCache
• Conteúdo dinâmico para o Cloud
Front
Agora que a camada web está
mais leve, vamos voltar ao
começo da nossa conversa…
Auto Scaling!
Redimencionamento automático da quantidade de servidores
Define o tamanho mínimo e máximo para a quantidade de servidores
Use as métricas do CloudWatch para ativar o redimencionamento
Use instâncias EC2 no modelo de On-demand ou Spot
aws autoscaling create-auto-scaling-group
--auto-scaling-group-name MeuGrupo
--launch-configuration-name MinhaConfig
--min-size 4
--max-size 200--availability-zones us-west-2c, us-west-2b
Auto Scaling
Domingo Segunda Terça Quarta Quinta Sexta Sábado
Típico tráfego semanal da Amazon.com
Domingo Segunda Terça Quarta Quinta Sexta Sábado
Capacidade Provisionada
Típico tráfego semanal da Amazon.com
Novembro
Tráfego em Novembro da Amazon.com
Capacidade Provisionada
Novembro
Tráfego em Novembro da Amazon.com
76%
24%Novembro
Capacidade Provisionada
Tráfego em Novembro da Amazon.com
Novembro
Tráfego em Novembro da Amazon.com
Com o Auto Scaling
você consegue isso!
= um usuário
= 100,000 usuários= 1,000,000 usuários
Usuários >500,000
Users > 500,000+
Availability Zone
Amazon
Route 53User
Amazon S3
Amazon
CloudFront
Availability Zone
ELB
Balancer
DynamoDB
RDS DB Instance
Read Replica
Web
Instance
Web
Instance
Web
Instance
ElastiCache RDS DB Instance
Read Replica
Web
InstanceWeb
Instance
Web
Instance
ElastiCacheRDS DB Instance
Standby (Multi-AZ)RDS DB Instance
Active (Multi-AZ)
Users > 500,000+
Availability Zone
Amazon
Route 53User
Amazon S3
Amazon
CloudFront
Availability Zone
ELB
Balancer
DynamoDB
RDS DB Instance
Read Replica
Web
Instance
Web
Instance
Web
Instance
ElastiCache RDS DB Instance
Read Replica
Web
InstanceWeb
Instance
Web
Instance
ElastiCacheRDS DB Instance
Standby (Multi-AZ)RDS DB Instance
Active (Multi-AZ)
Use automação
Gestão de aplicações com serviços da AWS
Conveniência Controle
Serviços de alto nível Faça você mesmo
AWS
Elastic Beanstalk
AWS
OpsWorks
AWS
CloudFormationAmazon EC2
AWS CodeDeploy
• Deploys seu código para uma “frota” de instâncias EC2
• 1 – 10,000s de instâncias
• Agenda updates automaticamente (múltipas AZs)
• Grupo de Deployment e Aplicação descritos em
arquivos no formato YAML
• Pode referencias Auto Scaling Groups
• Console de Gerenciamento da AWS, CLI, ou APIs
• Pode ser usado com receitas de Chef ou scripts Puppet
Usuários >500,000+
• Monitoramento, métricas e logs
• Se você não vai construir use de
terceiros (SaaS)
• O que os clientes estão dizendo?
• Tente obter o máximo de performance
de cada serviço ou componente
Métricas
Agregadas
Análise de
logs
Análise de
performance
externa
Métrica de
servidores
Ainda há mais melhorias
possíveis se quebrarmos a
aplicação em serviços
SOA
O que é isto?
Muita coisa para
ler!
Não é o lugar
para começar
Aqui é onde vc
deve começar!
Muita coisa para
ler!
Não é o lugar
para começar
SOAing
Mais serviços na mesma camada:
• Trate-os separadamente e
escale de maneira independente.
A Amazon e a AWS fazem isso o tempo
todo!
Oferece flexibilidade e mais compreensão
sobre cada componente.
Baixo acoplamento + SOA = vitória!
Mas não reinvente a roda
• Filas
• Transcodificação
• Busca
• Banco de dados
• Monitoração
• Métricas
• Logging
• Computação
Amazon
CloudSearchAmazon SQSAmazon SNS
Amazon Elastic
TranscoderAmazon SWFAmazon SES
AWS Lambda
• Confiável (Multi-AZ)
• Escalável (# mensages ilimitado)
• Seguro (autenticação por fila)
• Simples (APIs extremamente simples)
Application Services – Amazon SQS
SQS
messages
Get
Message
InstancePut
MessageInstance
Amazon SNS Topic
Publish
Notification
Queue Is Subscribed
to Topic
Compute / Platform – AWS Lambda
• Funções acionadas por
eventos
• JavaScript, Java… e Python
• Gerenciado pela AWS
• Escalabilidade implícita S3 Bucket
Lambda
Push: Event
Notification
DynamoDB
Pull: DynamoDB
Stream
Kinesis
Pull:
Kinesis Stream
Desacoplamento te liberta!
Quanto menos acoplamento, melhor eles escalam
• Componentes independentes
• Desenhe os componentes como caixa preta
• Desacople as interações
• Prefira o uso de serviços com tolerância e redundância
S3 Bucket
Lambda
Push: Event
Notification
DynamoDB
Pull: DynamoDB
Stream
Amazon
Kinesis
Pull:
DynamoDB Stream
SQS
messages
Get
Message
InstancePut
MessageInstance
Amazon SNS Topic
Publish
Notification
Queue Is Subscribed
to Topic
Usuários>1,000,000
Usuários >1 milhão+
Com um milhão de usuários vamos precisar de um poucode cada coisa:
• Multi-AZ
• Elastic Load Balancing entre camadas
• Auto Scaling
• Service Oriented Architecture
• Forneça conteúdo de maneira inteligente (Amazon S3/CloudFront )
• Adicionando um cache na frente do banco de dados
• Mova os estados das camadas de auto scaling
Users >1 million+
RDS DB Instance
Active (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 53User
Amazon S3
Amazon
CloudFront
DynamoDB
Amazon SQS
ElastiCache
Worker
Instance
Worker
Instance
Amazon
CloudWatch
Internal App
Instance
Internal App
Instance Amazon SES
Lambda
O próximo grande passo
Usuários >10,000,000
Usuários >5 milhões - 10 milhões
Você deve começar a ter um gargalo no banco de dados, principalmente na escrita.
Como você resolve isso?• Federação — separe os bancos por função
• Sharding — separe um dataset entre vários servidores
• Mova algumas funcionalidades para outros tipos de banco (NoSQL, Graph)
Federação de BD
• Separe por função
• Mais difícil de fazer com queries cross-function
• E não funciona para tabelas gigantescas
Foruns DB
Usuários
DB
Produtos
DB
Escalabiliade com Shards• Mais complicado para a aplicação
• Sem limite para escalabilidade
• Complexidade na operação
• Shard por função ou por chaves
• RDBMS ou NoSQL
User ShardID
002345 A
002346 B
002347 C
002348 B
002349 A
CBA
Use NoSQL
• Mesma idéia da federação
• Use serviços gerenciados da AWS como o DynamoDB
Alguns casos de uso:• Placar de jogos online
• Ingestão de logs ou clickstream
• Dados temporários (carrinho de compras)
• Dados quentes
• Tabela para metadado ou pesquisa rápidaDynamoDB
Revisão rápida
Revisão
• Use Multi-AZ
• Faça uso de serviços que escalam — ELB, Amazon S3,
Amazon SNS, Amazon SQS, Amazon SWF, Amazon SES, e
outros.
• Redundância em todos os níveis.
• Comece com SQL. Sério!
• Faça cache dentro e fora da sua infra.
• Use ferramentas para automação.
Revisão
• Tenha boas métricas, monitoramento e logs
• Divida a mesma camada em serviços
• Use Auto Scaling quando sua aplicação estive pronta
• Não reinvente a roda
• Mova para NoSQL se e quando fizer sentido
Adotando estas práticas
devemos conseguir
facilmente atender mais de
11 milhões de usuários.
Escalar sem limites
• Plataforma de comércio eletrônico
SaaS.
• + 1000 lojas
• Estamos em 14 países
• + 12 milhões de pedidos em 2015
• + 2 bilhões de pageviews em 2015
“Vamos focar no
objetivo da nossa
empresa, nós
desenvolvemos
software.Infraestrutura não pode
gastar nosso tempo.”
- Marcelo Couto
O Desafio
• Ter um sistema com uma infra-estrutura escalável para atendertodos os clientes. SaaS.
• Transformar um sistema grande em microserviços
• Conseguir lançar versões sem downtime
• Fazer o lançamento de versões ser frequente.
Solução
• Mais de 40 serviços, cada um com a sua infraestrutura e repositórios de dados.
• Todos os ambientes monitorados e com alarmes criados.
• 1130 versões lançadas nosultimos 30 dias.
AWS Re-Invent 2015 GameDay
Para o infinito...
Usuários >11 milhões
Fazer iterações sobre os
padrões discutidos aqui lhe
dará capacidade para
crescer para mais de 100
milhões de usuários.
• Ajuste fino da sua aplicação
• Mais SOA
• Ampliando de Multi-AZ para multi-região
• Criar soluções mais personalizadas
• Análise profunda da pilha da sua aplicação
Usuários >11 milhões
Próximos passos?
Leia!
aws.amazon.com/documentation
aws.amazon.com/architecture
aws.amazon.com/start-ups
Comece a usar AWS agora!
aws.amazon.com/free/
Pergunte para:
forums.aws.amazon.com
aws.amazon.com/premiumsupport/
Sua representante dentro da AWS
A Solutions Architect
Remember to complete
your evaluations!Por favor, não se esqueça
de responder a pesquisa!
Thank You!