Orquestração vs. Coreografia


Respostas:


334

Tecnologias básicas como (XML, SOAP, WSDL) fornecem meios para descrever, localizar e chamar serviços como uma entidade por si só. No entanto, essas tecnologias não fornecem um rico detalhe comportamental sobre o papel do serviço em uma colaboração mais complexa. Essa colaboração inclui uma sequência de atividades e relacionamentos entre atividades, que constroem o processo de negócios. Existem duas maneiras de construir esse processo: orquestração de serviços e coreografia de serviços.

Orquestração de serviço

A orquestração de serviço representa um único processo de negócios executável centralizado (o orquestrador) que coordena a interação entre diferentes serviços. O orquestrador é responsável por invocar e combinar os serviços.

O relacionamento entre todos os serviços participantes é descrito por um único terminal (ou seja, o serviço composto). A orquestração inclui o gerenciamento de transações entre serviços individuais. A orquestração emprega uma abordagem centralizada para a composição do serviço.

Orquestração

Coreografia de Serviço

Coreografia de serviço é uma descrição global dos serviços participantes, definida pela troca de mensagens, regras de interação e acordos entre dois ou mais pontos de extremidade. A coreografia emprega uma abordagem descentralizada para a composição do serviço.

Coreografia

A coreografia descreve as interações entre vários serviços, onde a orquestração representa o controle da perspectiva de uma parte. Isso significa que uma coreografia difere de uma orquestração com relação a onde a lógica que controla as interações entre os serviços envolvidos deve residir.


7
Imagens fantásticas para mostrar os dois! Onde você os conseguiu?
David Mann

6
@DavidMann Muito obrigado pelo seu comentário, e por favor vote se achar que foi útil para você. Fiz esses diagramas no Visio e, como inspiração, usei alguma literatura na composição de serviços. No entanto, percebi que essa resposta existia 2 anos atrás, quando comecei a ler sobre a composição do serviço. Vou atualizar esta resposta com referências e expandir as propriedades de ambos
Andrei

@ Andrei: Não poderia ter sido mais simples do que isso.
Anshul Nigam

É razoável misturar orquestração e coreografia? por exemplo, ter orquestração para o fluxo de trabalho síncrono principal, mas algumas coreografias para transmitir eventos assíncronos de volta aos recursos de origem (microsserviços). No meu cenário, essa abordagem pode me impedir de fazer saga / máquina de estado e lógica de compensação.
Ryan.Bartsch

1
Alguns leitores podem inferir a partir do seu diagrama de orquestração que orquestração significa invocações síncronas do serviço de controle para a prestação de serviços. Gostaria de esclarecer que a comunicação Invoke-Reply também pode ser realizada usando métodos assíncronos, incl. através de um intermediário de mensagens.
Christoph

34

Orquestração de serviço : você reúne vários serviços por uma lógica fixa. Essa lógica é descrita em um único local. Você pode imaginar uma equipe de pessoas com um gerente fazendo microgerenciamento. O gerente diz com precisão o que, quando e quem deve fazer. Os membros da equipe não se importam com o objetivo inteiro do trabalho, o gerente combina as saídas em uma única entrega. Um exemplo prático é um processo BPEL. O processo BPEL contém a lógica, pode chamar vários serviços e combinar suas respostas em uma única resposta de serviço.

Coreografia de serviço : a lógica de decisão é distribuída, sem ponto centralizado. Você pode imaginar um lar, onde todos busquem o bem comum e trabalhem de forma pró-ativa, sem microgestão. Ou você pode imaginar um corpo humano, onde diferentes membros são interdependentes e trabalham para o objetivo comum. Um exemplo prático é o processamento orientado a eventos, em que um agente é ativado por um evento e faz seu trabalho. Todos os agentes formam um sistema juntos. Não há lógica centralizada. As possibilidades de coreografia podem ir além da orquestração, pois estão mais alinhadas com o mundo real.

Minha opinião é que não precisamos distinguir muito entre esses dois, pois precisamos nos concentrar na lógica de negócios. Onde um único ponto da lógica faz o trabalho, fazemos a orquestração. Onde um problema não pode ser coberto por uma lógica centralizada, somos forçados a coreografar de qualquer maneira. É por isso que frequentemente encontramos orquestração em TI, enquanto a coreografia continua sendo mais um conceito acadêmico e um assunto para pesquisa. E muitas vezes fazemos coreografia sem realmente saber, como no mundo real.


21

Os serviços podem ser distinguidos entre serviços atômicos e serviços compostos por outros serviços. Tais composições são chamadas "orquestração". Às vezes, fluxo de trabalho, às vezes processo de negócios. Por exemplo, BPEL é uma linguagem de orquestração, mas se autodenomina "linguagem de execução de processos de negócios".

Não há exigência de que os serviços precisem ser compostos hierarquicamente. Isso significa que dois serviços podem conversar entre si. O protocolo executado entre eles é chamado de "coreografia". Pode haver dois serviços, mas geralmente existem mais de dois serviços envolvidos. Cada serviço em uma coreografia pode ser visto como orquestrador dos serviços do parceiro. Cada serviço que participa de uma coreografia pode ser realizado como orquestração / fluxo de trabalho / processo.

Uma orquestração mostra o comportamento completo de cada serviço, enquanto a coreografia combina as descrições de comportamento da interface de cada serviço.

Um bom artigo científico que distingue coreografia, comportamento de interface, comportamento de provedor e orquestração é o seguinte: Dijkman, R. & Dumas, M. Design Orientado a Serviços: Uma Abordagem de Múltiplos Pontos de Vista Jornal Internacional de Sistemas de Informação Cooperativos, 2004, 13, 337-368


19

Como o tópico é antigo, mas ainda está escrito para aqueles que tropeçaram aqui em busca dessa pergunta, como eu fiz. Essa é uma questão muito debatida na arquitetura orientada a serviços (SOA), que precisa de explicações muito mais limpas para iniciantes.

Orquestração: processo executável

  • Usado em processos de negócios privados
  • Um processo central (que pode ser outro serviço da Web) assume o controle dos serviços da Web envolvidos e coordena a execução de diferentes operações nos serviços da Web envolvidos na operação
  • Os serviços da Web envolvidos não "sabem" (e não precisam saber) que estão envolvidos em um processo de composição e que estão participando de um processo comercial de nível superior.
  • Somente o coordenador central da orquestração está ciente desse objetivo; portanto, a orquestração é centralizada com definições explícitas de operações e a ordem de chamada dos serviços da Web.

insira a descrição da imagem aqui

Coreografia: Colaboração Multipartidária

  • A coreografia, ao contrário, não depende de um coordenador central. Em vez disso, cada serviço da Web envolvido na coreografia sabe exatamente quando executar suas operações e com quem interagir. Coreografia é um esforço colaborativo com foco na troca de mensagens em processos públicos de negócios.

  • Todos os participantes da coreografia precisam estar cientes do processo de negócios, das operações a serem executadas, das mensagens a serem trocadas e do momento das trocas de mensagens.

insira a descrição da imagem aqui

Coreografia vs. Orquestração

  • Da perspectiva de compor serviços da Web para executar processos de negócios, a orquestração é um paradigma mais flexível e possui as seguintes vantagens sobre a coreografia:

  • A coordenação dos processos componentes é gerenciada centralmente por um coordenador conhecido.

  • Os serviços da Web podem ser incorporados sem que eles estejam cientes de que estão participando de um processo comercial maior.

  • Cenários alternativos podem ser implementados caso ocorram falhas.

1
Na verdade, a coreografia geralmente depende de um coordenador central - e geralmente esse coordenador é uma forma de intermediário de mensagens distribuídas. Não usar algo como um intermediário de mensagens uniria seus serviços de maneiras muito inflexíveis, levando a fragilidade e baixa reutilização.
Rodney P. Barbati

8

Andrei e outros fizeram um bom trabalho ao explicar o que é orquestração e o que é coreografia. Para o arquiteto de software escolher entre essas duas alternativas, também é importante compará-las com relação a diferentes qualidades.

Orquestração mais que coreografia

  • Confiabilidade: as plataformas de orquestração têm suporte interno para tratamento de erros e gerenciamento de transações (transações compensatórias). Na coreografia, o fluxo de trabalho personalizado e o tratamento de erros tendem a ser mais propensos a erros.
  • Modificabilidade: Criar e alterar fluxos de trabalho do processo e composições complexas de serviços é mais fácil nas ferramentas visuais de BPM encontradas nas plataformas de orquestração.

Vantagens da coreografia sobre orquestração

  • Desempenho: a orquestração incorre em uma sobrecarga de desempenho devido à interpretação do script do fluxo de trabalho e à camada adicional da própria plataforma de orquestração.

  • Custo: a coreografia não requer middleware ou idioma adicionais, que têm curvas de aprendizado associadas e carga de governança.

EDITAR

Uma solução de orquestração pode introduzir um SPOF se o elemento orquestrador não empregar um mecanismo para alta disponibilidade. Obrigado @Deepak por apontar isso para um comentário.


3
Exceto que a coreografia requer middleware adicional. Os requisitos (tarefas) precisam corresponder a diferentes nós. Posteriormente, a coreografia é implantada, representada, monitorada e adaptada. Todo esse gerenciamento requer ferramentas que geralmente são fornecidas por um middleware.
Andrei

1
A orquestração não traz uma desvantagem do ponto único de falha, que não é o caso da coreografia?
Deepak


6

A orquestração é útil quando você tem controle sobre todos os atores em um processo - quando eles estão todos em um domínio de controle e você pode ditar o fluxo de atividades. É claro que isso ocorre com mais frequência quando você está especificando um processo de negócios que será realizado dentro de uma organização que você controla.

A coreografia é uma maneira de especificar como duas ou mais partes - nenhuma das quais tem controle sobre os processos das outras partes, ou talvez alguma visibilidade desses processos - podem coordenar suas atividades e processos para compartilhar informações e valor. Use coreografia quando a coordenação entre os domínios de controle / visibilidade for necessária. Você pode pensar em coreografia, em um cenário simples, como um protocolo de rede. Ele determina padrões aceitáveis ​​de solicitações e respostas entre as partes.


5

Outra maneira de analisar a orquestração de serviços versus a coreografia:

- Orquestração de serviço: em torno de um domínio comercial.
- Coreografia de Serviço: Entre vários Domínios de Negócios.


1

Na orquestração, existe um maestro e existem tocadores de instrumentos. Os jogadores jogam de acordo com a conduta do condutor. Se o condutor for substituído, a expressão harmônica será diferente, ou seja, ainda é a mesma peça (serviço), mas com um resultado diferente. Por exemplo, para fornecer uma proposta de arranjo financeiro, o serviço de orquestração solicitará (chamando) cada jogador (entidade ou serviço de utilidade pública, por exemplo, verificação de crédito) para jogar (retornar resultados ou ajustar / atualizar sua execução) de acordo com o modelo do condutor (comercial regras). Na coreografia, existe um coreógrafo e grupos de dançarinos. A coreografia é uma direção, mas cada grupo de dançarinos é autônomo em como realizar essa direção.


-1

Uma orquestração normalmente une serviços de nível inferior. É como um mediador . Uma coreografia ajuda a reduzir ainda mais o acoplamento. Eu expliquei isso com mais detalhes aqui .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.