Coreografia e Orquestração

Coreografia e Orquestração - Image: Infra as Code

Coreografia e Orquestração são dois termos que se você ouvir certamente vão surgir algumas imagens na sua cabeça sem maiores explicações. Coreografia, uma pessoa dançando sozinha ou em grupo ela(as) sabem o que precisa ser feito, onde e quando sem uma supervisão ativa. A Orquestração, uma maestra conduz ativamente um coral ou naipes de instrumentos de uma orquestra com a finalidade de realizar uma apresentação. São essas coisas que surgem na minha cabeça quando eu penso em Coreografia e Orquestração.

No mundo da arquitetura de micro serviços utiliza-se os termos Coreografia e Orquestração como abordagens para construir sistemas distribuídos, vejamos algumas características de cada uma delas imaginando a seguinte situação: Você vai jantar num restaurante com o seu companheiro ou sua companheira e..

  • Interação 1:

    Uma pessoa na recepção te cumprimenta com um “Olá boa noite!! Mesa para dois, por favor me sigam…” e te acompanha até uma das mesas e por fim fala “Tenha um bom jantar” e em seguida retorna para a recepção.

  • Interação 2:

    Uma pessoa do atendimento te cumprimenta, com um “Olá boa noite!!” e lhe oferece o cardápio e fala “fiquem a vontade, eu volto em instantes”. Pouco tempo depois a pessoa volta e pergunta “estão prontos, podemos fazer o pedido?”. Bebidas escolhidas, entradas escolhidas, pratos escolhidos, ponto da carne escolhido, temperos e molhos definidos, pedidos feitos! Pouco tempo depois, a pessoa do atendimento retorna com as bebidas e com as entradas. Pouco tempo depois, a pessoa do atendimento retorna com os pratos prontos e fala “Tenha um bom apetite!”. Pouco tempo depois, a pessoa do atendimento retorna e pergunta “Está tudo conforme solicitado?”. Algum tempo depois a pessoa do atendimento retorna e pergunta, “Estava tudo conforme solicitado? Posso retirar os pratos?”.

  • Interação 3:

    O jantar estava tudo certo, conforme o solicitado. Você pede a conta, e se dirige até ao caixa, a pessoa do caixa te cumprimenta com um “boa noite, gostaram do jantar?!”, você responde “sim, estava ótimo!” e entrega a conta e o cartão, paga a conta e se encaminha para a saída.

  • Interação 4:

    Uma pessoa na recepção te cumprimenta novamente, e se despede falando “Tenham uma boa noite e voltem sempre”.

OBS: Por restrições de orçamento e escopo do projeto está história não terá sobremesa 😣

Na situação descrita quais desses serviços são coreografados e orquestrados? 🙂 vejamos….

Coreografia

A arquitetura de micro serviços baseada em coreografia enfatiza a comunicação direta e assíncrona entre os serviços. Cada serviço é autônomo e responsável por reagir a eventos e propagar alterações para outros serviços, sem depender de um componente centralizado, como se fosse um “boa noite, me acompanhe até uma mesa” ou “tenham uma boa noite e voltem sempre”. Isso promove a escalabilidade, a resiliência e o baixo acoplamento entre os serviços.

Diagrama Coreografia - Image: Infra as Code

Orquestração:

Por outro lado, a arquitetura de micro serviços baseada em orquestração utiliza um componente central, conhecido como orquestrador, para controlar a interação entre os serviços. O orquestrador coordena e gerencia as chamadas entre os serviços, determinando a ordem e o fluxo de execução das operações, por exemplo quando alguém fala “fiquem a vontade, eu volto em instantes”, “estão prontos, podemos fazer o pedido?” e “estava tudo conforme solicitado? Posso retirar os pratos?”. Essa abordagem centralizada oferece maior controle e visibilidade, mas pode criar dependências e aumentar o acoplamento entre os serviços.

Diagrama Orquestração - Image: Infra as Code

Conclusão

Arquiteturas de micro serviços baseadas em coreografia quanto as baseadas em orquestração possuem suas vantagens e desvantagens. A coreografia oferece uma abordagem descentralizada, promovendo independência e escalabilidade dos serviços, além de favorecer a resiliência por meio da comunicação assíncrona, no contexto do restaurante, as pessoas da recepção e do caixa realizam um papel “coreografado”.

Por outro lado, a orquestração oferece controle centralizado, visibilidade e gerenciamento mais granular das operações, sendo útil para fluxos complexos e regras de negócio sofisticadas trazendo junto um alto grau de acoplamento e dependências este papel foi desempenhado pela pessoa que fez o pedido do jantar e ficou atento ao atendimento dos clientes.

Para você quem está atendo e se ligou, você notou que o restaurante opera de forma Híbrida, em determinados fluxos funciona no modelo coreografia e em outros funciona via o modelo orquestrado. Em alguns sistemas adota-se uma arquitetura baseada no modelo Híbrido.

A escolha entre os três modelos dependerá das necessidades e características específicas do sistema, considerando fatores como escalabilidade, autonomia dos serviços e complexidade das operações.

Diagrama Sistema Híbrido - Image: Infra as Code

Abraços!

Vida longa e próspera a todos!!

Referências


Eu adoraria ouvir suas outras histórias e situações semelhantes ao que acabei de escrever neste post, você pode me encontrar em @infraascode_br ou linkedin.com/in/leonardoml/ .

Te convido a ver os outros posts do blog Infra-as-Code garanto que tem coisas legais lá!!


--- --- IMPORTANTE --- ---
As opiniões aqui expressas são pessoais e de responsabilidade única e exclusiva do autor, elas não refletem necessariamente a posição das empresas que eu trabalho(ei) e/ou presto(ei) serviço.