Simples assim, integração entre sistemas é um Inferno, é uma fonte enorme e interminavel de dor de cabeça. Hoje existe tecnologia disponivel para facilitar isso, mas parecer que a maioria ainda pensa nissa da pior forma possivel. Vamos lá, vou ser um pouco assertivo para deixar uma coisa bem clara:
Compartilhar dados é estupido, exponha o comportamento do seu sistema.
Isso mesmo, avisar os desenvolvedores da outra equipe para eles usarem alguns selects que sua equipe definiu para fazer a integração é uma idéia horrivel. Os dados são a parte menos expressiva e ao mesmo tempo a mais sensivel do sistema.
Todo sistema depois que cresce além do trivial embute muito valor semântico aos dados que existem no banco, se você integrar nesse nível todos vão precisar saber isso ao risco de fazer ou ver a coisa errada. Ainda para piorar, essa técnica vira uma barreira à evolução, você não pode alterar o schema e continuar com suas alterações até que todos sistemas relacionados sejam também atualizados. Moral da história, integração feita no banco de dados é como se em um casamento os noivos trocassem pedaços de víceras em vez de alianças.
Tudo bem, já disse que é ruim, mas como fazer isso então? Crie uma série de serviços que expoam a funcionalidade pública do seu sistema e deixe o resto por conta da criatividade das outras equipes, elas vão agradecer. Isso normalmente significa lançar mão de usar EJB, CORBA, RMI e, principalmente, Web Services. Esse uso de Web Services é o que eu classifico por SOA pragmático, aquele que existe por algum propósito justo, existe para avisar e mostrar ao mundo as coisas que seu sistema pode fazer, como ele se comporta.
As vezes é meio chocante ver que com todo esse marketing feito por todos vendedores empurrando SOA não teve o menor impacto positivo. A parte que sofre mais parece ser a que menos adota esse tipo de tecnologia. Mas enfim, espero que esse post tenha servido pelo menos para avisar do desastre anunciado que é compartilhar as entranhas do seu sistema com os demais.
5 responses so far ↓
1 Phillip Calçado "Shoes" // Jul 12, 2006 at 10:59 am
Engraçado que o que eu tenho visto acotnecer é um ssitema novo ser cosntruído e ter como requisito se integrar via views, até com os mainframes. Aí alguém com algo na cabeça resolve encapsular isso em um componente interno ao sistema, teoricamente para uso interno.
Após algum tempo, os clientes exigem que este componente se torne público para ser acessado por outras aplicações. Se o SOA pragmático é construir pensando nisso, este seria o “SOA gambiarra” ou, se você for escrever um livro sobre o assunto, o “SOA orgânico” (sempre use a palavra ‘orgânico’, ela parece querer dizer muita coisa).
2 kumpera // Jul 13, 2006 at 9:11 am
Uma equipe que tem essa consiência, de hoje que SOA é inevistavel – e não era no teu exemplo Phillip? Vão saber que tem que desenvolver um sistema já preparado para receber essa modificação.
Eu vejo isso no meu dia-a-dia, depois que a coceira do SOA começa em uma empresa, fica difcil escapar, fica dificil de dizer não a novos serviços.
3 Adriano [Próspero] // May 21, 2008 at 6:06 pm
Muito interessante o seu pensamento, está me ajudando a seguir com alguns estudos… Só tenho uma sugestão para a frase que você colocou em negrito, pra ficar mais clara: “Compartilhar dados é estupido, exponha o comportamento do seu sistema.”. Poderia ser “Compartilhar a camada de dados…”, ou “compartilhar o banco de dados…”, se não fica um pouco confuso no começo, fica parecendo que você não aprova o compartilhamento de informações…
Abraços!
4 kumpera // May 21, 2008 at 6:21 pm
Adriano, meu ponto é exatamente esse! Compartilhar diretamente dados e informações é extremamente nocivo.
Sistemas devem compartilhar comportamento, nada além disso. Claro que parte disso envolve trocar informação, mas deve sempre ser feita através de uma camada com comportamento.
Porém eu concordo contigo que a frase ficaria melhor se eu deixasse claro que o problema é a forma como é feito e não o compartilhamento em si.
5 Lapuinka // May 27, 2009 at 9:48 pm
Gostei do seu BLOG, vc é como eu que na prática sofre alguma experiencia e depois vem aqui reportar.
Posso adicionar eu LOG no meu SITE, assim podemos troca idéias?
Leave a Comment