Você está na página 1de 38

Immersion Day

Arquitetando para a nuvem — Melhores Práticas

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Abordagens de arquitetura para AWS
• Implantação de aplicativos existentes na AWS com o mínimo de
re-design
Lift-and-shift • Boa estratégia se está começando na AWS ou se o aplicativo não
pode ser rearquitetado devido a restrições de custos ou recursos
• Use serviços como EC2, EBS, VPC

• Evolua a arquitetura do aplicativo existente para aproveitar os


serviços da AWS
Cloud-optimized • Obtenha benefícios de custo e desempenho com o uso de serviços
da AWS, como Grupos de Auto Scaling, RDS, SQS e assim por
diante

• Aplicativo arquitetado para ser nativo na nuvem desde o início


Cloud-native • Aproveite o portfólio completo da AWS
• Obtenha todos os benefícios da AWS (segurança, escalabilidade,
architecture custo, durabilidade, baixa carga operacional, etc.)

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Melhores práticas de arquitetura de nuvem
1. Desenhe para falha e nada falhará
2. Construa segurança em todas as camadas
3. Aproveite diferentes opções de armazenamento
4. Implemente elasticidade
5. Pense paralelo
6. Um acoplamento fraco te liberta
7. Não tenha medo de restrições
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
1
Desenhe para Falha
e Nada Falhará
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Desenhe para falha: um único usuário

Pontos únicos de falha: DNS


User
• Um único Elastic IP (Route 53)

• Dá a um servidor um endereço
IP público estático
• UMA única Instância do Amazon Elastic IP
address
Elastic Compute Cloud (EC2)
• Full stack em um único host
• Aplicação Web
EC2 Server
• Banco de dados
• Gestão, etc...

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Desenhe para falha: Dificuldades de escalabilidade para muitos
usuários
Poderíamos chegar a algumas
centenas até alguns milhares de Usuários
DNS
(Route 53)
usuários, dependendo da
complexidade do aplicativo e do
tráfego, mas...
Elastic IP
address

Pode haver dificuldade em


escalar para muitos usuários
devido a: EC2 Server

• Todos os ovos em uma cesta


• Sem failover ou redundância
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Desenhe para Falha: Resolvendo “Todos os Ovos em Uma Cesta”

Separe o único servidor EC2 em


DNS
níveis da Web e do banco de dados: Usuários
(Route 53)

• Servidor Web em EC2


• Banco de dados em EC2 ou RDS
§ O Amazon Relational Database
Elastic IP
Service (RDS) pode cuidar da address
sobrecarga de gerenciamento,
como patches, backups e detecção
de falhas Web Server Database

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Desenhe para Falha: Resolvendo a Falta de Failover/Redundância
Aproveite as várias zonas de disponibilidade
(AZs) para redundância e alta
disponibilidade. Usuários
DNS
(Route 53)

• Use um Elastic Load Balancer (ELB)


através das AZs para disponibilidade e AZ 1 AZ 2
failover

• Se estiver usando o RDS, use o recurso


Web Server Web Server
Multi-AZ para replicação gerenciada e
uma instância secundária (standby)
• Caso contrário, use recursos de
failover e replicação nativos do
Database Master Database Standby
mecanismo de banco de dados

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Desenhe para Falha: Práticas recomendadas

Práticas recomendadas:
DNS
• Elimine pontos únicos de falha Usuários
(Route 53)

• Usar várias zonas de disponibilidade


• Usar Elastic Load Balancing AZ 1 AZ 2
• Faça monitoramento em tempo real
com o CloudWatch
• Criar um banco de dados standby Web Server Web Server
entre zonas de disponibilidade

Database Master Database Standby

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Desenhe para Falha
Evite pontos únicos de falha
Assuma que tudo falha e desenhe de trás para frente
• Quando, e não se, um componente individual falhar, o
aplicativo não falhará
• Pense em seus servidores como gado, não animais de
estimação
• Aproveite o DNS do Route 53 com as estratégias do Pilot-
light ou Warm-standby para implementar a recuperação
de desastres
• Grupos de Auto Scaling podem ser usados para detectar
falhas e se autocorrigir, protegendo assim contra
interrupções de nível de AZ
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
2
Construa segurança
em todas as camadas
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Construa segurança em todas as camadas

HTTP: 80

Rede Corporativa

EC2 EC2 EC2

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Construa segurança em todas as camadas

Criptografar dados
em trânsito e em HTTPS: 443

repouso Key
Management
Service (KMS)

Rede Corporativa
EC2 EC2 EC2

IPSEC VPN

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Construa segurança em todas as camadas

Impor princípio de
menor privilégio HTTPS: 443
Key
com IAM Management
Service

Rede Corporativa
EC2 EC2 IAM
EC2

IPSEC VPN

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Construa segurança em todas as camadas

Criar regras de
firewall com HTTPS: 443
Key
Grupos de Segurança Management
Service
e NACLs
Rede Corporativa
EC2 EC2 IAM
EC2

IPSEC VPN

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Construir segurança em todas as camadas
Mais ferramentas para sua caixa de ferramentas de
segurança:
• Amazon Inspector
• Amazon Certificate Manager
• AWS Shield
• AWS Web Application Firewall (WAF)
• Amazon Macie
• Amazon GuardDuty
• AWS Config
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
3
Aproveite as diversas
opções de
armazenamento
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Aproveite as diversas opções de armazenamento

Um tipo NÃO serve para todos os workloads


• Amazon Elastic Block Storage (EBS) — armazenamento em bloco
persistente
• Amazon EC2 Instance Storage — armazenamento de bloco
efêmero
• Amazon RDS — banco de dados relacional gerenciado
• Amazon CloudFront — rede de distribuição de conteúdo
• Amazon S3 — armazenamento de objeto/blob, bom para
objetos grandes
• Amazon DynamoDB — dados não relacionais (chave-valor)
• Amazon ElastiCache — Redis ou Memcached gerenciado
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Aproveite as diversas opções de armazenamento

DNS
Usuários
(Route 53)
Estado atual:
• Toda a carga manipulada por um stack
• Elastic Load Balancer (ELB)
• Cluster de aplicativos Web do EC2
• Banco de Dados Relacional
• Sem camada(s) de cache Instâncias Web

• Todos os dados persistentes no Banco


de Dados ou nos volumes do Elastic Banco de Dados
Block Storage (EBS) das Instâncias Web Relacional

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Aproveite as diversas opções de armazenamento
Offload de Solicitações e cache para Amazon
objetos estáticos: Usuários
DNS (Route
53)
CloudFront

• Armazenar objetos grandes/


estáticos no Simple Storage
Service (S3)
• Use uma rede de entrega de
conteúdo (CDN) como CloudFront Amazon
S3
Instâncias Web
para armazenar em cache
respostas usando pontos de
presença por volta do mundo todo Banco de Dados
Relacional

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Aproveite as diversas opções de armazenamento

Salve os dados da sessão do DNS


Amazon
Usuários CloudFront
usuário em um banco de dados (Route 53)

para evitar interromper a


experiência do usuário se uma
Instância Web não responder:
• Armazenar dados de sessão/
Amazon
estado no DynamoDB, um Instâncias Web
S3

armazenamento de chave-
valor NoSQL gerenciado
DynamoDB
Banco de Dados
Relacional

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Aproveite as diversas opções de armazenamento

Armazene consultas frequentes DNS (Route


Amazon
CloudFront
Usuários
para diminuir a carga do seu 53)

banco de dados:
• Coloque o ElastiCache como
uma camada de cache entre
as instâncias Web e o banco Amazon
S3
Instâncias da Web
de dados
DynamoDB
Banco de Dados ElastiCache
Relacional

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
4
Implementar
elasticidade
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Tráfego de novembro para Amazon.com

Capacidade provisionada

Tráfego real

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Tráfego de novembro para Amazon.com

Capacidade provisionada
76%

Tráfego real
24%
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Tráfego de novembro para Amazon.com

Capacidade provisionada

Tráfego real

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Implementar elasticidade

Como guiar:
• Escreva Políticas de Auto Scaling tendo em mente os padrões de
acesso específico a sua aplicação
• Prepare seu aplicativo para que seja flexível: não assuma a
integridade, a disponibilidade ou o local fixo dos componentes
• Arquitete resiliência para reiniciar e relançar
• Quando uma instância é iniciada, ela deve perguntar ”Quem
sou eu e qual é o meu papel?”
• Faça proveito dos serviços gerenciados e escaláveis como S3 e
DynamoDB

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
5
Pense paralelo
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Pense paralelo

Dimensione horizontalmente, não verticalmente


• Desacople a computação dos dados de sessão/estado
• Use ELBs para distribuir a carga
• Divida dados grandes em partes para o processamento
distribuído
• AWS Elastic Map Reduce (EMR) — Hadoop gerenciado

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Pense paralelo

Mais rápido não precisa significar mais caro


• Com o EC2 sob demanda, o seguinte custará o mesmo:
• 12 horas de trabalho usando 4 vCPUs
• 1 hora de trabalho usando 48 vCPUs
• Dimensione sua infraestrutura para sua carga de
trabalho para obter o melhor equilíbrio entre custo e
desempenho

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Pense paralelo

Paralelize o uso de serviços nativos gerenciados


• Obtenha o melhor desempenho do S3 com leituras e
gravações paralelizadas
• Uploads em várias partes (Multi-part uploads) (API) e GETs em
intervalo de bytes (HTTP)
• Assuma alta simultaneidade com o Lambda
• Limite inicial: 1000 solicitações simultâneas por região

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
6
Um acoplamento
fraco te liberta
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Um acoplamento fraco te liberta: Enfileiramento

Use o Amazon Simple Queue Service (SQS) para passar


mensagens entre componentes levemente acoplados

Acoplamento forte

Acoplamento fraco

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Um acoplamento fraco te liberta : não reinvente a roda

Quase tudo na AWS é uma


chamada de API. Aproveite
os serviços nativos da AWS Amazon Amazon
para... CloudWatch ElasticSearch
Amazon SQS
• Enfileiramento
• Transcodificação
• Pesquisa Amazon SES
AWS CloudTrail
• Bancos de dados Amazon
• E-mail CloudSearch

• Monitoramento Amazon Elastic


Transcoder
• Métricas Amazon SNS
• Logs Amazon RDS
AWS Lambda
• Computação
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Um acoplamento fraco te liberta

Usando SNS e SQS para escalar de forma assíncrona:


Instância Colocar
Instância
mensagem SQS Receba Usando Lambda para acionar
Mensagem
ações de desacoplamento:
Mensagens A fila está
inscrita no
tópico
Push:
Amazon SNS S3 Bucket Notificação
de eventos
Tópico Lambda
Pull: Stream do
Publicar DynamoDB
Notificação DynamoDB

Pull:
Kinesis Stream
Amazon
Kinesis

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
7
Não tenha medo de
restrições
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Não tenha medo de restrições
Repense as restrições das arquiteturas tradicionais
Precisa de mais RAM?
• Não Faça: escala vertical
• Faça: distribuição de carga entre instâncias ou crie um cache compartilhado
Precisa de IOPS melhores para banco de dados?
• Não Faça: esquemas de retrabalhos/índices ou escala vertical
• Faça : crie réplicas de leitura, implemente Sharding, adicione uma camada de cache
O hardware falhou ou a configuração foi corrompida?
• Não Faça: desperdice o tempo de produção diagnosticando o problema
• Faça: “Rip and replace” — parar/encerrar instância antiga e relançar
Precisa de uma estratégia de recuperação de desastres (DR) econômica?
• Não Faça: dobre os custos de infraestrutura quando você não precisa
• Faça: implemente Pilot Light ou stacks de DR Warm Standby

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Alguma pergunta?

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Você também pode gostar