Pesquisar

sexta-feira, 30 de novembro de 2007

Da arte de integrar sistemas algo é certo... (um pouquinho de S.O.A.)

Integrar sistemas --> Pode ser entendido como a "arte" de interligar diversos sistemas que precisam de SERVIÇOS (não somente dados, além disso é necessário inteligência) dos demais. Essa interligação pode ser feita de diversas formas [implementadas] por exemplo:
Usando WebServices.
Usando RCP. (RMI, COM+ ...)
Usando Tabelas Corporativas.
Usando outros sistemas como "ponte". (sistemas para integração de aplicações)
...

Premissas
É dever do "artista" notar onde há (ou haverá) convergência ou necessidades dos vários sistemas se integrarem. Projetar aplicações já prevendo possíveis integrações é uma ótima e difícil tarefa.

Eis o problema.... (integração via Tabelas Corporativas)
Numa empresa Xyz (empresa de três letrinhas http://blog.fragmental.com.br/2007/06/07/3-letrinhas/) o parque de sistemas conta com aproximadamente 8 grandes sistemas.

Sistema 1 - Recursos Humanos (S1)
Sistema 2 - Capacitação dos Recursos Humanos (S2)
...

O S1 trata do domínio de recursos humanos da empresa, nele há uma tabela corporativa denominada rh_pf para manter informações das várias pessoas fisícas. O S2 no momento de analise percebeu que existiria um conceito de aluno que necessitaria de uma validação (+ que isso um pouco de inteligência) de dados contidos no S1, logo prevendo uma integração futura às aplicações os projetistas tiveram a idéia de usar a mesma tabela [rh_pf] para se resolver este "pequeno problema". (1º tiveram que entender o esquema rh_pf)
Com essa solução houveram outros problemas, quando alguém fosse gerenciar os alunos existentes teria que realizar uma consulta a rh_pf... e agora? voltam todos os registros? {informações sigilosas não podem ser mostradas} E quando fosse alterar, outro sistema iria ter o direito de alterar dados que não pertencem ao contexto do mesmo?!
E as "ligações obrigatórias" {leia-se constraints} contidas em rh_pf como ficariam?

E os projetistas...
Sugeriram outra solução, criar uma coluna na tabela rh_pf chamada sistema, onde poderia se "controlar" quem é dono desses dados, e para as "ligações obrigatórias" resolveram tirar tal integridade (nesse momento o S1 - RH é informado que deverá realizar a verificação da integridade na própria aplicação... mais mudanças...).

Conseqüências...
Dor de cabeça, tempo gasto com outros projetos....
Um ano se passa e outro sistema S3 é obrigado a integrar-se {suas regras de negócio possivelmente necessitam de serviços de outros sistemas}... E a bola de neve cresce...
A computação neste local começou a se tornar centralizada. Se houver um desejo de mudança da tabela rh_pf com certeza vários sistemas irão ter que ser modificados. {Acoplação Extrema entre Sistemas}

Um possível solução
Uma solução seria cada um [dos sistemas] disponibilizar seus serviços... e os demais sistemas aproveitarem esses serviços. Novos sistemas poderiam utilizar os serviços já existentes para desenvolvimento dos mesmos. {conceito próximo a arquitetura S.O.A.}

Conclusão
Algo que eu, particularmente, percebo e que integrar sistemas "via tabelas corporativas" não parece uma boa solução pois os diversos sistemas se tornam muito dependentes uns dos outros, se grandes sistemas [como o dos correios] em uso já descobriram que centralizar não é um bom negócio e que distribuir tem mostrado melhores resultados, pra que centralizar?. [Alias essa é a afirmação da qual deu o título ao post]

Nenhum comentário: