Atualmente, com necessidades mais complexas e equipes numerosas, problemas e erros difíceis de resolver aparecem. É uma tendência natural que projetos se tornem obsoletos com o passar do tempo e, a dificuldade de mantê-los atualizados aumenta quando temos um número alto de dependências, fazendo com que a entropia do projeto cresça, afinal de contas é muito mais fácil adicionar uma biblioteca a um projeto, do que remover uma que está sendo usada em produção e em diversos lugares da aplicação.
É aqui que a arquitetura de software entra em cena, pois ela vê o software como ponto principal para que o produto consiga gerar o valor esperado, planejando um design de alto nível que será o alicerce, a estrutura sobre a qual o software será desenvolvido.
Fazendo uma analogia entre o desenvolvimento de software e a construção de um prédio, o arquiteto faz o desenho considerando suas necessidades estruturais e o uso que é previsto para ele, tanto em casos como intensidade. Então entrega aos engenheiros e técnicos que irão trabalhar na construção.
Isso é muito importante na engenharia de software, porque diferente de um prédio, o software segue sendo construído e modificado sempre, e não concluído em 1 ou alguns poucos anos. É muito comum que novos planos apareçam com mudanças no escopo, o mercado digital é muito mais rápido, não só pelas variações de oferta e demandas, mas também por evoluções de tecnologias usadas.
A arquitetura de software facilita o desenvolvimento de produtos mais robustos e sofisticados, criando diretrizes claras que permitem aos engenheiros saber a todo momento que tipo de código precisam construir para obter os resultados esperados.
Tendo uma visão ampla sobre a vida útil de um software, os arquitetos podem incluir já nos estágios iniciais estruturas chaves que se feitas quando o produto estiver em produção, demandam alto custo de implementação, darei um exemplo. É comum que startups de tecnologia se concentrem mais na funcionalidade e na entrega de resultados imediatos do que na arquitetura e no ciclo de vida de seus produtos.
Isso faz com que elas comecem a usar técnicas que não escalam bem e frameworks fáceis de usar ou que dependem muito de terceiros. Quando aparecem milhares ou milhões de usuários e os investidores exigem escalabilidade com estabilidade, as coisas se complicam.
Alterar a estrutura de uma aplicação que ninguém usa e uma mudança global que afeta milhões de usuários ao mesmo tempo são coisas completamente diferentes, assim como mudar de servidor algo em desenvolvimento ou em produção com uso intensivo, pois em casos de falhas, mudanças assim poderiam custar milhões em perdas. Certamente não é a mesma coisa alterar a linguagem de programação de um aplicativo quando apenas algumas pessoas trabalham nele, que realizar isso com centenas de colaboradores envolvidos.
É pra isso que existe a arquitetura de software, ela ajuda na tomada de decisões críticas a tempo de escolher quais riscos desejam ser assumidos e afetando para sempre o rumo do projeto.
📅 Publicação: 17/09/2022 por Guilherme Siquinelli
Top comments (0)