Orquestração e Coreografia em SOA

Neste post você vai aprender como orquestração e coreografia em SOA pode ajudar a sua empresa a compor serviços e o que é significa cada termo

Orquestração e Coreografia em SOA

Apesar de hoje eu acreditar e apoiar muito a conversão do modelo arquitetural atual de qualquer empresa para Microserviços, sempre que entro no universo SOA muitas coisas parecem confusas pela nomenclatura e também pelo seu uso, e uma das mais nebulosas é orquestração e coreografia em SOA.

Em relação a Microserviços, eu escrevi esse post que ilustra muito bem as fases e modelos para o passo seguinte da sua arquitetura.

Antes de mais nada quando falamos nesses em orquestração e coreografia, sempre pensamos em governança, e nesse webinar comentamos um pouco como governança deve ser tratada em empresas modernas.

Definições ao pé da letra

Para tentar explicar um primeiro ponto das diferenças entre essas palavras vou recorrer ao bom e velho dicionário. Neste ponto já vou te mostrar que sim, essas palavras são muito diferentes. As definições foram referenciadas a partir do dicionário Michaelis.

Orquestração: Conjunto de ações, procedimentos, ideias etc. que têm como objetivo a consecução de algo; articulação: “Percebia-se a orquestração de um movimento para destituir o presidente da entidade”.

Coreografia: Sequência de movimentos de uma dança.

Voltando ao Mundo da tecnologia

Agora que você já sabe como essas duas palavras funcionam no mundo artístico, vou te direcionar melhor para como isso funciona no mundo tecnológico.

Como você pode perceber, coreografia é a sequência de movimentos de uma dança, ou seja, é algo que já está determinado. Um dançarino ou uma dançarina já sabe o que é preciso executar na hora do show.

Sendo assim, pensando em software, a coreografia será estruturada e definida antes mesmo da execução da ação, então ela já está programada e é apenas realizada em tempo de execução.

Ao interpretar a definição de orquestração é possível notar que é uma agregação de valores para atingir algo maior. A própria frase de exemplo nos indica isso: um movimento que estava sendo orquestrado para destituir o presidente, aos poucos estava ganhando força para acontecer.

Pensando então no lado tecnológico, tenho certeza que você já tem ideia do que estou falando. A orquestração acontece quando a resposta para uma determinada chamada precisa agregar conteúdos para atender a chamada.

Exemplificando para o dia a dia

Vou te mostrar agora na prática como esses dois termos se diferenciam:

Diagrama Serviço Coreografia - orquestração e coreografia em SOA

Como podemos ver na figura acima,  depois da chamada para um serviço, acontece um aviso pré determinado para outros serviços, ou seja, os serviços que precisam de interação com aquela chamada por alguma coisa são chamados de acordo com o código pronto. Não há novas requisições para agregar uma resposta.

Serviços Orquestrados - orquestração e coreografia em SOA

Este segundo esquema mostra muito bem a orquestração de um serviço, no qual após a chamada do cliente, o serviço faz outras requisições para enriquecer e conseguir enviar a resposta de modo correto.

Qual dos dois utilizar então?

Após esclarecer para você o que são essas duas palavrinhas em SOA, você já deve ter percebido que é necessário utilizar as duas para realizar toda a sua estratégia SOA.

Claro que também depende do serviço que você estiver implementando.

É interessante, para que você implante SOA da melhor maneira na sua empresa, que você também leia esse post que irá comentar alguns cenários de implantação interessantes.

Além desse conteúdo queria também te indicar um dos nossos Webinars que fará você pensar no próximo passa para a exposição de seu sistema em APIs. Neste Webinar iremos passar o conceito de SOA no universo de APIs.

Além disso, entre em contato conosco para realizarmos juntos o melhor roadmap para a sua empresa:

Nome

E-mail Profissional

Empresa

Telefone

Sua mensagem

The following two tabs change content below.

Eike Malavasi

Amante de Tecnologia e Inovação, estudante de Publicidade e Propaganda na PUC-Campinas e sempre em busca de conhecimento.

12 Comments

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

  2. frosato says:

    Fala Gustavo!!!

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

    []’s
    Fábio

  3. marcilio says:

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

    []s
    Marcílio

  4. frosato says:

    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.

  5. Raoni Gomes says:

    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

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

  7. Raoni Gomes says:

    Fábio, obrigado!!

  8. Poooottz… o.O

    Bacana!! 😀

    Esclareceu algumas dúvidas e curiosidades.

    Abração!

  9. Augusto says:

    Muito legal,

    Me ajudou a entender de uma maneira mais simples.

    Abraços

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

  11. Fabio, bom dia!

    Gostaria que você me ajudasse citando exemplos práticos de Orquestração e Coreografia em SOA.

    Obrigada.

    Att:
    Camila Minhano

    • Oi Camila, tudo bem?

      Veja se essas explicações esclarecem para você:

      Na orquestração presume-se a existência de uma ordem ou sequência de passos a serem cumpridos para a realização de uma composição. Neste caso, tomando como exemplo um agente de viagens, não seria possível reservarmos um quarto de hotel antes que a locação de um carro tenha acontecido com sucesso. Isso pode ser contornado dentro do processo de orquestração validando os parâmetros de entrada ou retorno de consultas já realizadas dentro do fluxo. Claro que na maioria das vezes simplesmente não faz sentido aplicarmos as técnicas de orquestração para composições de serviços como estas.

      A Coreografia descreve o fluxo entre as duas entidades. O controle e o cumprimento do fluxo é de responsabilidade de ambas as partes. Vamos usar o exemplo de comunicação entre uma Montadora de veículos e Fornecedor de peças: Onde cada entidade (Montadora e Fornecedor) possua seu próprio controle interno para cada passo do fluxo da Coreografia. É natural imaginar que para cada passo as entidades executem uma Composição de Serviços próprias.
      As Composições de cada entidade, obviamente, pode ser implementada com técnicas particulares e que melhor se adaptem às suas necessidades.

Leave a Reply