trilha

System Design/04 - Cloud Design Patterns/Design & Implementation2 min

Gateway Aggregation

Perguntas-guia
  • Que problema isso resolve?
  • Quando usar / quando NÃO usar?
  • Qual o principal trade-off?
  • Como isso falha em produção?

Conceito

O gateway recebe uma requisição do cliente, chama vários serviços internos e devolve uma resposta composta.

cliente → GET /perfil-completo → gateway ┬→ serviço-usuarios
                                          ├→ serviço-pedidos
                                          └→ serviço-enderecos
                              ← resposta única

É o antídoto de Chatty IO na fronteira: em vez de o cliente fazer N chamadas pela internet, o gateway faz N chamadas pela rede interna e devolve uma.

Trade-offs

O ganho é maior quanto pior a rede do cliente. Três chamadas de um app móvel em 4G custam três handshakes TLS e três latências de 100 ms; internamente, custam 2 ms cada e podem ser paralelas.

Os custos:

A latência é a da chamada mais lenta. Se um dos serviços degrada, a resposta inteira degrada — por isso o padrão exige timeout individual e uma política de resposta parcial: melhor devolver o perfil sem os pedidos do que não devolver nada.

O gateway acumula conhecimento. Ele passa a saber quais serviços existem e como compor a resposta — um acoplamento que precisa ser mantido a cada mudança de contrato.

Complexidade de falha. Dois de três serviços responderam: o que devolver? Códigos de status parciais, campos nulos e flags de degradação viram parte do contrato.

E o alerta recorrente: agregação não é lugar de lógica de negócio. O gateway compõe respostas; ele não decide regras.

Quando cada tipo de cliente precisa de uma composição diferente, o padrão evolui para Backends for Frontend — um agregador por cliente, em vez de um agregador universal que tenta servir a todos.

Exemplo prático

Uma tela de perfil em app móvel:

sem agregação: 3 chamadas × 120 ms (4G, sequenciais) = 360 ms
com agregação: 1 chamada  × 130 ms                    = 130 ms
                (as 3 internas: 5 ms, em paralelo)

Quase três vezes mais rápido, e com um terço do custo de bateria e de dados.

O detalhe que fecha o desenho: cada chamada interna tem timeout de 50 ms e um valor padrão. Se enderecos não responder, a tela abre sem o endereço em vez de não abrir — degradação em vez de falha.

Relacionado


Parte de Design & Implementation · roadmap.sh/system-design

Buscar

Busca por título, seção e texto das notas