Orionextrair ou não extrair
Abertura

Extrairou não extrair?

Isolar Notificações no Orion para que falhas no envio de avisos não interrompam a compra. O que a rede custa, e o que de fato desacopla.

Use → ou espaço para avançar · ← volta · F tela cheia · T tema

O cenário

Orion: 10 componentes, 17 dependências

O marketplace didático da disciplina. Cada seta A → B quer dizer que A depende de B.

1

O candidato à extração é Notificações. Os outros nove componentes ficam juntos.

2

Notificações recebe quatro entradas: Pedidos, Pagamentos, Logística e Integrações.

!

O Mini-Orion já trata algumas falhas com uma fila em memória, então a necessidade de extrair ainda não está comprovada. Partimos da hipótese de que a notificação pode chegar depois.

Hipóteses de trabalho

Uma rede mais lenta, mas que perde menos

Mudamos as hipóteses do professor para ver se as conclusões se mantêm. São hipóteses didáticas, não medições do Orion.

Valores lidos de meu_ensaio.py e meu_quantum.py quando o servidor sobe. Na Parte 2 a falha por chamada também é 1%, e as fórmulas supõem falhas independentes.

Parte 1 · O problema

A cobrança acontece, a resposta se perde

Da Aula 16: do lado do Checkout, “não recebi resposta” não quer dizer “não cobrou”.

1

O Pagamentos cobra, mas a resposta se perde na rede. O Checkout espera o timeout de 1 s.

2

Repetir sem chave: o Pagamentos vê um pedido novo e cobra de novo.

3

Repetir com a mesma chave de idempotência: o Pagamentos reconhece a chave e devolve o resultado anterior, sem cobrar outra vez.

Parte 1 · Antes de rodar

A previsão que registramos antes

Acrescentamos uma política nova: três tentativas sem chave. O que muda em relação a duas?

Compras com cobrança duplicada
Mais

Uma cobrança já feita pode ser repetida mais uma vez.

Resultados incertos
Menos

A tentativa a mais pode recuperar uma resposta.

Previsão preservada no registro anterior à execução personalizada. Os próximos slides mostram se ela se confirma.

Parte 1 · O ensaio

2.000 compras, uma a uma

Cada quadrado é uma compra simulada com o código real do Mini-Orion (semente 42). Passe o mouse para ver os detalhes.

Parte 1 · Resultado

Sem chave, repetir troca um erro por outro

Nosso cenário (40 ms · 700 ms · 1%)Base do professor (20 ms · 400 ms · 2%)

Compras com cobrança duplicada

Compras com mais de uma cobrança aprovada.

Resultados incertos

Terminam sem saber se cobrou, depois de esgotar as tentativas.

✓Previsão confirmada: de 2 para 3 tentativas sem chave, as duplicações sobem de 20 para 21 e os incertos caem de 2 para 1.
Parte 1 · Dez sementes

Os sorteios mudam, o problema não

A mesma política (duas tentativas sem chave) com sementes de 1 a 10. Cada ponto se move da base do professor até o nosso cenário.

Base do professorNosso cenário

Tempo no P95 (ms)

Rede mais lenta: o P95 sobe em todas as sementes.

Compras com cobrança duplicada (%)

Menos falhas, mas nenhuma semente zera as duplicações.

Na base, de 0,85% a 1,35% de duplicações; no nosso cenário, de 0,75% a 1,45%. Mudar as hipóteses não resolve a repetição. Só a chave resolve.

Parte 1 · Decisão

Até três tentativas com a mesma chave

Mais esperaNo pior caso, a compra leva 3 s.
Armazenar as chavesO Pagamentos precisa lembrar o que já processou.
O caso incerto continuaAinda exige consulta ou conciliação.
Para Notificações, a lição é que repetir um envio também pode repetir seu efeito: o cliente pode receber o mesmo aviso duas vezes.

O ensaio não mede notificações, concorrência, persistência das chaves nem espera entre tentativas.

Parte 2 · Formas de dividir

Quatro jeitos de implantar o mesmo grafo

As caixas tracejadas são artefatos implantáveis. As setas animadas cruzam a rede.

Parte 2 · Custo para o Checkout

Cada artefato a mais tira minutos do mês

P(falha) = 1 − 0,99n A = 0,999k minutos = (1 − A) × 43.200

n = chamadas remotas diretas do Checkout · k = artefatos distintos tocados, contando o do Checkout

Isso é só o recorte direto e síncrono do Checkout, sem dependências indiretas, banco ou fila. Zero chamadas remotas diretas na extração não quer dizer risco zero no sistema.

Parte 2 · Quanta arquiteturais

Separar o deploy não separa a execução

Um quantum junta componentes ligados por um mesmo artefato, por chamada síncrona ou por banco compartilhado.

1quantum
Forma
Banco de dados
Cenários prontos

Clique numa seta para trocar entre chamada síncrona e fila assíncrona.

Parte 2 · Quanta nas quatro situações

Só filas + bancos separados chegam a dois

Usando as quatro filas de entrada de Notificações. As filas mudam apenas a conta dos quanta, e os custos continuam os do recorte síncrono.

Conclusão

Extrair Notificações só isola falhas se a execução também for separada.

As 4 entradas em fila

Pedidos, Pagamentos, Logística e Integrações enviam por fila. Uma entrada síncrona já basta para manter um único quantum.

Banco próprio

Com banco compartilhado, nem tornar todas as dependências assíncronas separa os quanta.

Envio idempotente

Filas costumam reentregar mensagens. Sem chave, repetir o envio repete o aviso, assim como repetir a cobrança repetiu o débito.

Falta validar com o negócio que a notificação pode chegar depois. Como a fila em memória já trata parte das falhas, a necessidade de extrair ainda não está comprovada.