Service Meshes no K8s: A Conta Chega

Ambientes Kubernetes com muitos microservices estão recorrendo cada vez mais a service meshes como Istio e Linkerd para fornecer criptografia mTLS, observabilidade unificada, modelagem de tráfego e retries — mas muitos engenheiros questionam se a complexidade, fragilidade e custo extras se justificam. Os comentaristas argumentam que, para a maioria das organizações, a rede básica do Kubernetes, ingress controllers ou soluções baseadas em SDN são suficientes, e que meshes devem ser tratados como uma ferramenta especializada para sistemas grandes, complexos ou altamente regulados, e não como padrão. Um tema recorrente é que as escolhas de arquitetura muitas vezes são guiadas por disfunções organizacionais e checklists de segurança tanto quanto por necessidades técnicas reais.

Escopo da Discussão

  • O foco está em service meshes do Kubernetes (Istio, Linkerd, etc.), como são usados na prática e se valem a complexidade e o custo.
  • Muitos comentários ampliam a discussão para microservices vs monoliths, TLS/mTLS e fatores organizacionais.

Microservices vs Monoliths

  • Microservices aumentam o tráfego intra-cluster; isso é, em grande parte, consequência da arquitetura, não dos meshes em si.
  • Pontos a favor de microservices:
    • Permitem implantação, versionamento e escalonamento independentes por equipe quando se chega a “centenas de engenheiros” ou muitos produtos.
    • Permitem que equipes isolem dependências e runtimes em conflito (por exemplo, conflitos de versão de Python/pandas/numpy).
  • Pontos céticos:
    • Pouquíssimos sistemas realmente precisam de microservices; muitas vezes eles compensam problemas organizacionais ou ego.
    • O conselho forte é começar com um monolith ou “modulith” e separar apenas quando a escala ou conflitos de dependência exigirem.

O que os Service Meshes Prometem

  • Benefícios comumente citados:
    • Métricas e observabilidade uniformes entre linguagens e equipes.
    • mTLS em todo o cluster e “zero trust” sem que cada equipe precise aprender TLS/PKI.
    • Modelagem de tráfego: retries com budgets, timeouts, rate limits, implantações canary/blue-green, roteamento refinado.
    • Debugging mais fácil (captura de tráfego por pod, visibilidade L7).
  • Alguns dizem que meshes são a única forma prática de fazer mTLS “em escala” (por exemplo, para ambientes FedRAMP).

Complexidade, Custo e Overengineering

  • Há amplo consenso de que o Istio em particular é complexo, pesado em recursos e difícil de depurar; a documentação é vista como confusa quando surgem problemas em produção.
  • Há relatos de meshes consumindo CPU significativa por node; em clusters pequenos, eles podem competir com as workloads.
  • Muitos argumentam que Kubernetes, mais ingress, NetworkPolicies e um CNI (muitas vezes com tracing/observability via eBPF) já cobrem a maior parte das necessidades.
  • Os meshes são vistos como solução para problemas organizacionais (TLS/métricas inconsistentes) mais do que para restrições técnicas difíceis.

Tráfego, Performance e Protocolos

  • Proxies sidecar adicionam hops extras, mas muitas vezes apenas um hop real de rede; outras cópias estão em memória no mesmo node.
  • A maioria dos setups do mundo real ainda usa HTTP/JSON; alguns usam gRPC, GraphQL, SOAP.
  • Vários observam que largura de banda raramente é o gargalo; tempo de engenharia é.

Debate sobre Segurança e TLS/mTLS

  • Um lado: cada serviço deveria simplesmente aprender TLS e usar PKI interna — uma vez entendido, é mais simples e evita o overhead do mesh.
  • Outro lado: desenvolvedores configuram TLS incorretamente com frequência (ou desativam a verificação); centralizar o gerenciamento de certificados e a aplicação de políticas em um mesh é mais seguro e sustentável.
  • Há discordância sobre se a criptografia intra-cluster mitiga de forma significativa ameaças realistas versus questões de segurança mais urgentes.

Experiência do Desenvolvedor e Dinâmicas Organizacionais

  • Desenvolvedores de aplicação reclamam da proliferação de YAML e de detalhes de infraestrutura “vazando” para o trabalho deles; querem um fluxo simples de “deploy this app”.
  • Equipes de infra/SREs respondem que abstrações vazam por natureza; times bons padronizam plataformas para que um serviço “hello world” possa ser implantado rapidamente, mas a complexidade para HA, segurança e compliance não desaparece.
  • Muitos alertam contra adotar Kubernetes e meshes por padrão ou por razões de currículo/“religião”; eles devem ser ferramentas “às vezes”, adicionadas apenas quando seus benefícios específicos forem claramente necessários.