Arquitetura de Composição e seus diferentes desafios
Olá pessoal, tudo certo?
Sempre falamos aqui no blog sobre Aplicações de Composição e seus desafios. Porém, a composição pode acontecer de fato em diferentes níveis. Quando pensamos em arquitetura de composição, podemos compor nas camadas de apresentação, interfaces de serviços, regras de negócio e mesmo fontes de dados diversos.
A figura a seguir ilustra essas alternativas:
Para cada nível de composição podemos aplicar diferentes patterns de arquitetura, como Delegation, Event Aggregation, Command Composition, Aggregation, IoC – Inverse of Control, Observer pattern, Publish/subscribe, Dependency injection, Façade, Separated Presentation, Separated Interface, Adapter, Composite Views, entre os principais.
Por isso, quando estiver pensando em uma arquitetura de composição, é interessante avaliar essas opções: vamos compor chamadas de serviços ou webparts numa interface Web? Vamos compor regras de negócio e processos ou bases de dados relacional em nossa aplicação? E para cenários corporativos, vamos compor diferentes domínios de serviços através de barramentos?
Algumas semanas atrás, o Otávio fez um Webcast apresentando o MEF - Microsoft Extensibility Framework – através do qual podemos também compor interfaces de um modo bem interessante.
Mais recentemente, tivemos uma crescente discussão sobre serviços na nuvem, onde uma infraestrutura de cloud pode hospedar novos grupos de serviços, que serão componentes em nossa arquitetura. Algo como vemos na figura abaixo:
Muito bem! A pergunta seguinte será: qual o melhor nível de composição? Devo compor na interface de apresentação ou na interface de serviços? Devo compor serviços locais com serviços na nuvem? Quais serviços deverão estar na nuvem e quais deverão ser hospedados em infraestrutura local? Em bancos de dados, é interessante compor diferentes fontes para minha aplicação?
Aqui entra o papel importante do arquiteto de soluções, que deverá avaliar cada caso, de acordo com o cenário de negócio envolvido. De fato, não existe uma resposta única e correta para todos os cenários. É equivocado dizer que precisamos combinar, por exemplo, 50% na infraestrutura local e 50% na nuvem. Tudo irá depender dos serviços envolvidos, do tipo de usuário, do negócio de sua aplicação, da infraestrutura local e da maturidade de sua empresa.
E já que citei “maturidade”, quais são os processos e mecanismos de TI que você aplica na operação de sua empresa? Sua TI contempla monitoração, logging, tratamento de exceção, administração de serviços, governança, etc.? Sem processos de TI maduros, qualquer direção para uma arquitetura de composição pode sofrer com uma maior complexidade e distribuição de componentes, em todos os nível.
Por isso, fique atento e não deixe de conversar com o seu time de infraestrutura para entender sobre as capacidades de plataforma existentes em sua empresa. O arquiteto de infraestrutura deve ser o melhor amigo do arquiteto de solução! :) Talvez no futuro, sejam até a mesma pessoa…ou não? :)
Por enquanto é só! Até o próximo post :)
Waldemir.