DEV Community

Cover image for O que é Arquitetura de Software e por que ela importa
Paulo Walraven
Paulo Walraven

Posted on

O que é Arquitetura de Software e por que ela importa

Antes de falar sobre monolitos modulares, microsserviços ou qualquer outro estilo arquitetural, precisamos responder uma pergunta mais fundamental: o que é arquitetura de software e por que deveríamos nos importar com isso?

Se você já participou de uma reunião técnica onde alguém desenhou caixas e setas num quadro branco, você viu arquitetura de software em ação. Mas o conceito vai muito além de diagramas.

Uma definição simples

Arquitetura de software é a organização fundamental de um sistema — os componentes que o compõem e como eles se relacionam entre si.

Pense assim: assim como um arquiteto elabora o projeto de um edifício antes de qualquer tijolo ser assentado, um arquiteto de software define a estrutura de um sistema antes (e durante) o desenvolvimento. Esse projeto vai guiar centenas de decisões ao longo da vida do projeto.

Comparação lado a lado entre a planta baixa de um edifício e um diagrama de componentes de software, ilustrando que ambos seguem a mesma lógica de organização estrutural

Por que isso importa na prática

A escolha arquitetural de hoje é a dívida técnica (ou o dividendo técnico) de amanhã. Ela impacta diretamente:

  • Custo — algumas arquiteturas são muito mais caras de construir e operar
  • Desempenho — a estrutura do sistema define seus gargalos
  • Escalabilidade — crescer 10x é fácil em alguns modelos, impossível em outros
  • Manutenibilidade — o quanto é difícil mudar algo sem quebrar outra coisa
  • Velocidade de entrega — times maiores podem trabalhar em paralelo ou ficam se atrapalhando?

Nenhum desses fatores é isolado. Quando você otimiza para um, geralmente está fazendo uma concessão em outro. E é exatamente aí que entra o conceito mais importante da arquitetura de software.

A decisão mais ignorada no desenvolvimento de software

Na maioria dos projetos, a arquitetura não é uma decisão explícita. É o resultado acidental de centenas de pequenas decisões tomadas sem um plano maior.

Um time começa com um projeto simples. As features crescem. O prazo aperta. Atalhos são tomados. Cinco anos depois, você tem um sistema que ninguém quer tocar porque qualquer mudança pode quebrar algo em outro lugar completamente inesperado.

Esse padrão tem até nome: big ball of mud. E é mais comum do que qualquer um gostaria de admitir.

Visualização do Big Ball of Mud: uma esfera de fios entrelaçados com módulos como Users, Orders, Products e Payments todos conectados de forma caótica entre si, sem nenhuma estrutura ou hierarquia clara

Estilos arquiteturais: a caixa de ferramentas

A boa notícia é que você não precisa inventar a roda. Ao longo de décadas, a indústria consolidou alguns estilos arquiteturais que representam abordagens bem entendidas para organizar sistemas de software:

  • Monolito padrão — toda a aplicação em um único código deployado junto
  • Microsserviços — a aplicação dividida em muitos serviços independentes
  • Monolito modular — uma base de código única, mas organizada em módulos com fronteiras bem definidas

Cada um tem suas vantagens, seus custos e os contextos nos quais faz mais sentido. Não existe "o melhor" em abstrato — existe o mais adequado para o seu problema específico.

Diagrama comparativo dos três estilos arquiteturais em colunas: Monolito Padrão representado como um único bloco sólido, Microsserviços como vários blocos pequenos separados conectados por linhas, e Monolito Modular como um bloco grande com divisórias internas bem definidas

Top comments (0)