Mais de 63% + das organizações disseram em uma pesquisa da Dzone que estão adotando microsserviços para alguns ou todos os seus aplicativos.
À medida que mais empresas adotam o uso de arquiteturas de microsserviços, nós, como desenvolvedores, temos que nos tornar mais qualificados com a comunicação de microsserviços.
Trabalhar com sistemas distribuídos é divertido e desafiador ao mesmo tempo. Um desses desafios é projetar uma comunicação eficaz entre os serviços.
Mais centralização ou menos centralização?
Mais acoplamento ou menos acoplamento?
Mais controle ou menos controle?
Estas são apenas algumas perguntas que você precisa responder.
Na newsletter desta semana, vamos:
- Detalhar Orquestração x Coreografia
- Entenda as principais diferenças e compensações entre eles
- Criar uma estrutura para decidir qual abordagem usar
Vamos mergulhar!
O que são microsserviços?
Microsserviços são um estilo de arquitetura de software em que um aplicativo é criado a partir de serviços pequenos e autônomos. Cada microsserviço serve a um propósito distinto e pode ser implantado de forma independente.
Você provavelmente já sabe disso, então esta é uma atualização rápida.
Aqui estão os principais princípios dos Microsserviços:
- Desenvolvimento independente
- Independência de implantação
- Liberdade tecnológica
- Escalabilidade
- Resiliência
Um desafio significativo é projetar uma comunicação interserviços eficaz dentro desse ambiente distribuído.
Dentro de um sistema Monolith, a comunicação acontece através de chamadas diretas de método. Essa é uma abordagem simples que funciona bem quando todos os componentes vivem dentro de um único processo. No entanto, isso não funciona com microsserviços.
Orquestração – Comunicação orientada por comandos
A orquestração é uma abordagem centralizada para a comunicação de microsserviços. Um dos serviços assume o papel de orquestrador e coordena a comunicação entre os serviços.
A orquestração usa comunicação orientada por comandos. O comando comunica a intenção da ação. O remetente quer que algo aconteça e o destinatário não precisa saber quem enviou o comando.
Um exemplo de orquestração pode ser uma Saga implementada com o RabbitMQ.
Tem alguns benefícios agradáveis:
- Simples
- Centralizado
- Facilidade de solução de problemas
- O monitoramento é simples
A orquestração é tipicamente mais simples de implementar e manter do que a coreografia. Como há um coordenador central, você pode gerenciar e monitorar as interações de serviço. Isso, por sua vez, melhora a solução de problemas, pois você sabe onde procurar quando algo dá errado.
As desvantagens da orquestração são:
- Acoplamento apertado
- Ponto único de falha
- Dificuldade para adicionar, remover ou substituir microsserviços
Coreografia – Comunicação Orientada a Eventos
A coreografia é uma abordagem de comunicação descentralizada. A coreografia usa comunicação orientada a eventos – em oposição à orquestração, que usa comandos.
Um evento é algo que aconteceu no passado e é um fato. O remetente não sabe quem manipulará o evento ou o que acontecerá após o processamento.
Falei sobre eventos em profundidade no boletim informativo sobre publicação de eventos de domínio.
Os benefícios mais importantes da coreografia são:
- Acoplamento solto
- Facilidade de manutenção
- Controle descentralizado
- Comunicação assíncrona
A coreografia permite que os microsserviços sejam fracamente acoplados, o que significa que eles podem operar de forma independente e assíncrona. Isso torna o sistema mais escalável e resiliente. Uma falha de um microsserviço não afetará necessariamente os microsserviços.
Claro, há desvantagens na coreografia:
- Complexidade
- O monitoramento é difícil
- Dificuldade para solucionar problemas
É mais complexo implementar e manter do que orquestrar.
O monitoramento eficaz é o maior desafio da minha experiência.
A Encruzilhada: Qual você deve escolher?
Então, como saber qual escolher para o seu sistema?
Eu sempre começo com os requisitos do sistema que estou construindo. E então, eu olho para os prós e contras da orquestração versus coreografia. Aqui está uma pequena estrutura para ajudá-lo a decidir.
A orquestração se destaca quando:
- Você precisa aguardar a conclusão das etapas intermediárias (como a confirmação do pagamento com cartão de crédito)
- Você precisa fazer uma escolha condicional das etapas subsequentes
- O processo deve ser realizado atomicamente (totalmente ou não)
- O processo precisa ser centralizado em um só lugar para monitoramento
Isso também significa que você precisará de um banco de dados central gerenciado pelo orquestrador para lidar com todo o estado relacionado ao fluxo de trabalho.
A coreografia funciona melhor quando:
- O processo pode contar com a mensagem de entrada sem precisar de contexto adicional
- Os passos claramente se sucedem
- Progressos são feitos em uma direção
- Você pode se beneficiar de maior flexibilidade (como modificar etapas individuais isoladamente)
Infelizmente, a coreografia pode dificultar o rastreamento, depuração ou monitoramento dos processos desencadeados por um evento. E quanto maior o fluxo do evento, mais desafiador ele se torna.
Por isso, pense bem antes de optar pela orquestração ou coreografia.
Ambas as abordagens trazem suas vantagens, mas também desvantagens.
Takeaway
A orquestração define uma sequência de etapas que cada microsserviço deve seguir. Isso é ótimo para identificar e abordar interdependências complexas de serviços. Outro benefício é que a lógica de negócios pode ser gerenciada e monitorada em um só lugar.
Já a coreografia é uma técnica descentralizada de comunicação em microsserviços. Cada serviço pode operar de forma independente enquanto ainda faz parte da arquitetura maior.
Para decidir qual abordagem usar, você deve observar seu sistema e identificar o que você pode ganhar ou perder. Tudo é uma troca.
Há também uma abordagem alternativa que quero mencionar.
Você poderia optar por uma abordagem híbrida que integra orquestração e coreografia.
Em uma abordagem híbrida, você decide qual técnica de comunicação usar para um fluxo de trabalho específico. Alguns fluxos de trabalho podem se beneficiar da orquestração, e outros podem se beneficiar mais da coreografia.
Espero que isso tenha sido útil.
Vou te ver semana que vem!