Proxy: o intermediário que controla o acesso

Proxy: o intermediário que controla o acesso

Robson Rabelo - 15 de julho de 2026 - 0 visualizações

Mesma forma do Decorator, intenção oposta: as quatro caras do Proxy (virtual, proteção, remoto, cache), o Proxy nativo do JavaScript e os proxies de infraestrutura que te cercam.

À primeira vista, o Proxy parece o Decorator do artigo anterior de bigode: um objeto com a mesma interface embrulhando outro. O desenho é irmão; a intenção é oposta. O Decorator soma comportamentos ao objeto; o Proxy controla o acesso a ele: decide se, quando e como a chamada chega ao objeto real. Essa diferença de intenção gera uma família de usos próprios.

As quatro caras do Proxy

1. Proxy virtual: adiar o caro. O objeto real custa criar (conexão, arquivo gigante, modelo de ML na memória)? O proxy se apresenta no lugar e só materializa o real no primeiro uso:

class RelatorioPesadoProxy implements Relatorio {
  private real?: RelatorioPesado;

  async gerar(filtros: Filtros) {
    this.real ??= await RelatorioPesado.carregar(); // só agora, se precisar
    return this.real.gerar(filtros);
  }
}

É o lazy loading que os ORMs fazem por baixo dos panos: aquele pedido.cliente que dispara uma query na primeira leitura é um proxy, e entender isso explica tanto a mágica quanto os N+1 que ela esconde.

2. Proxy de proteção: o porteiro. Verifica permissão antes de deixar a chamada passar:

class DocumentosProtegidos implements Documentos {
  constructor(private interna: Documentos, private usuario: Usuario) {}

  async excluir(id: string) {
    if (!this.usuario.pode("documentos:excluir")) {
      throw new AcessoNegado(this.usuario.id, "documentos:excluir");
    }
    return this.interna.excluir(id);
  }
}

A autorização sai de dentro da lógica de negócio e vira camada explícita, testável isolada, e impossível de esquecer num método novo (o nº 1 do OWASP agradece).

3. Proxy remoto: o longe parecendo perto. O objeto local que representa um serviço do outro lado da rede: stubs de gRPC, clients de SDK. E o alerta clássico da computação distribuída: o proxy remoto esconde a rede, mas a rede continua lá, com timeout, retry e falha parcial que a interface bonita não mostra.

4. Proxy de cache/registro: intercepta para memorizar ou auditar. (Sim, a fronteira com o Decorator fica borrada aqui: a distinção honesta é a intenção: controlar o acesso vs enriquecer o comportamento. Não perca sono com a taxonomia; perca com o desenho.)

As quatro caras do Proxy

O Proxy que a linguagem te dá

O JavaScript tem o padrão embutido como recurso: o objeto Proxy intercepta operações de outro objeto (leitura, escrita, chamada):

const config = new Proxy(configReal, {
  get(alvo, chave) {
    if (!(chave in alvo)) throw new Error(`Config inexistente: ${String(chave)}`);
    return alvo[chave];
  },
});

config.databaseUrl;  // ok
config.databseUrl;   // 💥 erro na hora, não undefined silencioso

É assim que o Vue implementa reatividade e que bibliotecas de mock interceptam chamadas: os Signals do Angular e afins são primos conceituais dessa interceptação.

E na arquitetura, você já vive cercado deles

Reverse proxy (nginx), API Gateway, service mesh, RDS Proxy, CDN: o padrão em escala de infraestrutura: um intermediário com a mesma "interface" (HTTP, protocolo do banco) controlando acesso, cacheando e protegendo. O conceito é o mesmo do objeto; muda o tamanho.

A régua de uso

Use quando o controle de acesso é transversal e esquecível (proteção), o custo de criação merece adiamento (virtual), ou a distância precisa de representação local (remoto). Evite quando é indireção sem decisão: proxy que só repassa tudo é camada de cerimônia, e proxy demais na pilha faz o depurador chorar.

No próximo artigo da série: o Observer, o padrão por trás de todo evento que você já disparou. Aplicar esse catálogo com intenção é parte do olhar do nosso serviço de Arquitetura de Software.

Sua autorização está espalhada por 40 ifs dentro do domínio? Descreva para a IA da Rabelo Digital, aqui no canto da tela, e ela desenha o proxy de proteção equivalente. Sem formulário, sem espera.


Leia também

Compartilhar:

Deixe um Comentário

Categorias

Posts Recentes