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).

2 Responses to “Promover serviços legados ou organizar a casa?”
Olá, seu post é bastante enriquecedor!
Estou vivenciando um cenário na minha empresa de análise do que deve ser reutilizado ou não.
Gostaria de saber sua opinião acerca dessas dúvidas:
- O que é necessário para fornecer agilidade, flexibilidade e o reuso estratégico do legado na organização?
- O que é necessário para oferecer mais eficiência e agilidade na disponibilização de soluções de software, com baixo custo no desenvolvimento?
- A agilidade e flexibilidade apregoada por SOA melhoram o relacionamento e promovem melhor alinhamento entre negócios e TI?
Abraço!
By Suzanny Lavor on May 26, 2009
Oi Suzanny, obrigado pelo comentário.
Pensar no que pode ser aprimorado, substituído ou descartado envolve questões muito variadas, cada empresa possui uma realidade. De qualquer forma, é preciso sempre considerar os processos de negócio (visão do todo) e proporcionar o alinhamento com a TI, neste âmbito que SOA contribui. SOA fornece abstrações modulares que ajudam na organização e no alinhamento com o negócio proporcionando agilidade.
Os serviços SOA - abstrações aderentes aos conceitos do negócio - possibilitam que a evolução do código e o entendimento dos conceitos relativos ao negócio caminhem no mesmo sentido, ou seja, o código só sofre mudanças em grandes proporções se o negócio também mudar significativamente. SOA Cria uma “topologia” corporativa aderente ao negócio. Se o negócio mudar pouco, seus sistemas deveriam mudar proporcionalmente, não de forma imprevisível.
Os serviços também funcionam como um vocabulário comum entre a TI e o negócio, facilitando a comunicação. Com a abordagem, você pode relacionar seus serviços com os processos principais da empresa (que geram valor para os clientes) e com as metas estratégicas, justificando, por exemplo, investimentos.
Para obter esses benefícios, os processos de negócio devem ser analisados. Mesmo quando a decisão for manter o legado, os serviços SOA (aderentes ao negócio) podem contribuir muito para organizar e aprimorar o legado. Portanto, uma consultoria especializada em SOA, não em integrações, é essencial para lidar com o legado.
[]´s Gustavo
By Gustavo S. Sinis on Jun 2, 2009