segunda-feira, 30 de novembro de 2009

Baixo Acoplamento (Loose Coupling) de Serviços

A falta de dependência entre os serviços (consumer e provider) é muito importante para um projeto de arquitetura SOA, por isso é muito importe que os serviços tenham um baixo acoplamento (Loose Coupling).

O baixo acoplamento é divido em 5 dimensões, conforme a seguir:



  • Localização: Consumidores (service consumers) não devem ser dependentes da localização do serviço.  Por isso os serviços, para um máximo desacoplamento na dimensão da localização devem ser expostos em um ESB.
  • Plataforma: Consumidores e Provedores (services consumers e providers) devem ser independentes de plataforma, por isso o uso de padrões aberto é importantíssimo nesta dimensão, fazendo com que plataformas diferentes como J2EE e .NET conversem uma com a outra sem saberem que estas estão interagindo com outra plataforma. 
  • Linguagem: Nesta dimensão a preocupação é a mesma da dimensão plataforma. Por exemplo, o uso de Java object streams serializados pode ser altamente eficaz para certos consumidores e provedores, mas pode limitar o reuso porque algum ponto da arquitetura SOA evoluiu. O uso de formatos e protocolos abertos dentro da linguagem de programação é a melhor maneira de evitar o acoplamento. 
  • Formato: Formatos proprietários ou feitos sob medida são utilizados por enumeras razões, mas introduzem uma dependência muito grande que se transforma em um obstáculo muito grande para uma arquitetura SOA flexível. Os formatos abertos, como SOAP, XML, etc. trazem o desacoplamento necessário para esta dimensão, por isso são altamente recomendados. Nem sempre é possível utilizar padrões de formatos abertos. Neste caso a utilização de um ESB expondo um formato proprietário como um formato aberto traz o desacoplamento necessário nesta dimensão. 
  • Protocolo: Assim como os formatos, vários protocolos proprietários são utilizados. A solução para este dimensão dentro de uma arquitetura SOA é exatamente a mesma da dimensão formato, ou seja, a utilização de protocolos abertos, como SOAP over HTTP.

Nenhum comentário: