13 de Outubro 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.

Leave a response

Your response: