Partilhar via


Padrões de comunicação nativos da nuvem

Gorjeta

Este conteúdo é um excerto do eBook, Architecting Cloud Native .NET Applications for Azure, disponível no .NET Docs ou como um PDF transferível gratuito que pode ser lido offline.

Miniatura da capa dos aplicativos .NET nativos da nuvem para eBook do Azure.

Ao construir um sistema nativo da nuvem, a comunicação torna-se uma decisão de design significativa. Como um aplicativo cliente front-end se comunica com um microsserviço back-end? Como os microsserviços de back-end se comunicam entre si? Quais são os princípios, padrões e práticas recomendadas a serem considerados ao implementar a comunicação em aplicativos nativos da nuvem?

Considerações sobre comunicação

Numa aplicação monolítica, a comunicação é simples. Os módulos de código são executados juntos no mesmo espaço executável (processo) em um servidor. Essa abordagem pode ter vantagens de desempenho, pois tudo é executado junto na memória compartilhada, mas resulta em código fortemente acoplado que se torna difícil de manter, evoluir e dimensionar.

Os sistemas nativos da nuvem implementam uma arquitetura baseada em microsserviços com muitos microsserviços pequenos e independentes. Cada microsserviço é executado em um processo separado e normalmente é executado dentro de um contêiner que é implantado em um cluster.

Um cluster agrupa um pool de máquinas virtuais para formar um ambiente altamente disponível. Eles são gerenciados com uma ferramenta de orquestração, que é responsável por implantar e gerenciar os microsserviços em contêineres. A Figura 4-1 mostra um cluster Kubernetes implantado na nuvem do Azure com os Serviços Kubernetes do Azure totalmente gerenciados.

Um cluster Kubernetes no Azure

Figura 4-1. Um cluster Kubernetes no Azure

Em todo o cluster, os microsserviços se comunicam entre si por meio de APIs e tecnologias de mensagens.

Embora ofereçam muitos benefícios, os microsserviços não são almoço grátis. As chamadas de método local em processo entre componentes agora são substituídas por chamadas de rede. Cada microsserviço deve se comunicar através de um protocolo de rede, o que adiciona complexidade ao seu sistema:

  • O congestionamento da rede, a latência e as falhas transitórias são uma preocupação constante.
  • A resiliência (ou seja, a repetição de pedidos falhados) é essencial.
  • Algumas chamadas devem ser idempotentes para manter o estado consistente.
  • Cada microsserviço deve autenticar e autorizar chamadas.
  • Cada mensagem deve ser serializada e, em seguida, desserializada - o que pode ser caro.
  • A encriptação/desencriptação de mensagens torna-se importante.

O livro .NET Microservices: Architecture for Containerized .NET Applications, disponível gratuitamente na Microsoft, fornece uma cobertura detalhada dos padrões de comunicação para aplicativos de microsserviços. Neste capítulo, fornecemos uma visão geral de alto nível desses padrões, juntamente com as opções de implementação disponíveis na nuvem do Azure.

Neste capítulo, abordaremos primeiro a comunicação entre aplicativos front-end e microsserviços back-end. Em seguida, examinaremos os microsserviços de back-end que se comunicam entre si. Vamos explorar a tecnologia de comunicação up e gRPC. Finalmente, vamos procurar novos padrões de comunicação inovadores usando a tecnologia de malha de serviço. Também veremos como a nuvem do Azure fornece diferentes tipos de serviços de suporte para dar suporte à comunicação nativa da nuvem.