Promover serviços legados ou organizar a casa?
May 26, 2009 – 3:36 pm by Gustavo S. SinisCom freqüência, vejo o seguinte ponto preocupante em eventos relacionados com SOA: promover a reutilização de todo o legado. Atualmente, com ferramentas de integração e bons repositórios, ficou relativamente fácil sair reutilizando o legado. No entanto, isso deveria ser feito seguindo alguns princípios SOA. Promover a reutilização do legado sem considerar esses princípios, promove a complexidade de forma proporcional (30 anos de silos e espaguete não somem por mágica).
Muitas empresas sem uma abordagem SOA possuem iniciativas de reuso e integração, promovidas por talentos individuais. Funcionando em um delicado equilíbrio, em que os desenvolvedores reusam seus próprios serviços ou os de uma pessoa de sua confiança, ignorando todos os outros possíveis serviços existentes (internos ou externos).
Nesse cenário de reuso limitado, empresas complexas com integrações espaguete e redundância de regras de negócio conseguem sobreviver - pois existe um nível de controle até certo ponto gerenciável -, mas abrindo mão da agilidade (uma alteração do negócio pode demandar um esforço imprevisível).
Por outro lado, promover o reuso indiscriminadamente usando ferramentais atuais sem observar alguns princípios SOA, esse equilíbrio pode ficar comprometido. O que inicialmente pode parecer um ganho, com o efeito acumulativo, deixará muito mais complexo o cenário.
Para exemplificar, vamos imaginar um serviço legado de lançamentos contábeis que não encapsula todas as regras de negócio necessárias para efetuar o lançamento (não segue princípios SOA). Desta forma, todos os clientes deste serviço serão obrigados a implementar algumas regras antes de usar. Neste exemplo o serviço vai, no mínimo, promover a redundância de regas de negócio e acoplamento exagerado para seus clientes.
Multiplique isso por 40 serviços e 200 sistemas, depois tente alterar um processo ou regra de negócio com agilidade… Se o negócio mudar, simplesmente será imprevisível o impacto em seus sistemas. Outro exemplo, se for comprado um pacote de mercado para o backoffice (por exemplo, contabilidade), todos os sistemas que automatizam o processo de negócio principal (que gera dinheiro) será alterado significativamente.
Em outras palavras, o reuso e a integração limitada (atualmente um cenário comum) também limita a propagação dos problemas gerados por serviços que não seguem certos princípios SOA – portanto não é interessante sair reutilizando. Mas como obter agilidade e lidar com o legado?
Não existem respostas fáceis, cada cenário é único. No entanto, para evitar esse problema e muitos outros, o serviço poderia ser encapsulado ou alterado para que atenda alguns princípios SOA, possibilitando que seja reutilizado por todos sem aumentar a complexidade e redundância das regras.
SOA deve simplificar a TI para obter agilidade, usando abstrações obtidas com a análise do negócio, o serviço. SOA não é necessariamente integração e reuso, mas lida diretamente com as limitações humanas, por exemplo, pouca memória e manter cenários complexos, usando abstrações. Abstração está intimamente relacionado com encapsulamento. Portanto, encapsular o legado com serviços bem projetados é essencial.
Atualização:
Encapsular legado significa: encontrar conceitos importantes no legado e criar serviços que encapsulem as regras destes conceitos. Não é apenas criar uma camada de serviços, também envolve, em alguns casos, alterações no legado (mudar regras de lugar, por exemplo: todas as regras de negócio coesas com o serviço - identificado analisando o negócio do legado - que estão em outras aplicações, devem ser retiradas e encapsuladas pelo serviço).
