DEV Community

Eduardo Santana
Eduardo Santana

Posted on

Caixa de ferramentas da Arquitetura de Software [Parte-1]

Vou escrever uma série de publicações para descrever um pouco mais profundamente o conteúdo do meu livro "Caixa de ferramentas da Arquitetura de Software: Como tornar suas aplicações mais escaláveis, confiáveis e seguras" publicado pela Casa do Código no dia 19/03/2024.

Neste texto vou dar uma visão geral das duas primeiras partes do livro. O livro é dividido em 5 partes, a primeira parte é uma introdução a arquitetura de software, nela descrevo algumas visões sobre o que é arquitetura de software e mostro algumas das organizações mais comuns que são usadas para o desenvolvimento de software.

Depois, na segunda, terceira e quarta parte entro em cada um dos requisitos destacados no subtítulo do livro, que são Escalabilidade, Confiabilidade e Segurança. Esse requisitos são fortemente influenciados pela arquitetura de uma aplicação, e existem diversas ferramentas que podem ser utilizadas para atingir os objetivos da aplicação.

Na segunda parte eu foco em três requisitos importantes:

  • Desempenho: Relacionado principalmente ao tempo de resposta da aplicação. Normalmente, esse tempo deve ser o menor possível, mas no mínimo ele deve atender as expectativas do usuário. Por exemplo, uma rota REST síncrona deve responder em alguns poucos segundos, se o tempo for muito maior que isso, será necessário pensar em alternativas para implementar essa rota, como por exemplo implementar uma rota assíncrona, que irá avisar o usuário quando o processamento está completo.
  • Escalabilidade: Uma aplicação pode funcionar bem com poucos usuário, mas e se a carga aumentar, ela continua funcionando bem? Se sim, a aplicação é escalável, isso tem bastante relação com desempenho, normalmente algoritmos e aplicações eficientes são escaláveis, mas existem técnicas que podem aumentar a escalabilidade até de aplicações que podem ter desempenhos não tão bons, como cache e balanceamento de carga.
  • Elasticidade: Muitas vezes é necessário usar uma grande infraestrutura para garantir a escalabilidade de uma aplicação. Porém, se a carga da aplicação varia muito, manter toda essa infraestrutura ligada o tempo todo pode desperdiçar muitos recursos. Imagine uma aplicação de entrega de comida, ela tem picos muito bem definidos nos horários do almoço e jantar, nessa hora a infraestrutura tem que estar toda funcionando, mas durante a madrugada, é possível atender toda a demanda com muito menos recursos. Isso pode diminuir drasticamente o custo para a execução da sua aplicação.

Esses três requisitos são extremamente importantes para manter a satisfação dos usuários da aplicação, mas sem que os custos explodam. Por exemplo, pode ser fácil garantir desempenho e a escalabilidade de uma aplicação, basta executa-la em uma máquina com uma quantidade grade de recursos (memória, cpu, disco, rede, ...) ou em um cluster com uma grande quantidade de VMs.

Porém, o custo disso pode ser muito alto. Por isso é extremamente importante conhecer técnicas que podem aumentar a capacidade de uma aplicação antes de simplesmente aumentar a quantidade de recursos utilizados para executar a aplicação.

No próximo post vou falar mais sobre a terceira parte do livro que foca na confiabilidade das aplicações. Até lá!

Top comments (2)

Collapse
 
arthurrio profile image
Arthur Rio

Boa Eduardo! Quando recebi o e-mail da casa do codigo com a capa e titulo, logo me animei para comprar! Parece ter um excelente conteudo, estou esperando so ter mais tempo para comecar a ler, foi um excelente trabalho com o livro, parabens!

Espero pelos proximos posts !

Collapse
 
ezambomsantana profile image
Eduardo Santana

obrigado Arthur! Publiquei o segundo post hoje, confere lá.