Como a Service Mesh pode elevar o padrão dos Microsserviços

Os microsserviços são arquiteturas para a criação de aplicações que podem ser implantadas e executadas de modo independente dos outros serviços. Nesse caso, a comunicação é feita serviço a serviço.

Porém, em arquiteturas de microsserviços com um grande número de aplicações, essa comunicação se torna bastante complexa. Por isso, o gerenciamento da comunicação nessas aplicações é fundamental para garantir o desempenho e a confiabilidade ponto-a-ponto.

A Service Mesh foi projetada para tornar o desenvolvimento de microsserviços mais fácil e eficaz, pois ela oferece um nível granular de controle sobre como os serviços se comunicam uns com os outros e compartilham dados entre si. Desse modo, ela garante que um alto volume de comunicação entre os serviços de infraestrutura de aplicativos seja mais rápido, seguro e confiável.

O que é e como funciona a Service Mesh

Uma Service Mesh (em tradução literal, malha de serviço) é uma camada de infraestrutura visível e configurável, incorporada diretamente em uma aplicação. Ela foi projetada para lidar com um alto volume de comunicação entre processos e documentar o desempenho das interações entre os diversos componentes de uma aplicação. Desse modo, ela otimiza a comunicação e evita o tempo de inatividade, conforme a aplicação evolui.

Um dos objetivos da Service Mesh é trazer a comunicação para um patamar visível, onde essa comunicação possa ser gerenciada, monitorada e controlada. Ela privilegia a governança de microsserviços ao adicionar a visibilidade necessária e controles seguros quando são utilizados dezenas de recursos. Desse modo, fica mais fácil descobrir, autorizar e rastrear as diferentes instâncias de serviço.

O Linkerd, o primeiro projeto de service mesh, foi criado em 2017,  e hoje é utilizado por empresas como Microsoft, HP, Walmart e eBay. Logo outros frameworks de Service Mesh, como o Istio e o Conduit, foram disponibilizados no mercado. Eles foram desenvolvidos para ser executados em ambientes variados: on-premises, hospedado em nuvem, em containers do Kubernetes, serviços executados em máquinas virtuais, entre outros;

A Service Mesh implementa a maior parte das funções de rede. Ela oferece as seguintes funcionalidades:

  • Roteamento dinâmico;
  • Autenticação e autorização;
  • Observabilidade;
  • Rastreabilidade;
  • suporte para o padrão de disjuntor;
  • Criptografia;
  • Mitigação de falhas e implementação de Circuit, rare limit e timeout;
  • Balanceamento de carga;
  • Descoberta de serviços.

Uma vez que essas funcionalidades são fornecidas pela Service Mesh no nível da plataforma, elas são disponibilizadas uniformemente para todos os serviços.

Como as sidecars facilitam a comunicação

Uma service mesh geralmente é implementada fornecendo uma instância de proxy secundário chamada sidecar para cada instância de serviço. Situados em uma camada de infraestrutura própria, esses proxies são executados paralelamente a cada serviço, e não dentro deles – daí o nome sidecar.

Sidecars são, portanto, proxies em containers que vivem lado a lado com os serviços que estão suportando. Elas são capazes de interceptar as comunicações entre os serviços, fazendo o monitoramento e lidando com questões de segurança. O proxy sidecar se comunica com outros proxies secundários e é gerenciado pela estrutura de orquestração.

Juntos, esses proxies formam uma rede mesh que intercepta a comunicação entre os microsserviços. O sidecar é o responsável por receber o tráfego de rede e roteá-lo para a sua aplicação irmã. Os sidecars se comunicam entre si em outros microsserviços e eles são gerenciados pelo orquestrador de contêineres em uso.

Além disso, o sidecar é um dos maiores responsáveis por obter métricas de uso de rede da aplicação. Desse modo, em vez de termos um único ponto de comunicação, temos vários pontos que permitem à rede saber como chegar de um serviço a outro.

As vantage