< Insights

O que você precisa saber sobre Service Mesh

  • DevOps
  • Artigo

Uma Service Mesh é uma maneira de controlar como diferentes componentes de uma aplicação compartilham dados entre si. Essa camada de infraestrutura visível pode documentar o desempenho das interações entre os diferentes componentes da aplicação.

Neste artigo, vamos responder sobre o que é Service Mesh. Destacaremos suas características, funcionalidades e importância, além de mostrar como ela pode ser útil na comunicação dentro de uma organização. Confira.

O que é Service Mesh?

No âmbito da computação e tecnologia, o Service Mesh é um termo relativo à infraestrutura de comunicação existente entre vários serviços, que compõem uma determinada aplicação/solução. Ele pode ser definido como uma infraestrutura dedicada para lidar com um alto volume de tráfego, baseado em IPC (inter-processos de comunicação). O IPC, também conhecido como comunicação entre processos, pode ser definido como mecanismos que permitem aos processos enviar informação entre si.

De forma resumida, Service Mesh pode ser considerado uma “camada” de rede abstrata para comunicações de serviços. Tais abstrações resolvem a maior parte das manipulações da rede. Assim, essas responsabilidades são retiradas do nosso código de aplicação.

Além disso, podemos remover estas funções dos desenvolvedores e isso é muito importante, porque os desenvolvedores devem codificar para o negócio, não para os requisitos de infraestrutura.

Portanto, podemos considerar a Service Mesh como uma infraestrutura distribuída de software que lida com a comunicação entre os microsserviços, entregando mensagens de forma confiável e segura e adicionando a essa comunicação visibilidade, recursos, controle e gerenciamento.

3 Frameworks de Service Mash

Existem diversos frameworks para trabalhar com o Service Mash. Portanto, confira alguns deles:

Istio

O Istio é uma plataforma de Service Mesh, que funciona como open source para controlar a maneira como os microsserviços compartilham dados entre si. Ter uma Service Mesh como o Istio, possibilita que as equipes de desenvolvimento e operações estejam melhor preparadas para lidar com a mudança de aplicações monolíticas para aplicações nativas em nuvem. Para isso, o Istio fornece insights comportamentais e, como mencionado anteriormente, proporciona controle operacional sobre a Service Mesh, além dos microsserviços nela.

Linkerd

O Linkerd é um projeto criado pelo Twitter em 2013, quando a rede social migrou para uma arquitetura de microsserviços. O projeto Linkerd foi transformado em open source em 2016, que acabou ficando conhecido como versão 0.1. Porém, em 2018, o Linkerd ganhou uma nova versão, a versão 2.0. A nova versão foi lançada com o intuito de corrigir uma série de problemas e tendo como base as lições aprendidas na primeira versão. 

O projeto da primeira versão tinha a finalidade de ser um projeto configurável, poderoso e multiplataforma. Já a segunda tem o objetivo de ser mais simples.

App Mesh

O App Mesh é um Service Mesh que oferece redes para aplicativos, com o intuito de facilitar a comunicação dos serviços entre si e entre outros tipos de infraestrutura de computação. O App Mesh consegue padronizar o modo de comunicação dos seus serviços, possibilitando a visibilidade de ponta a ponta e garantindo alta disponibilidade para seus aplicativos.

O App Mesh tem como funcionalidade a ação de configurar cada serviço para exportar dados de monitoramento e implementa uma lógica de controle de comunicações consistente em todo o aplicativo, facilitando a identificação rápida da localização exata dos erros e o novo roteamento automático do tráfego da rede, caso haja alguma falha ou seja necessário implantar mudanças de código.

Qual a importância do Service Mesh?

Em suma, uma Service Mesh é uma infraestrutura de comunicação entre serviços. Com ela, todas as comunicações serviço-a-serviço acontecerão através de um componente de software chamado service mesh ou sidecar proxy.

Além disso, o Service Mesh fornece suporte integrado para algumas funções de rede, como resiliência, descoberta de serviços, etc. Assim, os desenvolvedores de serviços podem se concentrar mais na lógica do negócio, enquanto a maior parte do trabalho, relacionado à comunicação de rede, é transferida para a Service Mesh. Por exemplo, você não precisa mais se preocupar com circuit breaking, quando seu micro serviço chama outro serviço. 

Quais são as funcionalidades do Service Mesh?

A Service Mesh oferece um conjunto de funções de aplicações de rede, enquanto algumas funções (primitivas) de rede continuam a ser implementadas no próprio nível dos microsserviços. Não existe uma regra rigorosa sobre quais funcionalidades devem ser oferecidas por uma Service Mesh.

Os recursos mais comumente são:

  • Resiliência para comunicações entre serviços: Circuit breaking, retries e timeouts, injeção de falhas, gerenciamento de falhas, balanceamento de carga e failover;
  • Descoberta de Serviço: Descoberta de endpoints de serviço, por meio de um mecanismo de registro de serviço dedicado;
  • Roteamento: Recursos primitivos de roteamento, mas nenhuma lógica de roteamento relacionada à funcionalidade do negócio do serviço;
  • Observabilidade: Métricas, monitoramento, logging distribuído, rastreamento distribuído;
  • Segurança: Segurança no nível de transporte (TLS) e gerenciamento de chaves;
  • Controle de acesso: Controle de acesso baseado em blacklist e whitelist;
  • Implantação: Suporte nativo para contêineres. Docker e Kubernetes;
  • Protocolos de comunicação entre serviços: HTTP1.x, HTTP2, gRPC.

Como o Service Mesh otimiza a comunicação na empresa?

Cada serviço novo adicionado à aplicação ou nova instância de um serviço existente, significa uma complicação a mais para o ambiente de comunicação e introduz novos pontos para possíveis falhas. Em uma arquitetura de microsserviços complexa, é praticamente impossível localizar onde os problemas ocorrem sem uma Service Mesh.

Isso deve-se ao fato de que a Service Mesh também captura todos os aspectos da comunicação de serviço a serviço, como métricas de desempenho. Com o passar do tempo, é possível aplicar os dados fornecidos às regras de comunicação entre serviços para aumentar a eficiência e a confiabilidade das solicitações de serviço.

Pense na seguinte situação: Se um determinado serviço falhar, a Service Mesh coletará os dados sobre o tempo até a retomada da atividade. Conforme os dados sobre períodos de falha de um determinado serviço se acumulam, é possível escrever regras para determinar o tempo de espera ideal, antes de fazer uma nova tentativa. Isso garantirá que o sistema não seja sobrecarregado com tentativas desnecessárias.

Como incluir o Service Mesh na empresa?

Se a sua empresa estiver criando microsserviços, provavelmente sua equipe já antecipou algumas necessidades futuras, como rápida escalabilidade e adição de novas funcionalidades para satisfazer às necessidades empresariais.

Na maioria dos casos, depois de um ano, a arquitetura de microsserviços tem um aspecto muito diferente do inicial. Em um primeiro momento, as bibliotecas incorporadas aos microsserviços precisam ser capazes de lidar com a comunicação serviço a serviço, com o mínimo de interrupção das operações.

Se a sua empresa aproveitar todo o potencial dos microsserviços, expandindo a escalabilidade e as funcionalidades, a eficiência da comunicação poderá ser afetada. Com o passar do tempo, os problemas aumentam à medida que os serviços ficam sobrecarregados com solicitações e os desenvolvedores precisam gastar mais tempo codificando a lógica em cada serviço.

Insights do nosso time

Obtenha insights do nosso time de especialistas sobre metodologias de desenvolvimento de software, linguagens, tecnologia e muito mais para apoiar o seu time na operação e estratégia de negócio.