Compartilhar via


Infraestrutura de comunicação de malha de serviço

Dica

Esse conteúdo é um trecho do livro eletrônico, para Projetar os Aplicativos .NET nativos de nuvem para o Azure, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.

Cloud Native .NET apps for Azure eBook cover thumbnail.

Ao longo deste capítulo, exploramos os desafios da comunicação de microsserviços. Dissemos que as equipes de desenvolvimento precisam ser sensíveis à forma como os serviços de back-end se comunicam. Idealmente, quanto menos comunicação entre serviços, melhor. No entanto, a prevenção nem sempre é possível, pois os serviços de back-end geralmente dependem uns dos outros para concluir as operações.

Exploramos as diferentes abordagens para implementar a comunicação HTTP síncrona e as mensagens assíncronas. Em cada um dos casos, o desenvolvedor ficará sobrecarregado com a implementação do código de comunicação. O código de comunicação é complexo e demorado. Decisões incorretas poderão levar a problemas de desempenho significativos.

Uma abordagem mais moderna para a comunicação de microsserviços está centrada em uma tecnologia nova e em rápida evolução denominada Malha de Serviço. Uma malha de serviço é uma camada de infraestrutura configurável com recursos internos para tratar a comunicação de serviço a serviço, a resiliência e muitas preocupações transversais. Ela transfere a responsabilidade dessas preocupações dos microsserviços para a camada de malha de serviço. A comunicação é abstraída de seus microsserviços.

Um componente-chave de uma malha de serviço é um proxy. Em um aplicativo nativo de nuvem, uma instância de um proxy geralmente é colocada em cada microsserviço. Embora executem em processos separados, ambos estão intimamente ligados e compartilham o mesmo ciclo de vida. Esse padrão, conhecido como padrão Sidecar, é mostrado na Figura 4-24.

Service mesh with a side car

Figura 4-24. Malha de serviço com um sidecar

Observe na figura anterior como as mensagens são interceptadas por um proxy executando ao lado de cada microsserviço. Cada proxy poderá ser configurado com regras de tráfego específicas para o microsserviço. Ele entende as mensagens e pode roteá-las por seus serviços e pelo mundo.

Além de gerenciar a comunicação de serviço a serviço, a Malha de Serviço dá suporte para descoberta de serviços e balanceamento de carga.

Quando configurada, uma malha de serviço é altamente funcional. A malha recupera um pool de instâncias correspondente de um ponto de extremidade de descoberta de serviços. Ela envia uma solicitação para uma instância de serviço específica, registrando a latência e o tipo de resposta do resultado. Também escolhe a instância com maior probabilidade de retornar uma resposta rápida com base em diferentes fatores, incluindo a latência observada para solicitações recentes.

Uma malha de serviço gerencia as preocupações de tráfego, comunicação e rede no nível do aplicativo. Ela reconhece as mensagens e as solicitações. Uma malha de serviço normalmente se integra a um orquestrador de contêineres. O Kubernetes dá suporte a uma arquitetura extensível na qual uma malha de serviço poderá ser adicionada.

No capítulo 6, nos aprofundamos nas tecnologias de Malha de Serviço incluindo uma discussão sobre a arquitetura e as implementações de código aberto disponíveis.

Resumo

Neste capítulo, discutimos os padrões de comunicação nativos de nuvem. Começamos examinando como os clientes front-end se comunicam com os microsserviços back-end. Ao longo do percurso, discorremos sobre as plataformas de Gateway de API e a comunicação em tempo real. Em seguida, analisamos como os microsserviços se comunicam com outros serviços de back-end. Examinamos a comunicação HTTP síncrona e as mensagens assíncronas entre os serviços. Abordamos o gRPC, uma tecnologia futura no mundo nativo de nuvem. Por fim, introduzimos uma tecnologia nova e em rápida evolução, denominada Malha de Serviço, que pode agilizar a comunicação de microsserviços.

Ênfase especial foi dada aos serviços gerenciados do Azure que podem ajudar a implementar a comunicação em sistemas nativos de nuvem:

Seguidamente passamos aos dados distribuídos em sistemas nativos de nuvem e os benefícios e desafios que apresentam.

Referências