Upload
paulo-miguel-almeida
View
92
Download
1
Embed Size (px)
Citation preview
Mini-Curso
Arquitetura de Sistemas de Alta Disponibilidade para Cloud
Paulo Miguel Almeida Rodenas
Arquiteto de Sistemas/Arquiteto de SoluçõesLoducca
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!
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.
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.
Como isso é medido?
● Com uma simples equação matemática representada por :
Como isso é medido?● Mais facilmente compreendido pela tabela dos
noves:
É 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?
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.
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 )
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*
Data Center x Cloud x Custo
● http://aws.amazon.com/tco-calculator/
Data Center x Cloud x Custo
Players no Mercado de Cloud
AWS – Data Centers
AWS - Regions
AWS – Data CentersPontos 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
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.
AWS - Region
Exemplo mínimo de uma AAD.
Internet
Load Balancer
Availability Zone Availability Zone
EC2 EC2
AWS - Region
Exemplo mínimo de uma AAD.
Internet
Load Balancer
Availability Zone Availability Zone
EC2 EC2
AWS - Region
Exemplo mínimo de uma AAD.
Internet
Load Balancer
Availability Zone Availability Zone
EC2 EC2
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.
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.
Projete para suportar falhas
Internet
MáquinaEC2
Banco de DadosRDS
Projete para suportar falhas
Internet
MáquinaEC2
Banco de DadosRDS
Projete para suportar falhas
Internet
MáquinaEC2
Banco de DadosRDS
Load Balancer
MáquinaEC2
MáquinaEC2
No mínimo 2 máquinas.
Projete para suportar falhas
Internet
MáquinaEC2
Banco de DadosRDS
Load Balancer
MáquinaEC2
MáquinaEC2
Projete para suportar falhas
Internet
MáquinaEC2
Banco de DadosRDS
Load Balancer
MáquinaEC2
MáquinaEC2
Toda aplicação é impactada
Projete para suportar falhas
Internet
MáquinaEC2
Banco de DadosRDS
(Master)
Load Balancer
MáquinaEC2
MáquinaEC2
Banco de DadosRDS
(Slave)
Processo de replicação de dados
Projete para suportar falhas
Internet
MáquinaEC2
Banco de DadosRDS
(Slave)
Load Balancer
MáquinaEC2
MáquinaEC2
Banco de DadosRDS
(Master)
O Banco de Slave será promovido a Master
AZ - A
Projete para suportar falhas
Internet
MáquinaEC2
Banco de DadosRDS
(Master)
Load Balancer
MáquinaEC2
MáquinaEC2
Banco de DadosRDS
(Slave)
Lembre-se que sempre colocamos máquina em uma AZ
Não colocamos antes para não poluir a arquitetura visualmente falando.
AZ - A
Projete para suportar falhas
Internet
MáquinaEC2
Banco de DadosRDS
(Master)
Load Balancer
MáquinaEC2
MáquinaEC2
Banco de DadosRDS
(Slave)
Mas e se a AZ falhar ? ( 99.99% de uptime )
AZ - A
Distribua em Múltiplas Availability Zones
Internet
MáquinaEC2
Banco de DadosRDS
(Master)
Load Balancer
MáquinaEC2
MáquinaEC2
AZ - B
MáquinaEC2
MáquinaEC2
MáquinaEC2
Banco de DadosRDS
(Slave)
AZ - A
Distribua em Múltiplas Availability Zones
Internet
MáquinaEC2
Banco de DadosRDS
(Slave)
Load Balancer
MáquinaEC2
MáquinaEC2
AZ - B
MáquinaEC2
MáquinaEC2
MáquinaEC2
Banco de DadosRDS
(Master)
AZ - A
Considere Escalabilidade
Internet
MáquinaEC2
Banco de DadosRDS
(Master)
Load Balancer
MáquinaEC2
MáquinaEC2
MáquinaEC2
AZ - B
MáquinaEC2
Banco de DadosRDS
(Slave)
MáquinaEC2
MáquinaEC2
MáquinaEC2
AZ - A
Considere Escalabilidade
Internet
MáquinaEC2
Banco de DadosRDS
(Master)
Load Balancer
MáquinaEC2
MáquinaEC2
MáquinaEC2
AZ - B
MáquinaEC2
Banco de DadosRDS
(Slave)
MáquinaEC2
MáquinaEC2
MáquinaEC2
E se houver mais requisições do que eu consigo lidar ?
AZ - A AZ - B
Considere Escalabilidade
Internet
MáquinaEC2
Banco de DadosRDS
(Master)
Load Balancer
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
Banco de DadosRDS
(Slave)
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
AZ - A AZ - B
Considere Escalabilidade
Internet
MáquinaEC2
Banco de DadosRDS
(Master)
Load Balancer
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
Banco de DadosRDS
(Slave)
MáquinaEC2
MáquinaEC2
MáquinaEC2
Remove as instâncias caso o pico diminuir
Acabou os problemas de Alta disponibilidade?
Não
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.
AZ - A AZ - B
Considere Escalabilidade
Internet
MáquinaEC2
Banco de DadosRDS
(Master)
Load Balancer
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
Banco de DadosRDS
(Slave)
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
O que mais pode “quebrar” nessa AAD?
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*
AZ - A AZ - B
Considere Escalabilidade
Internet
MáquinaEC2
Serviço de Banco de DadosDynamoDB
Load Balancer
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
AZ - A AZ - B
Estratégia de Auto-Reparo
Internet
MáquinaEC2
Serviço de Banco de DadosDynamoDB
Load Balancer
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
O DynamoDB já inclui estaEstratégia internamente.
Estratégia de Auto-Reparo
AZ - A AZ - B
Estratégia de Auto-Reparo
Internet
MáquinaEC2
Serviço de Banco de DadosDynamoDB
Load Balancer
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
O DynamoDB já inclui estaEstratégia internamente.
AZ - A AZ - B
Estratégia de Auto-Reparo
Internet
MáquinaEC2
Serviço de Banco de DadosDynamoDB
Load Balancer
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
O DynamoDB já inclui estaEstratégia internamente.
AZ - A AZ - B
Estratégia de Auto-Reparo
Internet
MáquinaEC2
Serviço de Banco de DadosDynamoDB
Load Balancer
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
MáquinaEC2
O DynamoDB já inclui estaEstratégia internamente.
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 ?
Como fazer isso na AWS
● Criar as máquinas● Definir imagens● Configurar Banco de dados● Configurar Load Balancer● Configurar Health Check● Configurar Auto Scaling
Como fazer isso na AWS
● Criar as máquinas
Criar máquinas (EC2)
Criar máquinas (EC2)
Criar máquinas (EC2)
Criar máquinas (EC2)
Criar máquinas (EC2)
Criar máquinas (EC2)
Criar máquinas (EC2)
Criar máquinas (EC2)
Criar máquinas (EC2)
Como fazer isso na AWS
● Criar as máquinas● Definir imagens
Definir imagens
Definir imagens
Definir imagens
Como fazer isso na AWS
● Criar as máquinas● Definir imagens● Configurar Banco de dados
Configurar Banco de Dados
Configurar Banco de Dados
Configurar Banco de Dados
Configurar Banco de Dados
Configurar Banco de Dados
Configurar Banco de Dados
Configurar Banco de Dados
Configurar Banco de DadosColunas dinâmicas.
Como fazer isso na AWS
● Criar as máquinas● Definir imagens● Configurar Banco de dados● Configurar Load Balancer *● Configurar Health Check *
* Faremos ambos juntos
Configurar Load Balancer
Configurar Load Balancer
Configurar Load Balancer
Configurar Load Balancer
Configurar Load Balancer
Configurar Load Balancer
Configurar Load Balancer
Configurar Load Balancer
Configurar Load Balancer
Configurar Load Balancer
Como fazer isso na AWS
● Criar as máquinas● Definir imagens● Configurar Banco de dados● Configurar Load Balancer● Configurar Health Check● Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
Configurar Auto Scaling
0
Pronto !
AWS Whitepapers
● Mostrar cenários diferentes onde a arquitetura de sistema e de soluções foi essencial para o negócio acontecer.
Dúvidas ?
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.
Contato
Paulo Miguel Almeida Rodenas
github.com/pauloubuntu