Mecanismos de comunicação - Implementando microsserviços em AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Mecanismos de comunicação

No paradigma de microsserviços, vários componentes de um aplicativo devem se comunicar por meio de uma rede. As abordagens comuns para isso incluem mensagens baseadas em REST, GraphQL, gRPC e assíncronas.

Comunicação baseada em REST

O protocolo HTTP/S, usado amplamente para comunicação síncrona entre microsserviços, geralmente opera. RESTful APIs O API Gateway oferece uma maneira simplificada de criar uma API que serve como um ponto de acesso centralizado para serviços de back-end, lidando com tarefas como gerenciamento de tráfego, autorização, monitoramento e controle de versão.

Comunicação baseada em GraphQL

Da mesma forma, o GraphQL é um método difundido para comunicação síncrona, usando os mesmos protocolos do REST, mas limitando a exposição a um único endpoint. Com AWS AppSync, você pode criar e publicar aplicativos GraphQL que interagem diretamente com AWS serviços e datastores ou incorporar funções Lambda para lógica de negócios.

Comunicação baseada em gRPC

O gRPC é um protocolo de comunicação RPC síncrono, leve, de alto desempenho e de código aberto. O gRPC aprimora seus protocolos subjacentes usando HTTP/2 e habilitando mais recursos, como compressão e priorização de fluxo. Ele usa o Protobuf Interface Definition Language (IDL), que é codificado em binário e, portanto, aproveita o enquadramento binário HTTP/2.

Mensagens assíncronas e transmissão de eventos

As mensagens assíncronas permitem que os serviços se comuniquem enviando e recebendo mensagens por meio de uma fila. Isso permite que os serviços permaneçam frouxamente acoplados e promovam a descoberta de serviços.

As mensagens podem ser definidas dos três tipos a seguir:

  • Filas de mensagens: uma fila de mensagens atua como um buffer que separa remetentes (produtores) e destinatários (consumidores) de mensagens. Os produtores colocam as mensagens na fila e os consumidores as retiram da fila e as processam. Esse padrão é útil para comunicação assíncrona, nivelamento de carga e tratamento de picos de tráfego.

  • Publicar-Assinar: no padrão publicar-assinar, uma mensagem é publicada em um tópico e vários assinantes interessados recebem a mensagem. Esse padrão permite a transmissão de eventos ou mensagens para vários consumidores de forma assíncrona.

  • Mensagens orientadas por eventos: as mensagens orientadas por eventos envolvem capturar e reagir a eventos que ocorrem no sistema. Os eventos são publicados em um agente de mensagens e os serviços interessados assinam tipos específicos de eventos. Esse padrão permite um acoplamento frouxo e permite que os serviços reajam aos eventos sem dependências diretas.

Para implementar cada um desses tipos de mensagem, AWS oferece vários serviços gerenciados, como Amazon SQS, Amazon SNS, Amazon, EventBridge Amazon MQ e Amazon MSK. Esses serviços têm recursos exclusivos adaptados às necessidades específicas:

  • Amazon Simple Queue Service (Amazon SQS) e Amazon Simple Notification Service (Amazon SNS): Como você pode ver na Figura 8, esses dois serviços se complementam, com o Amazon SQS fornecendo um espaço para armazenar mensagens e o Amazon SNS permitindo a entrega de mensagens para vários assinantes. Eles são eficazes quando a mesma mensagem precisa ser entregue a vários destinos.

    Diagrama mostrando o padrão de barramento de mensagens em AWS

    Figura 8: Padrão de barramento de mensagens em AWS

  • Amazon EventBridge: um serviço sem servidor que usa eventos para conectar componentes do aplicativo, facilitando a criação de aplicativos escaláveis orientados por eventos. Use-o para rotear eventos de fontes como aplicativos, AWS serviços e software de terceiros desenvolvidos internamente para aplicativos de consumo em toda a sua organização. EventBridge fornece uma maneira simples e consistente de ingerir, filtrar, transformar e entregar eventos para que você possa criar novos aplicativos rapidamente. EventBridge os ônibus de eventos são adequados para o many-to-many roteamento de eventos entre serviços orientados a eventos.

  • Amazon MQ: uma boa opção se você tiver um sistema de mensagens preexistente que usa protocolos padrão como JMS, AMQP ou similares. Esse serviço gerenciado substitui seu sistema sem interromper as operações.

  • Amazon MSK (Managed Kafka): um sistema de mensagens para armazenar e ler mensagens, útil para casos em que as mensagens precisam ser processadas várias vezes. Ele também suporta streaming de mensagens em tempo real.

  • Amazon Kinesis: processamento e análise em tempo real de dados de streaming. Isso permite o desenvolvimento de aplicativos em tempo real e fornece uma integração perfeita com o AWS ecossistema.

Lembre-se de que o melhor serviço para você depende de suas necessidades específicas, por isso é importante entender o que cada um oferece e como eles se alinham às suas necessidades.

Orquestração e gerenciamento de estado

A orquestração de microsserviços se refere a uma abordagem centralizada, em que um componente central, conhecido como orquestrador, é responsável por gerenciar e coordenar as interações entre microsserviços. Orquestrar fluxos de trabalho em vários microsserviços pode ser um desafio. A incorporação de código de orquestração diretamente nos serviços é desencorajada, pois introduz um acoplamento mais estreito e impede a substituição de serviços individuais.

O Step Functions fornece um mecanismo de fluxo de trabalho para gerenciar as complexidades da orquestração de serviços, como tratamento de erros e serialização. Isso permite que você escale e altere aplicativos rapidamente sem adicionar código de coordenação. O Step Functions faz parte da plataforma AWS sem servidor e suporta funções Lambda, Amazon, Amazon EKS, EC2 Amazon ECS, SageMaker AI e muito mais. AWS Glue

Diagrama de um fluxo de trabalho de microsserviços invocado por AWS Step Functions

Figura 9: Um exemplo de um fluxo de trabalho de microsserviços com etapas paralelas e sequenciais invocadas por AWS Step Functions

O Amazon Managed Workflows for Apache Airflow (Amazon MWAA) é uma alternativa ao Step Functions. Você deve usar o Amazon MWAA se priorizar o código aberto e a portabilidade. O Airflow tem uma grande e ativa comunidade de código aberto que contribui regularmente com novas funcionalidades e integrações.