No cenário hipercompetitivo de hoje, estar sempre conectado é essencial para consumidores, parceiros e funcionários. A arquitetura na nuvem não só funciona como antídoto contra o downtime, como também ajuda as organizações a abrir novas fontes de receita. Atualmente, as exigências de carga de trabalho de IA, desenvolvimento de aplicações e entrega global de serviços são, cada uma por si só, responsáveis por quase 40% da adoção de multinuvem.
As oportunidades trazidas pela nuvem vêm, em grande parte, da capacidade de liberar muito mais poder computacional com mais confiabilidade do que nunca. Esses bancos de dados se tornaram fundamentais até para a infraestrutura nacional — em algumas situações reais, vidas podem depender de um banco de dados altamente confiável. Quando um paciente chega ao pronto-socorro, por exemplo, os profissionais de saúde precisam de acesso imediato ao prontuário para tomar decisões críticas de tratamento. Qualquer atraso nesse acesso pode ter consequências fatais.
Mesmo assim, todo sistema está sujeito a falhas. O que diferencia a nuvem de qualquer outra arquitetura é a capacidade de criar rapidamente clusters de alta disponibilidade diante de um problema inesperado. Isso garante desempenho contínuo e depende de um componente muito subestimado: o balanceador de carga.
O que é balanceamento de carga?
O balanceamento de carga permite distribuir o tráfego de rede recebido entre vários servidores de backend.
Quando um usuário final envia uma solicitação para acessar um site, aplicação ou serviço, essa solicitação chega primeiro ao balanceador de carga, que funciona como porta de entrada de todo o tráfego. Ele avalia a solicitação, consulta uma lista interna de regras e algoritmos predefinidos e decide qual servidor ou recurso de backend deve atendê-la.
Em um sistema multi-tenant, vários clientes distintos compartilham os mesmos recursos de computação. Essa abordagem gera economia significativa em comparação com implantar uma instância separada da aplicação para cada cliente e ainda reduz o esforço operacional de administrar inúmeros componentes de infraestrutura. Mas chamadas instáveis e intermitentes não são o único problema das cargas de trabalho desprotegidas: as organizações também ficam expostas ao chamado problema do “vizinho barulhento”.
É o que acontece quando um único tenant sobrecarrega o sistema com cargas de trabalho excessivas e derruba o desempenho geral. Sem balanceamento de carga, todos os clientes acabam dependendo desse servidor sobrecarregado — mesmo que haja outros disponíveis.
Os benefícios do balanceamento de carga
O balanceamento de carga já é uma parte tão essencial da infraestrutura na nuvem que quase ninguém repara nele. Dois benefícios se destacam: a eficiência de custos e um nível mais alto de disponibilidade dos serviços.
Mais eficiência
Na nuvem, sempre há mais de um caminho para chegar ao mesmo resultado. Ao montar uma aplicação, por exemplo, dá para usar um API gateway: uma ponte entre cliente e servidor que gerencia o acesso a bancos de dados de backend, microsserviços e funções. Se isso soa familiar, é porque muitas equipes de desenvolvimento menores usam o API gateway como um balanceador de carga rudimentar, já que ele controla tanto a taxa de solicitações quanto a autenticação dos usuários.
Só que, conforme a aplicação ou o site cresce em volume de usuários e ultrapassa o limite gratuito do API gateway, essa arquitetura simples pode inflar rapidamente e virar um custo incontrolável. Veja este exemplo extremamente detalhado de um engenheiro da AWS: com o API Gateway da AWS custando US$ 3,50 por 1 milhão de solicitações, esse caso de uso tinha média de 450 solicitações por segundo. São 38.880.000 solicitações por dia, ou mais de US$ 4.000 por mês só de API Gateway. Já os balanceadores de carga são cobrados por hora. Além do custo-base de US$ 15 por hora, as Load Balancer Cost Units permitem que o provedor de nuvem considere o quanto o balanceador precisa trabalhar — incluindo novas conexões por segundo, conexões ativas e bytes processados. No exemplo real do autor, a necessidade de 20 balanceadores de carga individuais, distribuídos por três regiões de disponibilidade, somou US$ 166 por mês com o AWS Load Balancing — uma diferença enorme em relação aos US$ 4.163 mensais gastos exatamente com o mesmo serviço via API Gateway.
No fundo, quando os desenvolvedores precisam de um jeito simples de invocar uma função por HTTPS, os balanceadores de carga entregam exatamente a potência necessária — muitas vezes por um preço bem menor.
Escalabilidade garantida
Enquanto algumas organizações convivem com formas ineficientes de entrega de serviços, outras enfrentam algo pior: o pesadelo on-premises de uma enxurrada repentina de usuários.
Ao distribuir as solicitações entre vários servidores, o tempo de espera cai bastante. Isso melhora a experiência do usuário como um todo — e é um dos motivos pelos quais as redes de distribuição de conteúdo (CDNs) costumam incluir um módulo de balanceamento de carga. Além de garantir disponibilidade ininterrupta, os balanceadores de carga também conseguem prever o tráfego das aplicações de forma inteligente, dando às organizações tempo para adicionar ou trocar servidores conforme a necessidade.
Balanceadores de carga estáticos e dinâmicos
Os balanceadores de carga vêm em todos os formatos e tamanhos. A grande divisão está entre os tipos estático e dinâmico, mas cada um deles tem suas próprias formas de dividir as solicitações dos usuários.
Estático
Os balanceadores de carga estáticos escolhem o método de roteamento sem levar em conta o estado do servidor. Isso acontece de três formas principais:
Hash de IP
O endereço IP do cliente entra em um cálculo matemático que o converte em um número. Esse número é então associado a um servidor específico. Como o método se apoia em um dado que não muda — o endereço IP —, o cliente mantém a persistência de sessão. Isso o torna ideal para serviços que dependem de dados armazenados específicos, como carrinhos de e-commerce.
Round-robin
Enquanto o hash de IP depende do endereço IP do cliente, os algoritmos round-robin usam as informações do próprio provedor. Quando um cliente solicita seu site, o Sistema de Nomes de Domínio (DNS) devolve o endereço IP do seu servidor. No round-robin, esse servidor de nomes organiza o cluster em ordem alfabética. Em seguida, cada servidor recebe sequencialmente uma pequena parcela do tráfego.
Round-robin ponderado
Evolução do round-robin, o round-robin ponderado permite que os administradores apliquem um viés à seleção. Ao atribuir mais ou menos peso a determinados servidores, aqueles com maior capacidade recebem uma fatia proporcional do tráfego.
Dinâmico
Os balanceadores de carga dinâmicos usam algoritmos que acompanham o estado dos servidores em tempo real. Os pontos de atenção de cada algoritmo podem ser classificados assim:
Menor número de conexões
Este algoritmo analisa quantas conexões abertas existem em cada servidor disponível. Partindo do princípio de que cada conexão exige um poder de processamento parecido, o balanceador direciona o tráfego para o servidor com a carga mais leve.
Menor número de conexões ponderado
Versão dinâmica do round-robin ponderado, essa abordagem permite que os administradores acrescentem contexto manualmente na forma de peso por servidor.
Tempo de resposta ponderado
Este algoritmo calcula o tempo médio de resposta de cada servidor, considerando o número de conexões abertas, a região e a demanda atual. Assim, o tráfego vai para os servidores mais rápidos, o que garante o menor tempo de resposta para os usuários.
Baseado em recursos
A distribuição de carga leva em conta os recursos disponíveis em cada servidor, como CPU e memória. Um software especializado instalado em cada servidor (chamado de “agente”) monitora esses recursos, e o balanceador de carga consulta o agente para distribuir o tráfego com base em dados concretos.
Solicitações de rede mais rápidas
Os balanceadores de carga são parte essencial da infraestrutura de computação moderna. Eles distribuem o tráfego de rede com eficiência e garantem desempenho ideal, alta disponibilidade e uma experiência fluida para o usuário. Ao dividir a carga entre vários servidores, essas ferramentas dinâmicas se tornaram indispensáveis para quem quer aumentar a confiabilidade e a escalabilidade das próprias aplicações e serviços.
Para ver esses métodos de balanceamento na prática, assista a este vídeo curto: “O que é um balanceador de carga?”.
