DEV Community

Eduardo Santana
Eduardo Santana

Posted on

1

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á!

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (4)

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á.

Collapse
 
rodolphonetto profile image
Rodolpho Netto

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

Collapse
 
ezambomsantana profile image
Eduardo Santana

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.

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs