Uma vez eu comprei uma passagem aérea bem perto da data de partida.
Pagamento bem-sucedido. O dinheiro foi debitado da conta.
Mas, em vez de aparecer “Compra da passagem bem-sucedida”, a tela só mostrou uma linha curta:
“Estou processando.”
Naquela hora, minha primeira reação foi pensar que o sistema estava lento.
Tudo o que eu precisava fazer já estava feito.
Então o que mais ainda teria que esperar?
Só depois eu percebi que talvez o sistema não estivesse realmente ficando lento.
Ela só não quer que aquela transação seja concluída imediatamente.
Parece algo estranho.
Porque geralmente pensamos que uma decisão tem apenas duas possibilidades: ser permitida ou não ser permitida.
Mas, na prática, existe outra opção.
Está permitido, mas não agora.
Isso me faz pensar bastante quando leio sobre @NewtonProtocol.
O que me interessa não está em a policy responder “allow” ou “deny”.
Mas há uma pergunta menor:
Uma execução válida precisa necessariamente acontecer assim que ela é solicitada?
Acho que não é bem assim.
Há execuções em que o valor da decisão não está apenas em permitir ou não permitir.
Ela também envolve o momento em que o sistema escolhe decidir que isso realmente deve ocorrer.
Nesse caso, “esperar” deixa de ser um sinal de um sistema lento.
Ela pode ser parte da própria decisão.
Esse é o ponto em que eu vejo uma diferença bastante grande.
Normalmente, tratamos o tempo como apenas a distância entre quando você clica e quando a operação é concluída.
Mas também existem casos em que o tempo vira um parâmetro da autorização.
Não porque a execução está errada.
Mas execução correta não significa, necessariamente, que ela deva acontecer imediatamente.
Discordância.
Se uma policy sempre escolhe adiar para ser mais segura, a experiência vai rapidamente se tornar desagradável. Os usuários vão começar a sentir que toda ação está lenta, mesmo quando não há um motivo claro.
Mas se a policy padrão for que toda execução válida deve ser feita imediatamente, o sistema também perde uma forma de lidar muito importante entre as duas escolhas — “permitir” e “negar”.
O que eu quero ver em @NewtonProtocol não é apenas a capacidade de tomar uma decisão.
E é assim que a policy define quando uma execução deve acontecer imediatamente e, quando esperar mais um tempo é uma decisão mais apropriada.
Para mim, uma camada de autorização bem feita não decide apenas o que pode acontecer.
Ela também entende que, às vezes, o momento certo é parte dessa própria decisão.
