Pular para o conteúdo

apps/api/facade

118 · API & Integração · ≈ 5 min de estudo

Facade

Uma interface única na frente de vários subsistemas: o cliente faz uma chamada e a facade conversa com cada serviço, em paralelo, e devolve uma resposta só. Ela não acrescenta funcionalidade — só esconde quantos serviços existem, onde estão e o formato de cada rota. Use quando o cliente combina dois ou mais subsistemas só para montar uma resposta.

Veja também: api/bff — quando cada tipo de cliente precisa de um contrato próprio.

passos
5
arquivos
2
testes
0
tecnologias
3
Lógica puraTypeScriptBunElysia
Baixar cartão

Cenário

O portal do banco digital mostra na mesma página conta e saldo, últimos lançamentos, limite do cartão, investimentos e avisos. São quatro serviços, cada um com endereço e forma de rota própria. Sem facade, o portal precisa conhecer todos e fazer cinco chamadas; com ela, faz uma. O cabeçalho do app só precisa de nome e saldo, e usa uma facade enxuta sobre o mesmo subsistema de contas.

Planta

Fluxo
6/6
Portal do bancoportal-facade :4040accounts :4041cards :4042investments :4043notifications :4044GET /portal/:idGET /mobile/:id/accounts/:ide /statement/credit/:id/positions?account=/inbox/:id
6

6 passos — reproduza para seguir o fluxo

Como funciona

5 passos

Interface simples sobre subsistema complexo.

Esconde cada passo: lembre antes de tocar para revelar.

Vocabulário compartilhado

  1. 01

    facadePortalCreate recebe os endereços dos quatro subsistemas; o cliente só conhece a facade

  2. 02

    portalSummary dispara as cinco chamadas independentes com Promise.all — a latência é a da mais lenta, não a soma

  3. 03

    Cada chamada tem o próprio AbortSignal.timeout: subsistema travado falha em 800 ms com 504 e o nome dele, em vez de prender o portal

  4. 04

    mobileSummary é a facade enxuta: consulta só contas e funciona com os outros subsistemas fora do ar

  5. 05

    A facade só orquestra e agrega; todo valor vem do subsistema como está

Trade-offs

O que se ganha, o que se paga

3 vantagenscada ganho tem um preço3 custos

Vantagens

  • Uma chamada em vez de cinco

  • Cliente sem acoplamento a endereço e rota de cada serviço

  • Latência da chamada mais lenta, não da soma

Custos

  • Mais um ponto de falha a monitorar

  • Resposta única serve mal clientes com necessidades diferentes — aí, BFF

  • Sem disciplina, vira objeto deus com lógica de negócio

apps/api/facade

2 arquivos

src/

  • facade_portal.tsA facade: chamadas em paralelo com timeout, agregação e rotas /portal e /mobile
  • subsystem_bank.tsOs quatro subsistemas, cada um com sua forma de rota

Executar · só Bun

  1. bun install# dependências
  2. bun run demo# roda o cenário
  3. bun run test# testes unitários
Requisitos
Bun

Por que se relacionam

Teste rápido

Qual destes combina com Facade Pattern?

Próximo projeto · API & IntegraçãoService Mesh
Esc

↑ ↓ navegarEnter abrir191 resultados