Criar Funções do Azure para entradas idênticas

A realidade da arquitetura baseada em eventos e em mensagens dita a necessidade de aceitar pedidos idênticos, preservando a integridade dos dados e a estabilidade do sistema.

Para ilustrar, considere um botão de chamada de elevador. À medida que prime o botão, acende-se e é enviado um elevador para o seu chão. Alguns momentos depois, alguém se junta a si na sala de espera. Esta pessoa sorri para si e prime o botão iluminado uma segunda vez. Sorris para trás e ris-te para ti mesmo quando te lembras que o comando para chamar um elevador é idempotente.

Premir um botão de chamada de elevador uma segunda, terceira ou quarta vez não tem qualquer influência no resultado final. Quando prime o botão, independentemente do número de vezes, o elevador é enviado para o seu chão. Os sistemas Idempotentes, como o elevador, resultam no mesmo resultado, independentemente do número de vezes que são emitidos comandos idênticos.

No que diz respeito à criação de aplicações, considere os seguintes cenários:

  • O que acontece se a sua aplicação de controlo de inventário tentar eliminar o mesmo produto mais do que uma vez?
  • Como se comporta a aplicação de recursos humanos se existir mais do que um pedido para criar um registo de colaborador para a mesma pessoa?
  • Para onde vai o dinheiro se a sua aplicação bancária receber 100 pedidos para fazer o mesmo levantamento?

Existem muitos contextos em que os pedidos a uma função podem receber comandos idênticos. Algumas situações incluem:

  • Repita várias vezes as políticas que enviam o mesmo pedido.
  • Comandos em cache reproduzidos na aplicação.
  • Erros de aplicação ao enviar vários pedidos idênticos.

Para proteger a integridade dos dados e o estado de funcionamento do sistema, uma aplicação idempotente contém lógica que pode conter os seguintes comportamentos:

  • Verificar a existência de dados antes de tentar executar uma eliminação.
  • Verifique se os dados já existem antes de tentar executar uma ação de criação.
  • Reconciliar lógica que cria consistência eventual nos dados.
  • Controlos de simultaneidade.
  • Deteção de duplicação.
  • Validação da atualização de dados.
  • Guarde a lógica para verificar os dados de entrada.

Em última análise, a idempotência é obtida ao garantir que uma determinada ação é possível e é executada apenas uma vez.

Passos seguintes