Pular para o conteúdo

apps/patterns/chaos-engineering

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

Chaos Engineering

Injeção controlada de falha para provar que as defesas funcionam sob condição real, não só na configuração. Cada experimento declara uma hipótese de steady-state, mede a baseline, injeta falha numa fração do tráfego e se desliga sozinho se passar do limite de segurança. Use antes de confiar num timeout, retry ou circuit breaker em produção.

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

Cenário

Banco digital valida o caminho do PIX antes de um pico. A hipótese: 99% dos PIX respondem em até 300 ms e pelo menos 95% liquidam. Latência de 200 ms em 10% do tráfego mantém a hipótese; erro em 10% a viola (o achado: falta retry); blackhole em 60% rompe o piso de segurança e o experimento faz rollback sozinho, provando que o timeout de 250 ms do cliente existe.

Planta

Sequência
10/10
alt[piso rompido]loop[cada PIX do experimento]alt[atingido][poupado]define hipótese: p99 ≤ 300 ms e sucesso ≥ 95%1baseline: 40 PIX sem falha2configura falha e blast radius3sorteio abaixo do blast radius?4latência, erro ou blackhole5POST /pix real6settled7janela de 10 abaixo do piso de 60%?8rollback automático: enabled = false9hipótese mantida ou violada10demo.ts (engenheiro de caos)InjectorChaospayment API (Elysia :4116)
10

10 passos — reproduza para seguir o fluxo

Como funciona

6 passos

Injeta falha controlada e prova resiliência.

Esconde cada passo: lembre antes de tocar para revelar.

Vocabulário compartilhado

  1. 01

    Hipótesep99 ≤ 300 ms e sucesso ≥ 95%, definida antes de qualquer injeção

  2. 02

    Baseline40 PIX reais sem falha — o "normal" contra o qual o experimento é comparado

  3. 03

    Blast radiusA falha atinge só a fração configurada do tráfego; o sorteio usa semente fixa, então o experimento é reproduzível

  4. 04

    Falhaslatency atrasa e segue, error falha antes da chamada, blackhole aceita e nunca responde — só o timeout do cliente encerra a espera

  5. 05

    Rollback automáticoSe a última janela de 10 chamadas cair abaixo de 60% de sucesso, o injetor é desligado sem deploy

  6. 06

    VereditoAs métricas do experimento confirmam ou violam a hipótese

apps/patterns/chaos-engineering

6 arquivos

src/

  • injector_chaos.tsInjectorChaos: falhas, blast radius, kill switch e sorteio com semente
  • experiment_chaos.tsMétricas, hipótese, piso de segurança e rollback
  • api_payment.tsAPI de pagamento atacada (porta 4116), sem código de caos
  • demo.tsdemoBaseline e três experimentos contra a API real
  • *.test.tstesteFronteira do blast radius, da hipótese e do piso de segurança

./

  • stryker.config.jsoninfraMutação sobre o injetor e o experimento

Executar · só Bun

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

Testes: bun run test; mutação: bun run test:mutation.

Requisitos
Bun

Por que se relacionam

Teste rápido

Qual padrão vem antes de Chaos Engineering?

Próximo projeto · Padrões FundamentaisCircuit Breaker
Esc

↑ ↓ navegarEnter abrir191 resultados