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 (4)
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 !
obrigado Arthur! Publiquei o segundo post hoje, confere lá.
To afim de ler este livro! ele fica bem diagramado no kindle? Geralmente livros que tem muitos diagramas/desenhos acabam sendo ruins de ler no kindle e livro fisico pra mim é ultima alternativa já que poder aumentar a fonte pra quem tem visão ruim é ótimo haha
opa Rodolpho, eu abri o livro no leitor web da Amazon e também no app do celular e ficou bom. Em um Kindle mesmo não cheguei a abrir, talvez perca um pouco da qualidade, mas deve ficar aceitável.