Estabilidade Estática: Sua Infraestrutura é Resiliente de Verdade? 😬

Hoje eu quero te trazer uma reflexão que, se você ainda não teve, provavelmente vai ter em breve – especialmente se você trabalha (ou quer trabalhar) com sistemas distribuídos, alta disponibilidade ou ambientes em cloud.

Afinal… usar um, dois ou até três data centers realmente deixa sua aplicação mais resiliente e consequentemente aumenta sua SLA de disponibilidade ? 🤔

E se eu te dissesse que, na prática, isso pode até aumentar o risco de indisponibilidade, se não for bem planejado?

Parece meio estranho, né? Mas esse é exatamente o ponto central do conceito de estabilidade estática. Já tem um tempo que falei sobre isso num vídeo lá no YouTube — inclusive, se quiser assistir depois, vale muito a pena! Vou deixar o link no final do post (mas ó, resiste a tentação e continua aqui comigo primeiro! 😅)

O que é Estabilidade Estática?

É a capacidade do seu sistema continuar operando, mesmo quando uma parte dele falha. E mais: operando de forma estável, sem colapsar o resto da infraestrutura.

Esse conceito vem da engenharia “tradicional”, tipo engenharia civil ou automotiva. Imagina um carro projetado pra continuar funcionando com três rodas, se uma estourar. O sistema (carro) se adapta e continua de pé, mesmo que com limitações.

Agora pensa comigo:

Se eu crio um carro com quatro rodas, eu também crio quatro pontos de falha. E se uma roda fura? O carro pode precisar reduzir de 100km/h pra 20km/h — ou até parar de vez até a roda ser trocada.

Será que, nesse caso, um triciclo não seria até mais resiliente? Ele roda a 100km/h como o carro, mas com 1/4 a menos de chance de falha, pois possui 3 pontos de falha 👀

Parece loucura, mas é justamente esse tipo de lógica que a gente precisa aplicar quando desenha sistemas distribuídos. Mais peças nem sempre significam mais segurança.


Agora pensa: seu sistema de software consegue fazer isso?

O Erro Clássico do “Resiliente” de Mentirinha

A galera adora desenhar aquele esquema bonito:

Usuários → Load Balancer → 3x AZs bonitinhas 

E dizem com todo orgulho: “Estamos em três zonas de disponibilidade. Tá tudo resiliente!”



Será que isso é uma verdade ? Vamos trazer pra prática…

Imagina que você tem 3 data centers (AZ-A, AZ-B e AZ-C), e cada um deles está operando com 75% de uso dos seus recursos.

(Aliás, aqui vale uma observação rápida: quando falamos de AZ — Availability Zone — estamos nos referindo a uma zona isolada de disponibilidade dentro de uma região. Na prática, ela pode conter mais de um data center físico, mas para fins arquiteturais, você pode (e deve) tratar como se fosse um único ponto de falha. Afinal, são estruturas próximas, muitas vezes com interdependência energética, de rede ou até climática. 🌩️)

Pensando na analogia do carro: nesse caso acima, você teria um triciclo com 3 possiveis pontos de falhas.

E se a AZ-C cair ?… como é que você faz os 75% de carga que estavam lá caberem dentro das outras duas AZs?

Fazendo uma conta rápida:

  1. Cada uma (AZ-A e AZ-B) já estava com 75% de carga.
  2. Agora precisam absorver mais 37,5% cada (metade dos 75% da AZ-C).
  3. Resultado? AZ-A e AZ-B vão a 112,5% de utilização.

E aí, o que acontece?💥 Indisponibilidade., 🔥 Falha em cascata e se você ainda colocou retry automático pra “ser resiliente”, aí é que o caos se espalha de vez — o sistema começa a se afogar em si mesmo (spoiler: tenho uma aula de quase 1 hora só sobre retry lá no CaD, porque esse é um dos temas que se não estiver bem implementado pode gerar um problema enorme).

Mas Douglas, não dá pra escalar?

Até dá… se der tempo, porém o que geralmente vejo nos clientes e arquiteturas que o tempo de escalar é maior do que o rebalanceamento da carga dos usuários entre a zona com problema para as outras.

Se o tráfego redirecionado pras outras AZs for intenso, e seu autoscaling demorar a responder, a sobrecarga já bateu. CPU vai a 100%, threads travam, fila estoura. Você já viu esse filme, né?

Então o que é um sistema estável estaticamente?

É um sistema onde cada pedaço (ex: cada AZ) tem capacidade mínima de operar sozinho em caso de falha alheia.

Ou seja, se uma zona cair, as outras irão conseguir comportar a carga total sem ultrapassar 100%.

Ou seja, em caso de ter 3 datacenters, garanta que eles estarão operando no maixmo até 60%, assim se um cair, os outros dois irão para 90% e iniciarão o processo de escalar novos recursos nas AZs que não estiverem desligadas.

Para concluir,

Conforme prometido, segue meu vídeo no youtube sobre esse tema e se você tiver interesse em aprender mais sobre arquitetura de software em um nível bem mais aprofundado, venha fazer parte da Comunidade de Arquitetura Descomplicada (CaD)! Saiba mais em https://mugnos-it.com/cad/ 🚀🚨

guest
0 Comentários
Mais Velhos
Mais Novos Mais Votados
Inline Feedbacks
Veja todos comentários
0
Gostaria muito de saber sua opinião!x