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
Orion: 10 componentes, 17 dependências
O marketplace didático da disciplina. Cada seta A → B quer dizer que A depende de B.
O candidato à extração é Notificações. Os outros nove componentes ficam juntos.
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.
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.
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”.
O Pagamentos cobra, mas a resposta se perde na rede. O Checkout espera o timeout de 1 s.
Repetir sem chave: o Pagamentos vê um pedido novo e cobra de novo.
Repetir com a mesma chave de idempotência: o Pagamentos reconhece a chave e devolve o resultado anterior, sem cobrar outra vez.
A previsão que registramos antes
Acrescentamos uma política nova: três tentativas sem chave. O que muda em relação a duas?
Uma cobrança já feita pode ser repetida mais uma vez.
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.
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.
Sem chave, repetir troca um erro por outro
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.
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.
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.
Até três tentativas com a mesma chave
O ensaio não mede notificações, concorrência, persistência das chaves nem espera entre tentativas.
Quatro jeitos de implantar o mesmo grafo
As caixas tracejadas são artefatos implantáveis. As setas animadas cruzam a rede.
Cada artefato a mais tira minutos do mês
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.
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.
Clique numa seta para trocar entre chamada síncrona e fila assíncrona.
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.
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.