[Palestra] - Arquitetura de Sistemas de Alta Disponibilidade para Cloud

Post on 20-Jul-2015

92 views 1 download

Transcript of [Palestra] - Arquitetura de Sistemas de Alta Disponibilidade para Cloud

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

paulo.ubuntu@gmail.com

github.com/pauloubuntu