Escalabilidade: Faça Sua Plataforma Crescer Sem Limites

Descubra como garantir que sua plataforma esteja preparada para crescer de forma sustentável. Neste guia, explico os dois tipos principais de escalabilidade, seus desafios, e como fazer as escolhas certas para garantir eficiência e desempenho.

Escalabilidade: Faça Sua Plataforma Crescer Sem Limites

A expectativa inicial

A expectativa é que, no primeiro ano, essa plataforma web alcance 1 milhão de usuários. No segundo, esse número deve ultrapassar 10 milhões. Todos estão empolgados com o que promete ser a próxima startup a revolucionar a indústria.

Ali, dentro da sala de reunião, tudo parece perfeito: slides cheios de transições suaves, gráficos de crescimento hipnotizantes e um protótipo que até o DEV mais cético teria dificuldade de criticar.


O que é Escalabilidade?

Escalabilidade é a capacidade de um sistema ajustar o uso de seus recursos de hardware de forma simples e eficiente, suportando sua carga sem complicações e com um custo otimizado.

"É como um restaurante que pode, de forma rápida e eficiente, adicionar mesas conforme mais clientes chegam, sem precisar reformar o espaço."

Da mesma forma, um sistema escalável aumenta ou diminui seus recursos conforme a demanda cresce ou diminui, sem complicações e sem desperdício.


Tipos de Escalabilidade

Agora que entendemos o conceito básico de escalabilidade, vamos explorar os dois tipos principais e como cada um pode ser aplicado em diferentes cenários.

A imagem abaixo mostra como cada tipo de escalabilidade funciona na prática. Veja como cada abordagem se ajusta às necessidades do projeto, garantindo que a plataforma continue operando sem falhas, mesmo com um grande aumento de usuários.

0:00
/0:15

Escalabilidade Vertical

A escalabilidade vertical (ou scale up) é a mais simples de ser aplicada. Para implementá-la, basta gastar mais dinheiro fazendo o upgrade dos recursos da máquina, como aumentar a RAM, adicionar processadores, ou expandir o disco.

Desvantagens:

  • Mais cara: Uma máquina robusta com múltiplos processadores custa significativamente mais do que várias máquinas menores, cada uma com um único processador, por exemplo.
  • Downtime: Para realizar o upgrade dos recursos, a máquina precisará ficar indisponível por um período, o que pode causar um impacto significativo no negócio.
  • Limite: Por mais dinheiro que possamos investir, o hardware tem seus limites, e chega um ponto em que atingimos a capacidade máxima de recursos para uma única máquina.

Quando usar Escalabilidade Vertical:

  • Aplicações pequenas: Para sistemas que não precisam lidar com uma grande quantidade de usuários e dados, escalar verticalmente pode ser suficiente e mais econômico a curto prazo.
  • Sistemas Legados: Muitas empresas ainda operam sistemas legados com arquitetura monolítica, que não foram projetados para escalar horizontalmente. Nesses casos, aumentar os recursos de uma única máquina é a única opção viável, já que reescrever o sistema seria muito caro e complexo.
  • Ambientes de Desenvolvimento e Teste: Para ambientes de desenvolvimento, teste e até mesmo POC (Proof of Concept), onde o volume de dados e a carga de trabalho são significativamente menores do que em produção, a escalabilidade vertical é frequentemente utilizada. Os ambientes de teste muitas vezes são clonados da produção em máquinas menores, e escalar verticalmente é suficiente para simular o comportamento do sistema de forma rápida e econômica, sem a necessidade de replicar a arquitetura distribuída completa.

Escalabilidade Horizontal

Agora que exploramos a escalabilidade vertical, vamos entender por que a escalabilidade horizontal pode ser uma solução mais robusta para grandes volumes de usuários.

A escalabilidade horizontal (ou scale out) é considerada a verdadeira escalabilidade, pois não possui limites fixos. Imagine abrir várias filiais de um restaurante, em vez de apenas aumentar o espaço de um único local.

A escalabilidade horizontal é mais complexa do que a vertical. Um exemplo disso é o uso comum de uma camada extra, como um balanceador de carga (load balancer), que distribui as requisições entre várias máquinas para garantir que o sistema funcione de forma eficiente.

Fluxo de requisições com uso de load balancer

Armadilhas Ocultas

No entanto, para alcançá-la, é preciso evitar algumas armadilhas ocultas que decisões precipitadas podem gerar. Abaixo, cito alguns exemplos:


Persistência de Sessões

Decidir por persistir sessões no servidor, em vez de adotar um mecanismo de session storage distribuído (como o Azure Redis Cache, por exemplo), pode dificultar a escalabilidade horizontal, pois cada requisição precisaria manter o estado em um servidor específico, criando dependência e limitando a flexibilidade do sistema.


Escolha de Protocolo

Ao escolher protocolos, o FTP, sendo stateful (mantém o estado da conexão), pode dificultar a escalabilidade horizontal. Uma opção mais eficiente seria usar protocolos stateless, como HTTP ou HTTPS, junto com o Azure Storage Account. Usando Azure Blob Storage via HTTPS, você facilita a escalabilidade, permitindo acessos simultâneos sem a necessidade de manter conexões ativas, além de garantir mais segurança e desempenho.


Estratégia de Implantação

Decidir por atualizações "rolling" ou "blue-green deployment" minimiza o downtime e facilita a escalabilidade, enquanto atualizações manuais ou "big bang" podem afetar a disponibilidade e o crescimento.


Conclusão

Escalabilidade é o coração de qualquer sistema que busca crescimento sustentável. Entender suas nuances, como os tipos de escalabilidade e as armadilhas que podem surgir ao longo do caminho, é essencial para garantir que sua plataforma suporte o crescimento sem comprometer o desempenho e a disponibilidade. Seja escalando verticalmente ou horizontalmente, o mais importante é fazer escolhas conscientes e sempre pensar no futuro.

No final, escalabilidade não se resume a lidar com mais usuários, mas sim a garantir que sua plataforma permaneça eficiente e ágil, independentemente do crescimento.

Se você quer se aprofundar ainda mais em temas como este, siga-me nas redes sociais para acompanhar mais conteúdos sobre arquitetura de software, escalabilidade e tecnologia. E não se esqueça de se inscrever na newsletter para receber atualizações exclusivas e insights direto na sua caixa de entrada.