Service Mesh

O que você precisa saber antes de se jogar nessa

3 min readFeb 18, 2021

--

Se você chegou até essa página é porque Istio, Envoy e Linkerd são palavras que já passaram pela sua rede e, aqui no Medium, o assunto rende bastante. São inúmeros os artigos falando sobre como e porque você deve usar Service Mesh. Porém, como poucos abordam os pontos que devem ser analisados antes de se adotar Service Mesh, resolvi fazer este artigo para jogar uma luz sobre o tema.

Nível de maturidade

Começo por esse ponto, porque talvez seja o mais difícil de enxergar (ou até mesmo de assumir). Olhando para seu ambiente Kubernetes e time, você acredita estar em um grau de maturidade suficientemente avançado para adicionar mais complexidade à gestão da Infraestrutura?

O uso de Service Mesh traz uma série de benefícios, como o controle de tráfego interno, autenticação entre microsserviços e segurança, mas também acrescenta complexidade e maior necessidade de manutenção ao ambiente. Às vezes, é melhor pensar no status em que estão antes de partir para uma Service Mesh. Se questionar se está pronto para isso, já é um grande passo.

Aplicações “by the book”

Outra questão para se levar em conta é avaliar se as suas aplicações estão sendo desenvolvidas de acordo com os paradigmas de microsserviços. Se esse for o caso, dá para tirar muito mais proveito das features de uma Service Mesh, porque com aplicações menores e responsabilidades bem definidas, você poderá utilizar features como autenticação e autorização, por exemplo. Caso contrário, o time deve entender que precisará de mais esforço para desenvolver essas funcionalidades “em casa”, o que traz mais trabalho e tempo consumido.

Abro um parêntese para dizer que minha ideia não é defender que “só é microsserviço aquilo que segue as premissas do James Lewis e Martin Fowler”. Na verdade, sei que o desenvolvimento de software envolve muitas outras variáveis que não necessariamente se encaixam no modelinho “by the book”. Esse artigo da Jennifer Riggins fala muito bem sobre isso.

Networking

Ter conhecimento sólido de redes vai contar muito a seu favor, já que agora esta camada está muito mais perto do desenvolvimento e faz toda a diferença quando suas aplicações estão divididas em diversos serviços. Apesar de parecer abstraída, essa camada é vital para o funcionamento e entendimento da comunicação entre os componentes da implementação de Service Mesh; no caso do Istio, por exemplo, são vários.

Então, saber como tudo isso se comunica com sua Infraestrutura e o Kubernetes e, ainda, como sua aplicação pode tirar proveito das features que o Service Mesh implementa, é mais um ponto importante.

mTLS

A encriptação de ponta a ponta costuma ser a razão pela qual muitos chegam até o Service Mesh e isso faz sentido. Se suas aplicações estão quebradas em diversos serviços, melhorar a segurança do tráfego de dados é desejado ou até necessário para atender a requisitos da LGPD, por exemplo.

O Zero Trust é um outro conceito que entra nesse meio de proteção de dados e visa eliminar a simples confiança em uma aplicação somente por ela estar dentro de sua rede. A frase “never trust, always verify” resume bem essa premissa de segurança: a autenticação e autorização de comunicações, mesmo que interna.

Pode não ser engenharia de foguetes, porém, no dia a dia, lidar com mais essa “barreira” é algo que nem todo time está pronto, tem tempo ou braços suficientes para dar conta.

Custo computacional

Sabendo que “não existe almoço grátis”, acrescentar aplicações no cluster irá, no mínimo, consumir uma parte de seu poder computacional. Esse consumo deve ser levado em consideração no “capacity planning”. Por exemplo, um sidecar consome cerca de 100 MiliCores de CPU. Isso pode parecer pouco, mas multiplique pela quantidade de pods que você tem e, logo, notará que alguns CPUs estão dedicados apenas a esta tarefa. Então, vale se perguntar: tenho recursos para colocar mais essas aplicações no cluster?

Bom, deixo claro que o intuito desse texto não é desencorajar ninguém a utilizar Service Mesh, mas sim expor alguns pontos que devem ser levados em conta antes da sua implementação.

Para finalizar, fica aqui uma tabela de comparação de implementações de Service Mesh.

Se quiser trocar uma ideia sobre esse artigo, escreva para mim nos comentários, via e-mail para joao@getup.io ou no Twitter @juniorjbn.

Abraço, galera!

#ServiceMesh #Kubernetes #docker #SRE

--

--

João Brito

Blog moved to getup.io/blog - A devops enthusiast. Trying to establish myself in this crazy market that until yesterday called me a sysadmin.