Guia de conceitos

Alta disponibilidade e recuperação de desastres

Servidores quebram, data centers ficam sem energia e pessoas apagam dados sem querer. Alta disponibilidade é manter o seu serviço funcionando mesmo quando isso acontece. Recuperação de desastres é trazê-lo de volta dentro de um prazo combinado quando, mesmo assim, ele cai. Cada provedor de nuvem usa nomes diferentes, mas o esqueleto é o mesmo. Primeiro vamos ver o esqueleto e, depois, capítulo por capítulo, o que muda em cada provedor.

Você está vendo o guia para Azure. Cada capítulo também mostra os nomes de serviço de Azure e no que ele difere dos outros provedores.

01

Falhas vão acontecer: números de disponibilidade e pontos únicos de falha

Disponibilidade é a fração do tempo em que o seu serviço pôde ser usado. 99,9% parece bem alto, mas, em um ano, significa cerca de 8 horas e 45 minutos fora do ar. Cada 9 a mais corta para um décimo o tempo parado que você pode ter, e o custo e o projeto ficam mais difíceis na mesma medida.

DisponibilidadeTempo parado por anoTempo parado por mês
99%Cerca de 3 dias e 15 horasCerca de 7 horas
99,9%Cerca de 8 horas e 45 minutosCerca de 43 minutos
99,95%Cerca de 4 horas e 22 minutosCerca de 22 minutos
99,99%Cerca de 52 minutosCerca de 4 minutos
99,999%Cerca de 5 minutosCerca de 26 segundos

Em série, ela cai; lado a lado, ela sobe

Um serviço é feito de vários componentes ligados entre si. Se a resposta precisa passar por um servidor web, depois por um servidor de app e depois por um banco de dados, os três precisam estar no ar. Por isso, a disponibilidade total é o produto da disponibilidade de cada componente. Ligue três componentes de 99,9% e você cai para cerca de 99,7%. Já com dois servidores iguais lado a lado, a camada só para se os dois pararem, e ela sobe para 99,9999% (supondo que os dois falham de forma independente). Na cena abaixo, experimente dobrar cada camada.

Disponibilidade geral
99,7% (~26,3 horas fora do ar por ano)

Uma requisição precisa passar por web → app → BD para ser atendida · canto superior esquerdo = disponibilidade por camada

Mesmo que cada componente tenha 99,9%, ligar três em série exige que os três estejam no ar ao mesmo tempo, então o total cai para 99,7%. Já com dois servidores iguais lado a lado, a camada só para se os dois pararem, e ela sobe para 99,9999%. (Essa conta supõe que as falhas são independentes entre si.)

Um ponto em que uma única peça parando para tudo se chama ponto único de falha. Projetar para alta disponibilidade é encontrar os pontos únicos de falha e eliminá-los um por um. E não são só servidores. Um banco de dados, um balanceador de carga, um caminho de rede e até "a única pessoa que sabe como esse servidor está configurado" podem ser um ponto único de falha.

SLA é promessa de reembolso, não garantia

Cada serviço de nuvem promete um tempo de atividade mensal no seu SLA (acordo de nível de serviço). Aqui está a pegadinha: o SLA não garante que "vai funcionar com certeza esse tanto". Ele promete que "se a gente não cumprir, devolve parte da fatura em créditos". Ele não cobre o que você perde enquanto está fora do ar, então a disponibilidade do seu serviço tem que vir do seu projeto. Mesmo para o mesmo serviço, o SLA é maior quando você o distribui por várias zonas do que quando roda um servidor só.

Conta clássica de prova: em série, multiplique (99,9% × 99,9% ≈ 99,8%); com redundância, é 1 − (1 − a)² (dois servidores de 99,9% → 99,9999%). "Jeito mais econômico de aumentar a disponibilidade" → torne redundante primeiro o ponto único de falha mais fraco.

Se a questão disser… → escolha isto

  • “Um componente que, ao parar, para tudo”Ponto único de falha (SPOF)
  • “Disponibilidade total de três componentes de 99,9% em série”Cerca de 99,7% (multiplicar)
  • “Ter dois servidores iguais faz a disponibilidade”Subir — os dois precisam falhar para parar
  • “O que você recebe quando o SLA não é cumprido”Créditos de serviço (não indenização pelas perdas)
  • “Tempo parado por ano com 99,99% de disponibilidade”Cerca de 52 minutos

Para eliminar o ponto único de falha, você passou de um servidor para dois. Mas e se os dois estiverem no mesmo prédio?

02

O tamanho da falha: servidores, zonas e regiões

Falhas têm tamanhos diferentes. Às vezes o disco de um servidor queima. Às vezes um data center inteiro para por queda de energia, incêndio ou falha de rede. E, de vez em quando, uma área geográfica inteira para por um desastre natural ou uma pane de grande escala. A área atingida por uma única falha se chama raio de impacto (blast radius).

A nuvem mostra essa área como zonas de disponibilidade e regiões. Uma região é uma área geográfica, como São Paulo ou Tóquio, e dentro dela há várias zonas de disponibilidade: grupos de data centers, cada um com energia, refrigeração e rede independentes. As zonas ficam perto o bastante para a replicação síncrona (alguns milissegundos de latência), mas longe o bastante para que um desastre em uma não se espalhe para a outra.

Distribuição
Falha
Distribuição
Divididos entre duas zonas de disponibilidade
Resultado
Serviço no ar

Onde você coloca os dois servidores decide o tamanho da falha que eles aguentam

Você dividiu os dois servidores entre zonas de disponibilidade diferentes, então, mesmo que uma zona de disponibilidade pare inteira, o servidor da outra assume. Essa é a configuração básica que a maioria dos serviços busca. Uma zona de disponibilidade do Azure é um grupo de datacenters com energia, refrigeração e rede próprias e independentes.

DistribuiçãoFalha de servidorFalha de zonaFalha de regiãoCusto e complexidade
Vários servidores em uma zonaAguentaParaParaBaixo
Divididos entre zonasAguentaAguentaParaMédio — o padrão da maioria
Divididos entre regiõesAguentaAguentaAguentaAlto — atraso de replicação e custo

A maioria dos serviços em produção usa várias zonas como base. Elas ficam na mesma região, então a latência é baixa o bastante para replicar o banco de dados de forma síncrona, e você aguenta a falha de uma zona. Você só parte para várias regiões quando precisa aguentar também a falha de uma região (leis e regulamentações, ou um serviço muito grande), e o jeito de fazer isso são as estratégias de recuperação de desastres do capítulo 7.

Se a questão disser… → escolha isto

  • “Manter o serviço no ar mesmo se um data center parar”Distribuir por várias zonas de disponibilidade
  • “Manter o serviço no ar mesmo em um desastre na região inteira”Uma cópia em outra região (recuperação de desastres)
  • “O ponto fraco de colocar dois servidores na mesma zona”Os dois param juntos em uma falha de zona
  • “Por que a replicação síncrona entre zonas é possível”Elas ficam na mesma região, então a latência é baixa
  • “A área atingida por uma única falha”Raio de impacto (blast radius)

Para decidir até onde aguentar, primeiro você precisa de uma meta. Quanto tempo você pode ficar fora do ar, e quantos dados pode perder?

Publicidade

03

O que proteger, e quanto: RTO e RPO

Quando você projeta a recuperação de desastres, há dois números para decidir antes de tudo. O RPO (objetivo de ponto de recuperação) é "quantos dados você pode perder quando algo falha", medido em tempo. O RTO (objetivo de tempo de recuperação) é "quanto tempo você pode ficar fora do ar".

Fica mais fácil se você colocar o momento da falha no meio. Olhando para trás, tudo desde o último ponto em que os dados ficaram protegidos (o último backup ou a última replicação) são os dados que você perde: esse é o RPO. Olhando para a frente, tudo até o serviço voltar é o tempo fora do ar: esse é o RTO. Na cena abaixo, experimente mudar o jeito de proteger os dados e o jeito de recuperar.

Como proteger os dados
Como recuperar
RPO
24 horas
RTO
8 horas

A partir do momento da falha, o RPO olha para trás e o RTO para a frente · escala de tempo logarítmica, números de exemplo

O RPO é “quantos dados você pode perder quando algo falha”, medido em tempo. Com “Backup uma vez por dia”, você pode perder até 24 horas de dados acumulados logo antes da falha. O RTO é “quanto tempo você pode ficar fora do ar”. Aqui supomos que “Recriar e restaurar do backup” leva cerca de 8 horas. Quanto mais curto você deixa qualquer um dos dois, mais caro fica.

RPORTO
O que perguntaQuantos minutos ou horas de dados você pode perder?Quantos minutos ou horas você pode ficar parado?
O que o defineFrequência dos backups, forma de replicaçãoForma de recuperar, quão pronto está o ambiente reserva
Perto de zero exigeReplicação em tempo real (síncrona)Um ambiente reserva que já esteja rodando

Essas duas metas são definidas pelo negócio, não pela tecnologia. Um sistema de pedidos perde muito se ficar parado nem que seja um minuto e não pode perder um único pedido, enquanto um sistema interno de relatórios pode ficar um dia parado sem problema. Quanto mais curta a meta, maior o custo, então você pesa perdas e custo para cada sistema. Se recuperar custa mais do que a falha faria você perder, a meta ficou alta demais.

"Aceita-se perder no máximo 15 minutos de dados" → RPO de 15 minutos. "O serviço precisa voltar em até 4 horas" → RTO de 4 horas. Guarde o RPO como "dados" e o RTO como "tempo (parado)".

Se a questão disser… → escolha isto

  • “Perda máxima de dados aceitável em uma falha”RPO (objetivo de ponto de recuperação)
  • “Tempo máximo para o serviço voltar depois de uma falha”RTO (objetivo de tempo de recuperação)
  • “RPO de um sistema com backup só uma vez por dia”Até 24 horas
  • “Deixar o RPO perto de zero”Replicação em tempo real (síncrona)
  • “Quanto mais curtos o RTO e o RPO”Maior o custo

Com as metas definidas, chegou a hora de não deixar o serviço parar. Primeiro, como fazer os servidores aguentarem quando as requisições chegam de uma vez.

Exclusivo Pro

Até aqui vai a parte gratuita

Os outros 5 capítulos estão disponíveis para assinantes Pro. Cada um continua com visuais em 3D e dicas de “se a questão disser…”, e no último capítulo você testa o que aprendeu.

  1. 04Escalabilidade e auto scaling
  2. 05Replicação e failover do banco de dados
  3. 06Backup e restauração
  4. 07Quatro estratégias de recuperação de desastres
  5. 08Projetar para a resiliência e testá-la