Bons arquitetos garantem que as melhores práticas de arquitetura sejam adotadas durante o desenvolvimento de um software. Isso implica na elaboração, revisão e estruturação cuidadosa de componentes, seus relacionamentos e responsabilidades, garantindo que objetivos de negócio sejam atingidos, as restrições respeitadas e os atributos de qualidade atendidos, minimizando o custo e o risco.
Manual do Arquiteto de Software
Especialista é aquele que sabe cada vez mais, sobre cada vez menos.
Cabe ao arquiteto, então, envolver os especialistas no momento certo. Também, cabe a ele recorrer a práticas consolidadas com eficácia demonstrada. Isso envolve a adoção de padrões e estilos arquiteturais.
Por que estilos e padrões são importantes
Toda escolha implica em uma renúncia. Maximizar a entrega de valor, com o menor custo e risco, muitas vezes implica na resolução de trade-offs.
Não há uma fórmula pronta ou “bala de prata” em arquitetura de software. Todo projeto que vale a pena apresenta desafios únicos que demandam escolhas. Entretanto, cada decisão seja “virtualmente” única, afinal nenhum software é igual ao outro, há similaridades entre problemas que permitem, para aqueles com conhecimento ou experiência, maior eficiência na busca de soluções.
O conjunto de padrões e estilos arquiteturais compreende o “repertório” de um arquiteto. Quanto maior esse repertório, mais valor em sua aplicação.
Estilos arquiteturais
Estilos são abstrações que descrevem como os componentes de um software devem ser organizados.
Um software que utiliza o estilo client-server, define alguns componentes: cliente, servidores e o protocolo que faz comunicação entre eles. Podemos implementar este estilo com diferentes clientes, diferentes protocolos ou até mesmo com múltiplos servidores, mas ainda estamos falando do estilo client-server.
Microsserviços, outro estilo arquitetural, estabelece um alto grau de desacoplamento através de componentes delimitados por um contexto de negócio. Novamente um software pode utilizar este estilo com diferentes protocolos de rede para comunicação entre seus componentes.
Padrões arquiteturais
Diferenciar estilo arquitetural e padrão arquitetural pode ser confuso, levando arquitetos a considerarem conceitos iguais. Padrão arquitetural é uma forma de resolver problemas específicos e frequentes dentro um estilo arquitetural. Enquanto que estilo arquitetural define, de forma macro, a “organização” de uma sistema, sem levar em consideração um “problema” específico.
Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice
|
Uma aplicação com o estilo arquitetural baseado em serviços, pode implementar diversos padrões arquitetônicos para resolver problemas específicos. O padrão arquitetural Gateway pode ser utilizado para reduzir acoplamento aferente de serviços expostos via APIs internas. Dentro do mesmo sistema podemos adotar o padrão de caching para resolver problemas de desempenho em um serviço.
Uma vez identificada a necessidade em adotar um padrão, o próximo passo é planejar como aplicá-lo dentro do seu contexto. Adotar um padrão “às cegas” é receita para falha. Podemos ter o mesmo padrão implementado de diversas formas, inclusive levando a implementação de outro padrão arquitetural para atender o contexto.
Concluindo
Sabemos que padrões e estilos, então, constituem o repertório do arquiteto. Dedicaremos os próximos capítulos apresentando em profundidade alguns deles. Faremos isso, com exemplos reais, baseados em nossa experiência ajudando empresas de todos os segmentos.
Importante não esquecer: no “fim do dia” queremos software que atende os objetivos do negócio, respeitando restrições e atingindo atributos de qualidade. Esse é um grande desafio que não pode ser “enfrentado” apenas com boa vontade. Conhecimento sólido vai te ajudar a fazer a diferença!