Software · Arquitetura de Software
Service Mesh com Istio: Sidecar, Ambient e o Custo da Malha
Como uma service mesh governa tráfego entre microsserviços, aplica mTLS e produz telemetria, comparando os modos sidecar e ambient do Istio sem esconder seus custos operacionais.
Quando a rede vira parte da arquitetura
Em uma aplicação com poucos serviços, cada equipe ainda consegue configurar timeouts, certificados e endereços diretamente no código. Quando dezenas de serviços passam a conversar entre si, essa lógica se repete em linguagens diferentes. Uma política exige alterações em vários repositórios; uma chamada lenta atravessa a plataforma sem deixar um rastro comum; um certificado expirado interrompe um caminho inteiro.
Uma service mesh, ou malha de serviços, desloca essas responsabilidades para uma camada de infraestrutura dedicada ao tráfego leste-oeste. A aplicação continua implementando o negócio, enquanto a malha observa e governa conexões entre workloads. Ela não corrige contratos ruins nem elimina falhas distribuídas, mas oferece um ponto uniforme para identidade, criptografia, roteamento e telemetria.
Control plane e data plane
O control plane recebe a configuração declarativa, valida políticas e distribui instruções. O data plane intercepta o tráfego e executa essas decisões no caminho de cada conexão. No Istio, o istiod exerce o papel de controle; proxies ou túneis próximos às cargas formam o plano de dados.
flowchart LR
Operacao["Equipe de plataforma"] --> Controle["Control plane<br/>políticas e identidades"]
Controle --> P1["Proxy ou túnel A"]
Controle --> P2["Proxy ou túnel B"]
ServicoA["Serviço A"] --> P1
P1 --> P2
P2 --> ServicoB["Serviço B"]
P1 --> Telemetria["Métricas, logs e traces"]
P2 --> Telemetria
Essa separação permite alterar uma regra de autorização sem recompilar todos os serviços. A configuração central, porém, amplia o raio de impacto de um erro. Políticas da malha também precisam de revisão, teste automatizado e implantação gradual.
Segurança, tráfego e observabilidade
O primeiro ganho costuma ser uma identidade verificável para cada workload. Ela sustenta mTLS, no qual os dois lados apresentam certificados e a comunicação é cifrada. Políticas podem autorizar uma identidade específica, em vez de confiar apenas em IPs transitórios.
O segundo ganho é o controle consistente de tráfego: timeouts, tentativas limitadas, circuit breaking, divisão percentual e espelhamento de requisições. Isso ajuda em lançamentos canário e migrações, mas retries indiscriminados podem repetir uma operação não idempotente ou multiplicar carga durante uma falha.
O terceiro ganho é a telemetria homogênea. Como o plano de dados enxerga conexões, ele produz métricas de volume, erros e latência sem depender do framework. Essa visão não conhece sozinha o significado da transação; traces completos e indicadores de negócio continuam exigindo contexto propagado e instrumentação da aplicação.
Sidecar e ambient mesh
No modo sidecar, um proxy acompanha cada workload. Ele oferece isolamento e controle fino de camada 7, mas adiciona CPU, memória, inicialização e atualização por pod. No modo ambient, um túnel compartilhado no nó fornece conectividade segura de camada 4; políticas e roteamento de camada 7 entram por waypoint proxies quando necessários.
A documentação do Istio sobre modos de data plane descreve os dois modelos, enquanto a visão geral do ambient mesh explica a divisão entre túnel seguro e waypoint.
| Critério | Sidecar | Ambient |
|---|---|---|
| Unidade de proxy | Um por workload | Túnel por nó e waypoint opcional |
| Adoção | Injeção e reinício de pods | Entrada incremental por namespace |
| Controle L7 | Próximo de cada workload | Concentrado em waypoints |
| Custo base | Cresce com o número de pods | Compartilhado no nó |
| Raio de falha | Tende a ficar no pod | Exige cuidado com componentes compartilhados |
Ambient não significa “sidecar gratuito”. Ele muda onde a capacidade é executada e como escala. A escolha depende da densidade de pods, necessidade de inspeção L7, compatibilidade e maturidade da operação.
Service mesh e API Gateway ocupam fronteiras diferentes
Um API Gateway governa principalmente o tráfego norte-sul: clientes entram pela borda, onde autenticação, limitação e roteamento de APIs são aplicados. A service mesh governa principalmente chamadas internas. Os dois podem coexistir.
Também não convém usar a malha para esconder serviços excessivamente conversadores ou uma cadeia frágil de chamadas síncronas. Criptografar e observar o acoplamento não o remove.
Quando a complexidade compensa
A malha faz sentido quando há muitos workloads, stacks diferentes e requisitos uniformes de identidade, auditoria ou tráfego progressivo. Para um sistema pequeno, bibliotecas bem configuradas e observabilidade no código podem entregar mais valor com menor superfície operacional.
A decisão madura não pergunta apenas quais recursos a service mesh oferece. Ela mede se os problemas atuais justificam adicionar uma camada crítica ao caminho de todas as requisições e se existe uma equipe capaz de operá-la como produto de plataforma.