quarta-feira, 25 de junho de 2008

Devo usar BPEL ou ESB?

A pergunta do título pode paracer estranha. Concordam? Mas, por incrível que pareça, muitos ainda se confrontam com essa dúvida em cenários onde os mesmos precisam implementar uma composição de serviços para atender a uma determinada situação.

Diante disto, eu decidi escrever neste post alguns aspectos que devem ser levados em consideração para sanar esta dúvida.

Bem, primeiramente nós sabemos e concordamos que ambos podem ser utilizados para a composição de serviços, inclusive podem ser utilizados em conjunto. Mas se eu tenho que decidi entre um e outro, qual devo usar?

Vamos então para alguns cenários:

1. Se o cenário alvo de implementação é focado apenas nos requisitos de conectividade, mensageria e roteamento, o ESB é a melhor opção. Entretanto, se o cenário é focado em atividades um pouco mais complexas tais como intervenções humanas (workflow) e orquestração para controlar como e quando os fluxos de dados vão sendo trocado entre sistema, o BPEL é a melhor opção.

2. Se o cenário é focado em processos de vida curta (short-lived) e baseado em armazenamento, transporte e simples transformação de mensagens, o ESB é a melhor opção. Porém, para processos de vida longa (long-lived) que podem ter que aguardar para se completar, além de necessidade de transformações de mensagens mais ricas e complexas, o BPEL volta a ser a melhor opção.

3. Se o cenário é direcionado para uma implementação de um processo cuja a natureza de virtualização (entede-se por transparência de localização) dos serviços seja necessária, fazendo com que o processo fique imutável caso ocorra alguma movimentação de serviços, o ESB é a melhor opção. Pois somente com BPEL, as URLs dos serviços estarão acopladas nos PartnerLinks do processo, e qualquer movimentação dos mesmos deve alterar o BPEL novamente. Assim, se nos cenário 1 e 2 o BPEL for a melhor opção e também se desejar a uma maior virtualização, utilize o BPEL para a composição de serviços com o ESB provendo essa virtualização.

Outro cenário que eu gostaria de descatar, que não recomendo a utilização BPEL, é para aquele onde o foco está em processos de migração de dados (e tem gente querendo ver o BPEL funcionando nestes processos), onde o volume de dados são muito grandes e uma boa performance é fundamental, eu sugiro a utilização de ferramentas especializadas tais como Oracle Data Integrator, Informatica Power Center, dentre outras, por garantirem estes requisitos além de fornecer melhor controle transacional, agendamentos, filtros, transformações específicas de um formato para outro, qualidade dos dados, dentre outros benefícios.

Porém, se mesmo assim você quer utilizar o BPEL, recomendo não buscar todos os dados a mesmos tempo e acionar o seu processo, sugiro você implementar um polling (listener service) que a medidas que os dados vão chegando ou vão sofrendo alguma alteração, os mesmo serão automaticamente migrados pelo processo. Além disso, sugiro compor o serviço de polling e o processo BPEL através do ESB.

Espero ter colaborado com alguma coisa. Qualquer dúvida ou sugestão estou a disposição.

Nenhum comentário: