13 de October de 2008

Orquestração vs. Coreografia

Orquestração e coreografia são dois termos que causam muita confusão quando falamos de SOA, BPM e EAD. Já vi muitas pessoas usarem ambos os termos indiscriminadamente referindo-se a composição de serviços, ou seja, duas palavras tecnicamente diferentes utilizadas para dizer a mesma coisa. O grande agente desta confusão está na analogia que fazemos com a definição real das palavras. Segundo o dicionário Priberam as definições desses termos são:

  • Orquestração: “ato ou arte de orquestrar.
  • Coreografia: “arte de conceber e notar os passos e as figuras dos bailados; arte da dança.

É bem estranho quando levamos essas definições para o mundo de TI (SOA, BPM, EAD…). Aliás, a definição de Orquestração no dicionário não ajuda em nada. Será que os meus serviços dançam uns com os outros seguindo um ritmo com “passinhos” pré-determinados? :) Felizmente não é isso, então vamos explicar:

Orquestração

Em SOA/BPM orquestração é a composição de serviços para criar um novo serviço ou para resolver uma tarefa de um processo de negócio. Neste caso, sempre há a figura de um ponto central. Um serviço ou uma atividade de negócio que coordena a chamada de outros serviços para compor uma função de maior granularidade. A orquestração de serviços é análoga a um método da orientação a objetos que faz chamadas de outros métodos.

Coreografia

A coreografia já é pré-determinada antes da sua execução. Por exemplo, quando um serviço é acionado e envia uma mensagem, outros serviços podem estar programados de ante-mão para receber ou não essa mensagem e dispararem outras ações. Chamamos este processo de evento. Serviços são acionados conforme a classe de eventos que ocorrem. Característica básica da arquitetura orientada a eventos. Em um middleware é possível atribuir esta característica através da criação de fluxos Publish/Subscribe.

abraço,

- Fábio Rosato

Responses

Muito Legal o Post.

Coreografia é uma coleção de relacionamentos ponto a ponto sem um centralizador, por isso é interessante usar uma indireção ( Publish/Subscribe).

Para contribuir: WS-CDL é um exemplo de linguagem que pode ser usada para Coreografia e WS-BPEL é uma linguagem de orquestração.

[], Gustavo

Fala Gustavo!!!

Obrigado por contribuir com os padrões técnicos que implementam esses conceitos.

[]’s
Fábio

Fábio,
e em relação à ferramentas? Existe alguma distinção ou especialização de ferramentas para os dois conceitos?

[]s
Marcílio

Marcílio,

Em termos de ferramentas para esses conceitos podemos eleger:

Coreografia

PI4SOA http://sourceforge.net/projects/pi4soa

Orquestração

Qualquer middleware de serviços faz isso, tais como: IBM Webphere Message Broker, Mule, JBoss ESB e etc.

Fábio,

Sabemos que SOA é arquitetura e não tecnologia, mas se necessário e usarmos adequadamente a TI para apoiar na solução poderemos ter ganhos. E quando falamos de orquestração uma das principais tecnologias que prega isso é o BPEL, porem acho o BPEL uma linguagem pouco madura e diria que dependendo do grau aplicado se tornaria bem complexo o seu uso.

Qual seu ponto de vista com relação do uso do BPEL para orquestrar serviço? O que acha que irá acontecer com BPEL no futuro (melhora ou morre)? Como o mercado vê o BPEL? Quantos casos de sucesso utilizando BPEL você conhece?

Para fazer uma escolha em orquestrar o serviço com BPEL ou ESB, seria cabível fazer uma analise para ver qual dos dois se comportam melhor, ou simplesmente qualquer um dos dois vai orquestrar meus serviços?
Além de BPEL e ESB, existe outra forma de orquestrar serviço?
Se eu mapear um processo de integração utilizando BPM, e esse processo for executado (independente de como é feito à execução, utilizando BPEL ou não), pode dizer que meu processo está orquestrando serviços?

Vlw

[]s

Raoni

Olá Raoni,

O BPEL apesar de ter lá os seus 6 ou 7 anos realmente ainda foi pouco exercitado. O problema está justamente no contexto ao qual ele é aplicado hoje, ou seja, são poucos se comparado ao parque tecnológico que temos. Normalmente são cenários de muitas aplicações em diversas plataformas que integram-se entre si. A complexidade agregada pelo BPEL compensa o seu uso em alguns casos. E além disso, você precisa ter pessoas dispostas a inovar.

Os fornecedores de soluções de software nos inundaram com uma enxurrada de soluções para lidarmos com a complexidade da TI. Muitas soluções para pouca capacidade de absorção rápida. Tudo isso está dificultando muito a maturação de alguns padrões, que é o caso do BPEL.

Acredito que o caminho seja o da orquestração de serviços em processos de negócio, não exclusivamente com BPEL. BPEL interage perfeitamente com WebServices e nem todos os serviços precisam ou são WebServices em uma empresa.

O padrão evolui, então, a maturidade que almejamos será alcançada. Inevitavelmente outras padrões irão surgir, padrões complementares, outras propostas e etc. Mas o que pesa são os players que estão por trás do BPEL como SAP, IBM, Oracle. Muita grana foi investida no BPEL para tudo ser jogado fora de uma hora prá outra. Então, tem muita gente interessada para que tudo isso funcione.

A orquestração de serviços pode ser realizada em qualquer camada de abstração que a sua solução possua, seja no nivel da aplicação, seja no ESB ou no seu processo de negócio. E a orquestração independe da tecnologia que você está utilizando.

Para terminar, particularmente não conheço nenhum caso de sucesso com o uso de BPEL e nem de insucesso.

[]’s
Fábio

Fábio, obrigado!!

Poooottz… o.O

Bacana!! :D

Esclareceu algumas dúvidas e curiosidades.

Abração!

Muito legal,

Me ajudou a entender de uma maneira mais simples.

Abraços

Fazendo uma alusão entre a musica e a TI, pode-se dizer Orquestracao é quando o maestro COORDENA todos os musicos a tocarem numa mesma sintonia e ritmo, enquanto em TI temos uma orquestra onde os componentes tem que manter uma sintonia tambem.

Na Coreografia, assim como os bailarinos, os componentes devem seguir a sequencia de passos determinadas e ja pre-ensaidas exaustivamente(testes) dentro do fluxo da arquitetura.

Leave a response

Your response: