A ascensão dos microsserviços baseados em proxy: revelando a arquitetura
A essência dos microsserviços baseados em proxy
Arquiteturas de microsserviços baseadas em proxy interpõem um proxy de rede leve entre instâncias de serviço e o mundo externo — sejam outros serviços ou clientes. Esse proxy, frequentemente chamado de "sidecar", é mais do que um mero guarda de trânsito: é a sentinela silenciosa, interceptando, inspecionando e transformando solicitações à medida que elas deslizam pela malha efêmera dos microsserviços.
Por que adotar essa abordagem?
- Separação de Preocupações: Descarregar preocupações transversais (segurança, observabilidade, confiabilidade) da lógica de negócios
- Aplicação uniforme de políticas: Centralizar o controle de acesso, limitação de taxa e interrupção de circuito
- Padrões de Resiliência: Injete novas tentativas, fallbacks e tempos limite de forma transparente
- Observabilidade: Capture rastros e métricas sem modificação de código
- Segurança Zero-Trust: Criptografe todo o tráfego e verifique as identidades automaticamente
Anatomia arquitetônica: como os proxies incorporam o ethos dos microsserviços
Padrão Sidecar
Cada pod de serviço é acompanhado por um processo de proxy — Envoy, Linkerd ou HAProxy são escolhas comuns. O tráfego destinado ao serviço é roteado pelo sidecar, que aplica políticas de rede, coleta telemetria e gerencia a criptografia mTLS.
Exemplo de manifesto (Kubernetes + Istio):
apiVersion: v1 tipo: Pod metadados: nome: poets-service especificação: contêineres: - nome: poets-app imagem: registry.example.com/poets:latest - nome: istio-proxy imagem: docker.io/istio/proxyv2:1.18.0 argumentos: ["proxy", "sidecar"]
O Istio injeta automaticamente o istio-proxy
sidecar, tecendo uma tapeçaria invisível de controle em torno do seu serviço.
Service Mesh: A rede como um organismo vivo
Uma malha de serviço, como Istio, Linkerd, ou Cônsul Connect, orquestra a configuração e o ciclo de vida desses proxies, tornando a rede de serviço a serviço programável e observável.
Recurso:
– Documentação oficial do Envoy Proxy
– Arquitetura Linkerd
Vantagens práticas: uma tabela de compensações
Recurso | Microsserviços baseados em proxy | Microsserviços tradicionais |
---|---|---|
Rastreamento Distribuído | Nativo, transparente | Instrumentação manual |
mTLS em todos os lugares | Automatizado | Responsabilidade da aplicação |
Quebra de circuito | Declarativo, baseado em políticas | Explícito no código |
Limitação de taxa | Centralizado, dinâmico | Descentralizado, estático |
Lançamentos Canary | Divisão de tráfego no proxy | Gerenciado pelo balanceador de carga |
Descoberta de serviço | Integrado, dinâmico | Registro externo necessário |
Isolamento de falhas | Por solicitação, nível de proxy | Nível de código ou infraestrutura |
Esta tabela sussurra sobre um mundo onde a rede não é mais um fardo, mas uma tela para inovação.
Padrões Acionáveis: Implementando Microsserviços Baseados em Proxy
1. Implantando um proxy sidecar
No Kubernetes, a injeção sidecar pode ser automatizada com ferramentas como Istio ou Linkerd.
Passo a passo: Exemplo do Istio
- Instalar o Istio:
bater
curl -L https://istio.io/downloadIstio | sh -
cd istio-*
exportar PATH=$PWD/bin:$PATH
istioctl install --set perfil=demo -y
kubectl rótulo namespace padrão istio-injection=enabled - Implante seu serviço:
“`inhame
apiVersão: v1
tipo: Serviço
metadados:
nome: poetas-app
especificação:
portas:- porta: 80
nome: http
seletor:
aplicativo: poetas
- porta: 80
apiVersão: apps/v1
tipo: Implantação
metadados:
nome: poetas-implantação
especificação:
réplicas: 1
seletor:
Etiquetas de correspondência:
aplicativo: poetas
modelo:
metadados:
rótulos:
aplicativo: poetas
especificação:
recipientes:
– nome: poets-app
imagem: registry.example.com/poets:latest
“`
A injeção de sidecar adicionará automaticamente o proxy Envoy; chega de repetições repetitivas e trabalhosas.
- Aplicar Política de Tráfego:
inhame
apiVersão: networking.istio.io/v1alpha3
tipo: DestinationRule
metadados:
nome: poetas-destino
especificação:
anfitrião: poets-app
Política de tráfego:
connectionPool:
TCP:
maxConnections: 1
2. Observabilidade com zero alterações no código
Uma vez que os proxies estejam em vigor, a telemetria flui como vinho em uma festa francesa. O Istio e o Linkerd expõem métricas por meio de endpoints do Prometheus, prontos para Grafana painéis.
Métricas de busca:
kubectl -n istio-system port-forward svc/prometheus 9090 # Abra http://localhost:9090 para consultar métricas
3. Aplicação do mTLS sem intervenção do desenvolvedor
Configure a autenticação de pares e as regras de destino, e a malha criptografará toda a comunicação entre serviços.
Exemplo de autenticação de pares do Istio:
apiVersion: security.istio.io/v1beta1 tipo: PeerAuthentication metadados: nome: padrão namespace: padrão especificação: mtls: modo: STRICT
Não é mais necessário criar túneis TLS manualmente em cada serviço.
Exemplo de nível de código: quebra de circuito sem código
DestinationRule (Istio) para interrupção de circuito:
apiVersion: networking.istio.io/v1alpha3 kind: DestinationRule metadata: name: circuit-breaker spec: host: poets-app trafficPolicy: outlierDetection: consecutive5xxErrors: 1 interval: 1s baseEjectionTime: 30s maxEjectionPercent: 100
Este encantamento YML confere resiliência ao seu serviço, sem necessidade de alterações no código.
Quando não usar microsserviços baseados em proxy
Cenário | Malha baseada em proxy | Alternativa mais simples |
---|---|---|
< 5 serviços, baixa complexidade | Sobrecarga | Comunicação direta |
Serviços de ponta, somente voltados ao público | Desnecessário | Gateway de API |
Envs com recursos altamente limitados | Pode ser pesado | Proxies leves |
Leituras e recursos adicionais
- Conceitos de segurança do Istio
- Cadeia de Filtros Proxy Envoy
- Comparação entre Linkerd e Istio
- Malha de serviço Consul Connect
O pulso da nuvem moderna
Arquiteturas de microsserviços baseadas em proxy, em sua intrincada coreografia de proxies e políticas, exemplificam a busca da era digital por ordem e criatividade. A rede, antes um submundo obscuro, agora se torna um palco — cada proxy, um ator, cada solicitação, um verso fugaz na poesia dos sistemas distribuídos.
Comentários (0)
Ainda não há comentários aqui, você pode ser o primeiro!