Uma malha de serviços permite que os desenvolvedores de serviços aliviem o trabalho de comunicação de rede e se concentrem mais na lógica de negócios.
Uma malha de serviços é uma camada de infraestrutura configurável para um aplicativo de microsserviços. Ele torna a comunicação entre instâncias de serviço flexível, confiável e rápida. A malha fornece descoberta de serviço, balanceamento de carga, criptografia, autenticação e autorização, suporte para o padrão de disjuntor e outros recursos.
A malha de serviço geralmente é implementada fornecendo uma instância de proxy, chamada sidecar, para cada instância de serviço. Os sidecars lidam com comunicações entre serviços, monitoramento e questões relacionadas à segurança – qualquer coisa que possa ser abstraída dos serviços individuais. Dessa forma, os desenvolvedores podem lidar com o desenvolvimento, o suporte e a manutenção do código do aplicativo nos serviços; as equipes de operações podem manter a malha de serviço e executar o aplicativo.
O Istio, apoiado pelo Google, IBM e Lyft, é atualmente a arquitetura de malha de serviço mais conhecida. O Kubernetes, que foi originalmente projetado pelo Google, é atualmente o único framework de orquestração de contêineres suportado pelo Istio.
Uma malha de serviços funciona com um protocolo de descoberta de serviços para detectar serviços conforme eles surgem. Então, a malha os envelhece graciosamente quando eles desaparecem. A descoberta de serviços é uma estrutura de gerenciamento de contêineres que mantém uma lista de instâncias que estão prontas para receber solicitações – ou serem descobertas – por outros serviços. Juntos, eles criam resiliência na comunicação entre serviços.