Pular para o conteúdo

apps/patterns/fallback-pattern

017 · Padrões Fundamentais · ≈ 5 min de estudo

Fallback Pattern

Quando um serviço essencial falha, tenta alternativas em ordem, cada uma mais conservadora que a anterior, até uma responder. O último nível nunca é silêncio: é um erro explícito com o motivo de cada nível.

passos
6
arquivos
4
teste
1
tecnologias
3
Lógica puraTypeScriptBunElysia
Baixar cartão

Cenário

Um banco digital vende dólar ao cliente e precisa da cotação USD-BRL. Os dois provedores de cotação são processos Elysia reais (api_quote.ts, portas 4111 e 4112) que o demo derruba em sequência. Cotação é leitura: aceita fallback para cache, desde que com margem conservadora. Transferência PIX, ao contrário, não aceita fallback — por isso o padrão aparece aqui numa consulta, não numa escrita.

Planta

Fluxo
7/7
Cotação USD-BRL paracompra de dólarProvedor primárioresponde?Cotação ao vivo(source: primary)Provedor secundárioresponde?Cotação ao vivo(source: secondary)Última cotação aindadentro do TTL?Cotação em cache + spreadde 0,5% (source: cache)Compra recusada com omotivo de cada nívelsim503sim503simnão
7

7 passos — reproduza para seguir o fluxo

Como funciona

6 passos

Principal falha, a alternativa responde.

Esconde cada passo: lembre antes de tocar para revelar.

  1. 01

    Níveis em ordemfallbackRun tenta primário, secundário e cache, e para no primeiro que responde

  2. 02

    Chamada realPrimário e secundário são fetch() a processos separados; 503 conta como falha

  3. 03

    Cache atualizado pela resposta ao vivoToda cotação ao vivo vira a última conhecida em StoreQuote

  4. 04

    Cache conservadorSó vale dentro do TTL e sai com spread de 0,5%, arredondado contra a vantagem do cliente

  5. 05

    Falha explícitaSem nenhum nível, ErrorFallbackUnavailable leva o motivo de cada um

  6. 06

    Nível expostoA resposta traz source, e o log mostra qual nível atendeu — degradação nunca é silenciosa

apps/patterns/fallback-pattern

4 arquivos

src/

  • fallback_quote.tsfallbackRun, StoreQuote (última cotação com TTL), quoteSpreadApply e quoteResolve
  • api_quote.tsProvedor de cotação Elysia, primário (4111) ou secundário (4112), com PUT /mode para derrubá-lo
  • demo.tsdemoSobe os dois provedores e derruba um de cada vez até a compra ser recusada
  • fallback_quote.test.tstesteOrdem dos níveis, fronteira do TTL, spread e fallback contra provedores reais

Executar · só Bun

  1. bun install# dependências
  2. bun run demo# roda o cenário

Testes: bun run test.

Requisitos
Bun

Por que se relacionam

Teste rápido

Qual é o próximo passo depois de Fallback Pattern?

Próximo projeto · Padrões FundamentaisGraceful Degradation
Esc

↑ ↓ navegarEnter abrir191 resultados