Como escalar o seu código

Como escalar o seu código

Você já trabalhou a escalabilidade do seu projeto? Esse é um ponto de extrema importância para ter uma grande aplicação no mercado. Vamos te explicar o que é escalabilidade, e como você pode trabalhar com este conceito no seu sistema.

O que é escalabilidade?

Sua aplicação consegue se adaptar conforme a demanda, quantidade de acesso, volume de dados que recebe? Pois isso que é escalabilidade.

Durante o desenvolvimento, pouco nos preocupamos com escalabilidade, afinal, no seu computador o código está rodando bem, estável, sem travamentos e tudo parece funcionar muito bem. Isso pode até funcionar quando estiver em produção, com 10 ou 100 pessoas acessando sua aplicação, mas de acordo com a evolução do seu produto e o crescimento de volume isso pode mudar bastante.

É sempre importante que seu projeto consiga suportar a um grande trafego de usuários na sua aplicação ou a uma operação complexa que exija mais do sistema, sem prejudicar o desempenho da aplicação ou até mesmo causar uma queda no serviço.

Como escalar uma aplicação?

Imagine o seu próprio computador, com várias abas do Chrome abertas. O seu PC vai ficar extremamente lento, isso se não causar uma tela azul, certo? O que você faz nessa situação? Fecha abas desnecessárias que você não está usando, ou até mesmo, trocar para um navegador que performa melhor. Podemos aplicar este mesmo exemplo na sua aplicação: se está lento demais, melhore os processos do seu sistema, optimize o seu código e use tecnologias mais leves e rápidas para sua aplicação.

Mas você é um usuário que precisa mesmo de várias abas abertas no Chrome. Qual a solução? Aumentar a memória do seu computador. Isso também é válido para desenvolvimento de software, e se chama escalabilidade vertical. Você pode melhorar sua aplicação com um servidor mais potente, que consiga processar melhor o seu código e que consiga lidar com uma demanda maior.

Ainda assim, existe um limite certo? Não importa o quanto você melhore seus processos, ou tenha um servidor poderoso, se o trafego da sua aplicação ainda for alto você pode sofrer com os mesmos problemas de instabilidade e performance. Bom, nesta solução, você não conseguiria aplicar para resolver suas abas do Chrome, mas existe algo bem interessante em desenvolvimento de software chamado de escalabilidade horizontal: se um computador, por melhor que seja, está sofrendo com o número de demandas, que tal usar 2, 3 ou 10 computadores e distribuir essa carga? Com tecnologias em nuvem, isso não só é extremamente possível como é bastante popular.

O que grandes apps fazem?

Na prática, as grandes aplicações já usam e já são desenvolvidas pensando escalabilidade e por padrão já usam algumas técnicas e soluções bastante comuns para resolverem seus problemas:

  • Uma arquitetura distribuída em microserviços, em que diversas aplicações dividem suas responsabilidades de forma independente, equilibrando os processos, conforme a demanda de cada específico serviço.

  • Uso de cache em diversas pontas da aplicação. Porque reprocessar os dados, se já sabemos que o resultado será o mesmo de alguns minutos atrás? Utilizar o cache em situações como essa diminui bastante o processamento de seu servidor, diminuindo o custo, e abrindo mais espaço para um tráfego maior.

  • Dimensionamento de servidores de forma horizontal, acrescentando máquinas e instâncias e balanceando o trafego em diferentes serviços para equilibrar as demandas e processamento do sistema.

  • Infraestrutura voltada a nuvem, como AWS, Google Cloud ou Azure que já trazem serviços de escalonamento automático, de acordo com a demanda recebida na aplicação.

  • Implementação de técnicas de observabilidade e monitoramento para justamente saber onde, e o que melhorar no seu sistema.

Essas são algumas das soluções mais comuns aplicadas em grandes apps. Assim como o próprio conceito de escalabilidade, que preza pela adaptação, as estratégias de escalabilidade devem também ser adaptadas segundo a necessidade do seu sistema.

Com estes conceitos, esteja sempre atento, e já construa sua aplicação pensando na escalabilidade do seu projeto. Um bom código é aquele que sempre funciona, não importa a quantidade de pessoas acessando, não importa a complexidade do processo, não importa o trafego de dados. E se você quer ter um bom código e principalmente um bom produto, escalabilidade é fundamental.