O documento fornece um resumo de um mini-curso sobre arquitetura de sistemas de alta disponibilidade para nuvem. O curso aborda tópicos como disponibilidade, escalabilidade, confiabilidade e manutenibilidade. Também discute por que a disponibilidade é importante, como ela é medida e como projetar sistemas para suportar falhas e garantir escalabilidade.
1. Mini-Curso
Arquitetura de Sistemas de Alta Disponibilidade
para Cloud
Paulo Miguel Almeida Rodenas
Arquiteto de Sistemas/Arquiteto de Soluções
Loducca
2. Sobre o mini-curso
● Público alvo: Pessoas com algum
conhecimento em programação web ou mobile.
● Duração: 2 horas e meia – 3 horas
( dependendo das dúvidas ou profundidade
dos temas abordados )
● Pré-requisito: Muita vontade de aprender e
um pouco de imaginação.
Divirtam-se!
3. Disponibilidade
● Escalabilidade
– Aumentar a capacidade de acomodar um crescimento de
acessos/requisições sem alterar o design da aplicação.
● Confiabilidade
– Capacidade de um sistema ou componente funcionar sob
condições estabelecidas por um período de tempo
especificado.
● Manutenibilidade
– Facilidade em que algum produto pode ter manutenções
de maneira a isolar problemas, corrigir defeitos, substituir
componentes com falha sem ter que substituir
componentes que estão funcionando.
4. Por que minha aplicação deve ser
altamente disponível ?
● Porque é praticamente impossível se ter uma
aplicação que rode menos do que 24/7, 365 dias
por ano.
● “Everything fails all the time” - Werner Vogels –
CTO of Amazon
– Considerando esta afirmação é possível perceber
que garantir disponibilidade infere na capacidade e
lidar com erros.
● “Tempo é dinheiro”
– Qualquer interrupção em um sistema pode significar
milhões de reais perdidos.
5. Como isso é medido?
● Com uma simples equação matemática
representada por :
6. Como isso é medido?
● Mais facilmente compreendido pela tabela dos
noves:
7. É possível garantir 100% de
disponibilidade ?
● Resposta simples: Não
● Reposta elaborada:
– Impravável de oferecer essa garantia devido :
● Upgrade de softwares
● Reloads de Máquinas
● Tempo de identificação de componentes com defeito
● “Nem mesmo a linha telefônica garante uptime de 100%”
- Matthew Glotzbach – Enterprise Product Management
Director of Google
● Em Agosto,2014 a empresa Splunk anuncionou
100% de disponibilidade. Será que é verdade?
8. Data Center x Cloud x
Disponibilidade
● O que isso tem haver com disponibilidade do
meu sistema?
– “Friamente” falando nada.
● É possível se ter um sistema altamente disponível em
ambos dependendo dos requerimentos de acesso de
cada negócio.
● Meu négocio necessita de um data center físico
ou uma Cloud?
– Apenas as necessidades do negócio poderão dar
dicas de qual deles é mais adequado para sua
empresa.
9. Data Center x Cloud x
Disponibilidade
● Motivos para possuir um data center físico:
– Serviços customizados. ( OS modificados )
– Sistemas dedicados
– Controle total sobre a informação e equipamentos
● Desvantagens:
– Recursos matemáticamente limitados
– Não é possível alterar quantidade de armazenamento
sem comprar e instalar novos equipamentos.
– Pode não haver os recursos suficientes para lidar com
picos de utilização inesperados.
– Localização física. ( Disastres )
10. Data Center x Cloud x
Disponibilidade
● Motivos para utilizar a Cloud:
– Capacidade potencialmente “ilimitada”.
– Escalável de acordo com as necessidades de seu
negócio. ( Para os dois sentidos )
– Adição/Remoção de máquinas é feita em alguns minutos
apenas
– Custo por hora de utilização
● Desvantagens:
– Seu processamento é dividido com outras máquinas de
terceiros
– Não possui total controle sobre as informações e
equipamentos*
11. Data Center x Cloud x Custo
● http://aws.amazon.com/tco-calculator/
16. AWS – Data Centers
Pontos Importantes
● Toda comunicação entre regions é feita pela
internet
– É de responsabilidade da aplicação de encriptar o
conteúdo ao transferi-los
● Tranferência de dados entre regions é cobrada
● Transferência de dados entre máquinas de
uma mesma regions é gratuíta
17. Por que isso influenciaria na
disponibilidade?
● Cada region é completamente independente
● Cada Availability Zone é isolada uma da outra
(hardware)
– Estão conectadas entre si através de links de
baixíssima latência.
18. AWS - Region
Exemplo mínimo de uma AAD.
Internet
Load Balancer
Availability Zone Availability Zone
EC2 EC2
19. AWS - Region
Exemplo mínimo de uma AAD.
Internet
Load Balancer
Availability Zone Availability Zone
EC2 EC2
20. AWS - Region
Exemplo mínimo de uma AAD.
Internet
Load Balancer
Availability Zone Availability Zone
EC2 EC2
21. Entendimento da sala até o
momento
● Por que se preocupar com AD.
● Como é medido a disponibilidade.
● Vantagens do uso da Cloud.
● Regions e Availability zones.
● Arquitetura mínima de uma AAD.
22. Chaves do sucesso de AAD.
● Projete para suportar falhas
● Sempre distribua seu sistema em diferentes
Availability Zones ou até Regions se isso for
necessário. ( Seja coerente aqui )
● Considere escalabilidade
● Estratégia de auto-reparo.
25. Projete para suportar falhas
Internet
Máquina
EC2
Banco de Dados
RDS
Load Balancer
Máquina
EC2
Máquina
EC2
No mínimo 2 máquinas.
26. Projete para suportar falhas
Internet
Máquina
EC2
Banco de Dados
RDS
Load Balancer
Máquina
EC2
Máquina
EC2
27. Projete para suportar falhas
Internet
Máquina
EC2
Banco de Dados
RDS
Load Balancer
Máquina
EC2
Máquina
EC2
Toda aplicação é impactada
28. Projete para suportar falhas
Internet
Máquina
EC2
Banco de Dados
RDS
(Master)
Load Balancer
Máquina
EC2
Máquina
EC2
Banco de Dados
RDS
(Slave)
Processo de replicação de dados
29. Projete para suportar falhas
Internet
Máquina
EC2
Banco de Dados
RDS
(Slave)
Load Balancer
Máquina
EC2
Máquina
EC2
Banco de Dados
RDS
(Master)
O Banco de Slave será promovido a Master
30. AZ - A
Projete para suportar falhas
Internet
Máquina
EC2
Banco de Dados
RDS
(Master)
Load Balancer
Máquina
EC2
Máquina
EC2
Banco de Dados
RDS
(Slave)
Lembre-se que sempre colocamos máquina em uma AZ
Não
colocamos
antes para
não poluir a
arquitetura
visualmente
falando.
31. AZ - A
Projete para suportar falhas
Internet
Máquina
EC2
Banco de Dados
RDS
(Master)
Load Balancer
Máquina
EC2
Máquina
EC2
Banco de Dados
RDS
(Slave)
Mas e se a AZ falhar ? ( 99.99% de uptime )
32. AZ - A
Distribua em Múltiplas Availability
Zones
Internet
Máquina
EC2
Banco de Dados
RDS
(Master)
Load Balancer
Máquina
EC2
Máquina
EC2
AZ - B
Máquina
EC2
Máquina
EC2
Máquina
EC2
Banco de Dados
RDS
(Slave)
33. AZ - A
Distribua em Múltiplas Availability
Zones
Internet
Máquina
EC2
Banco de Dados
RDS
(Slave)
Load Balancer
Máquina
EC2
Máquina
EC2
AZ - B
Máquina
EC2
Máquina
EC2
Máquina
EC2
Banco de Dados
RDS
(Master)
34. AZ - A
Considere Escalabilidade
Internet
Máquina
EC2
Banco de Dados
RDS
(Master)
Load Balancer
Máquina
EC2
Máquina
EC2
Máquina
EC2
AZ - B
Máquina
EC2
Banco de Dados
RDS
(Slave)
Máquina
EC2
Máquina
EC2
Máquina
EC2
35. AZ - A
Considere Escalabilidade
Internet
Máquina
EC2
Banco de Dados
RDS
(Master)
Load Balancer
Máquina
EC2
Máquina
EC2
Máquina
EC2
AZ - B
Máquina
EC2
Banco de Dados
RDS
(Slave)
Máquina
EC2
Máquina
EC2
Máquina
EC2
E se houver mais requisições do que eu consigo lidar ?
36. AZ - A AZ - B
Considere Escalabilidade
Internet
Máquina
EC2
Banco de Dados
RDS
(Master)
Load Balancer
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Banco de Dados
RDS
(Slave)
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
37. AZ - A AZ - B
Considere Escalabilidade
Internet
Máquina
EC2
Banco de Dados
RDS
(Master)
Load Balancer
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Banco de Dados
RDS
(Slave)
Máquina
EC2
Máquina
EC2
Máquina
EC2
Remove as instâncias caso o pico diminuir
40. Por que não ?
● Não existe a arquitetura perfeita
– Mutável de acordo com os requerimentos de uma
aplicação,
● Toda arquitetura deve ser avaliada/criada com
muita coerência, pois implica diretamente nos
custos da empresa.
● “Não sofrer por antecedencia”
● A TI está para resolver os problemas que ela
mesmo criou.
41. AZ - A AZ - B
Considere Escalabilidade
Internet
Máquina
EC2
Banco de Dados
RDS
(Master)
Load Balancer
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Banco de Dados
RDS
(Slave)
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
O que mais pode “quebrar” nessa AAD?
42. Problemas a vista!
● Geralmente escalar banco de dados não é uma
coisa simples.
– A grande maioria deles não foi pensado
inicialmente para isso.
● Existe a possibilidade de contornar o problema
com um cluster de banco de dados
● Requer profissionais extremamente
especializados $$$
Rodar o video do DynamoDB*
43. AZ - A AZ - B
Considere Escalabilidade
Internet
Máquina
EC2
Serviço de Banco de Dados
DynamoDB
Load Balancer
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
44. AZ - A AZ - B
Estratégia de Auto-Reparo
Internet
Máquina
EC2
Serviço de Banco de Dados
DynamoDB
Load Balancer
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
O DynamoDB já inclui esta
Estratégia internamente.
46. AZ - A AZ - B
Estratégia de Auto-Reparo
Internet
Máquina
EC2
Serviço de Banco de Dados
DynamoDB
Load Balancer
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
O DynamoDB já inclui esta
Estratégia internamente.
47. AZ - A AZ - B
Estratégia de Auto-Reparo
Internet
Máquina
EC2
Serviço de Banco de Dados
DynamoDB
Load Balancer
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
O DynamoDB já inclui esta
Estratégia internamente.
48. AZ - A AZ - B
Estratégia de Auto-Reparo
Internet
Máquina
EC2
Serviço de Banco de Dados
DynamoDB
Load Balancer
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
Máquina
EC2
O DynamoDB já inclui esta
Estratégia internamente.
49. Entendimento da sala até o
momento
● Por que se planejar para suportar falhas ?
● Por que múltiplas Avilability zones ?
● Por que devo considerar escalabilidade ?
● Por que ter estratégias de auto-reparo ?
50. Como fazer isso na AWS
● Criar as máquinas
● Definir imagens
● Configurar Banco de dados
● Configurar Load Balancer
● Configurar Health Check
● Configurar Auto Scaling
74. Como fazer isso na AWS
● Criar as máquinas
● Definir imagens
● Configurar Banco de dados
● Configurar Load Balancer *
● Configurar Health Check *
* Faremos ambos juntos
85. Como fazer isso na AWS
● Criar as máquinas
● Definir imagens
● Configurar Banco de dados
● Configurar Load Balancer
● Configurar Health Check
● Configurar Auto Scaling
108. Agradecimentos
● Minha família, por sempre me apoiarem nas
decisões que tomei
● Minha esposa, pela paciência nos últimos 3
anos
● A Loducca, por me permitir ter espaço para
explorar as mais diversas arquiteturas.
● A todos vocês, por terem vindo até aqui.