Para que é usada a malha de serviço?

A malha de serviço é usada para gerenciar a comunicação entre microsserviços em um aplicativo distribuído. Ele atua como uma camada de infraestrutura dedicada que lida com a comunicação entre serviços, fornecendo recursos como descoberta de serviços, balanceamento de carga, gerenciamento de tráfego, políticas de segurança e observabilidade. Ao abstrair a complexidade da rede do código do aplicativo, a malha de serviço simplifica a comunicação do serviço, aumenta a confiabilidade e permite recursos avançados, como interrupção de circuito e novas tentativas. As arquiteturas de malha de serviço normalmente utilizam proxies secundários (como Envoy ou Linkerd) implantados junto com cada microsserviço para gerenciar o roteamento de tráfego e a aplicação de políticas de forma transparente.

Você deve considerar o uso de uma malha de serviço em cenários em que tenha uma arquitetura complexa de microsserviços com vários serviços se comunicando por uma rede. As malhas de serviço são particularmente benéficas em ambientes que exigem alta confiabilidade, escalabilidade e observabilidade. Eles fornecem controle centralizado sobre a comunicação de serviços, permitindo a implantação perfeita de novos serviços, escalabilidade dinâmica e gerenciamento eficiente de tráfego em implantações distribuídas. A malha de serviço também facilita a implementação de medidas de segurança, como criptografia mútua TLS (Transport Layer Security) entre serviços, garantindo a confidencialidade e integridade dos dados.

A principal função de uma malha de serviço é aumentar a confiabilidade, a segurança e a observabilidade da comunicação de microsserviços. Ele consegue isso interceptando e gerenciando o tráfego entre serviços, aplicando políticas de comunicação e fornecendo visibilidade nas interações de serviços e métricas de desempenho. As arquiteturas de malha de serviço normalmente incluem componentes para descoberta de serviços (para localizar serviços disponíveis), balanceamento de carga (para distribuir o tráfego uniformemente) e telemetria (para monitorar e registrar o comportamento do tráfego). Ao descarregar essas responsabilidades de microsserviços individuais, a malha de serviço melhora a resiliência geral do sistema e a eficiência operacional.

Para usar uma malha de serviço em uma arquitetura de microsserviços, normalmente você implanta uma implementação de malha de serviço junto com seus microsserviços. Cada instância de microsserviço é então emparelhada com um proxy secundário, que intercepta o tráfego de entrada e saída. Os proxies sidecar comunicam-se entre si e com um plano de controle centralizado, que gerencia a configuração, a aplicação de políticas e o monitoramento em toda a malha de serviço. A configuração de regras de roteamento, estratégias de balanceamento de carga, políticas de interrupção de circuito e medidas de segurança (como TLS mútuo) normalmente é gerenciada por meio do plano de controle, fornecendo uma maneira centralizada de configurar e impor o comportamento de comunicação em todo o ambiente de microsserviços. Essa abordagem garante uma comunicação consistente e confiável entre microsserviços, ao mesmo tempo que permite recursos avançados para gerenciamento de tráfego e observabilidade em implantações distribuídas.