[System Design] Disponibilidade
Quando se trata de disponibilidade de um sistema, uma das questões é a sua capacidade de resistir a falhas. Podemos pensar “Quanto o meu sistema é resistente quando algo da errado?”. Isso é comumente chamado de fault tolerance ou tolerância a falhas, a capacidade de um sistema de lidar com falhas e manter sua disponibilidade.
A avaliação da disponibilidade de um sistema é geralmente medida em anos. Considerando um ano inteiro, é verificado quanto tempo o sistema permaneceu disponível. Por exemplo, uma disponibilidade de 99% pode parecer excelente, mas dependendo do contexto, pode não ser tão bom assim. Vou te explicar o porquê.
Nines
A porcentagem do tempo que o seu sistema de manteve disponível é medido por número de noves, por exemplo, 90%, um nove, 99% dois nove. Baseado na quantidade de noves que tem no seu uptime, podemos achar a quantidade de tempo que o sistema ficou fora.
Perceba que 99% por mais que pareça muito bom, ficar três dias fora do ar em alguns casos pode gerar muito impacto financeiro. Sendo um pouco mais hardcore, pode gerar mortes 😱.
Como eu posso melhorar a disponibilidade do meu sistema?
Primeiramente, é importante entender qual parte do seu negócio é mais crítica e precisa ter alta disponibilidade (HA - High Availability). Após isso, uma ação importante a ser realizada é a redundância. Mas o que seria redundância?
Redundância é o ato de multiplicar partes importantes do seu sistema. Basicamente você ira aumentar o numero de servidor para a parte importante do seu negócio, assim quando um cair, o tráfego de request é redirecionado para o outro.
Existem dois tipos de redundância:
-
Redundância Passiva: Apenas um servidor recebe tráfego e em caso de falha o tráfego é redirecionado a o outro servidor.
-
Redundância Ativa: Todo o tráfego é distribuído através de todos os servidores ao mesmo tempo.
Para gerenciar essas requisições, podemos utilizar um balanceador de carga (load balancer). Uma opção é o Amazon Elastic Load Balancing, que é um serviço oferecido pela AWS (Amazon Web Services). https://aws.amazon.com/pt/elasticloadbalancing/
Agora fica a pergunta mas e se o LB ficar fora? 🤔 … coming soon