Pular para o conteúdo principal

Gateway Offloading

Descrição​

O padrão Gateway Offloading transfere para um gateway (proxy reverso) funcionalidades compartilhadas ou especializadas que, de outra forma, precisariam ser implementadas e mantidas em cada serviço de backend. São as chamadas preocupações transversais (cross-cutting concerns): terminação TLS e gestão de certificados voltados ao cliente, autenticação, limitação de taxa (throttling), registro de requisições, monitoramento, tradução de protocolos e até redirecionamentos estáticos de URLs legadas.

O gateway fica na borda do sistema, recebe as conexões dos clientes, aplica essas capacidades de forma centralizada e encaminha a requisição ao backend — idealmente por uma nova conexão criptografada. Assim, os serviços de backend ficam mais simples e focados na lógica de negócio, enquanto equipes especializadas (por exemplo, de segurança ou de rede) cuidam das funcionalidades centralizadas.

A lógica de negócio nunca deve ser transferida para o gateway: ele concentra apenas funções genéricas, compartilhadas por vários serviços ou rotas.

Problemas que resolve​

  • Duplicação da configuração, gestão e manutenção de funcionalidades comuns em todas as implantações de cada serviço.
  • Risco de erro de implantação ao propagar atualizações de um recurso compartilhado (por exemplo, renovar um certificado) por muitas instâncias.
  • Necessidade de conhecimento altamente especializado (validação de tokens, criptografia, gestão de certificados TLS) espalhada entre todas as equipes de produto.
  • Dificuldade de implementar de forma consistente autenticação, autorização, logging, monitoramento e throttling em um grande número de serviços.
  • Falta de uma linha de base de observabilidade quando algum serviço não está corretamente instrumentado.
  • Tratamento de URLs legadas espalhado pelo pipeline de cada aplicação.

Quando usar​

  • Quando várias implantações compartilham uma preocupação comum, como certificados TLS ou criptografia.
  • Quando uma funcionalidade comum entre aplicações tem requisitos de recursos distintos (memória, armazenamento, conexões de rede) e se beneficia de ser escalada separadamente.
  • Quando se deseja transferir para uma equipe especializada a responsabilidade por segurança de rede, throttling ou outras preocupações de borda.
  • Quando se quer padronizar políticas (por exemplo, WAF, política de TLS, limites de taxa) em um único ponto de controle.

Quando evitar​

  • Quando o gateway precisaria conter lógica ou regras de roteamento específicas de cada serviço, acoplando mudanças do backend a mudanças na configuração do gateway e reduzindo a independência de implantação.
  • Quando a funcionalidade transferida é leve e a carga de trabalho é muito sensível à latência, de modo que o salto adicional de rede não compensa.
  • Quando a centralização cria um gargalo de gestão de mudanças, por exemplo se o ciclo de release da equipe do gateway é mais lento que o das equipes de serviço.

Trade-offs​

GanhoCusto / Risco
Serviços de backend mais simples, sem código de infraestrutura duplicadoO gateway torna-se ponto único de falha se não houver múltiplas instâncias e alta disponibilidade
Gestão de certificados, políticas e configuração em um único lugarConcentração da responsabilidade operacional em uma equipe e um componente compartilhado
Segurança consistente (WAF, autenticação, política de TLS)O gateway é um alvo de alto valor: um comprometimento expõe todos os serviços a jusante
Observabilidade de base mesmo para serviços pouco instrumentadosSalto de rede extra e tempo de processamento adicional em cada requisição
Menor consumo de recursos por nó e custo consolidadoPrecisa ser dimensionado para picos, senão vira gargalo para todos os serviços

Considerações adicionais:

  • Alta disponibilidade: execute várias instâncias e use connection draining ou desligamento gracioso para não derrubar requisições em andamento.
  • Prevenção de bypass: configure os backends para aceitarem tráfego somente pelo gateway, caso contrário autenticação, throttling e inspeção podem ser contornados.
  • TLS ponta a ponta: ao terminar o TLS no gateway, restabeleça TLS até o backend; trate todas as redes como não confiáveis e mantenha um processo de emissão, rotação e revogação dos certificados de backend.
  • Propagação de identidade: defina se o backend autoriza o chamador original, a identidade do gateway ou ambos; autentique o gateway no backend e não confie em cabeçalhos encaminhados sem verificação.
  • Contexto do cliente: IP de origem, protocolo e nome de host originais se perdem a menos que o gateway os encaminhe explicitamente (por exemplo, cabeçalhos X-Forwarded-*).
  • Rastreabilidade: gere IDs de correlação para acompanhar transações entre gateway e serviços.
  • Latência: connection pooling e conexões keep-alive com os backends reduzem parcialmente o custo do salto extra.
  • Redirecionamentos: corresponda apenas às URLs legadas pretendidas; redirecionamentos que dependem de estado de negócio ou autorização ficam na aplicação.

Diagrama​

O cliente se conecta ao gateway, que termina o TLS, aplica as capacidades compartilhadas (autenticação, inspeção, limitação de taxa, logging) e abre novas conexões criptografadas com os serviços de backend, que ficam livres dessas responsabilidades. Como exemplo pontual, um serviço como o Azure Application Gateway com WAF pode desempenhar esse papel.

Padrões relacionados​

  • Gateway Routing — usa o mesmo gateway para rotear requisições a múltiplos serviços por um único endpoint.
  • Gateway Aggregation — o gateway combina várias chamadas de backend em uma única resposta ao cliente.
  • Backends for Frontends — gateways dedicados por tipo de cliente, que também podem concentrar funções transferidas.
  • Gatekeeper — um host dedicado que valida e sanitiza requisições antes de repassá-las, reforçando a segurança na borda.
  • Throttling — uma das funcionalidades mais comuns de ser transferida para o gateway.
  • Rate Limiting — controle de taxa de chamadas que pode ser aplicado de forma centralizada.
  • Federated Identity — a autenticação delegada a um provedor de identidade costuma ser validada no gateway.
  • Sidecar — alternativa que transfere preocupações transversais para um processo ao lado de cada serviço, em vez de um ponto central.
  • Ambassador — proxy que transfere tarefas de conectividade do lado do cliente, complementar ao gateway na borda.

Referência​