O que é idempotência?

A idempotência é a propriedade pela qual repetir uma operação com a mesma identidade não produz efeitos indesejados adicionais após o primeiro sucesso. Ela é importante quando um cliente não consegue determinar se uma solicitação anterior foi concluída.

Como funciona a idempotência

Um serviço idempotente trata a execução repetida do mesmo comando lógico como um único efeito, mesmo quando a incerteza da rede leva o chamador a reenviá-lo. Os servidores geralmente persistem uma chave junto com a identidade da solicitação, o estado do processamento e a resposta anterior ou o recurso resultante. A garantia tem um escopo e um período de retenção; não é uma promessa de deduplicação ilimitada. Em sistemas de mídia, ela protege a criação de uploads, as solicitações de codificação, as ações de cobrança e o tratamento de webhooks nos pontos sujeitos a novas tentativas.

Informações essenciais

  1. Uma implementação robusta compara os parâmetros relevantes da solicitação repetida com a operação armazenada; retornar um resultado antigo para a mesma chave, mas com uma entrada diferente, pode associar a mídia errada silenciosamente.
  2. Duplicatas simultâneas exigem uma reserva atômica ou uma restrição de unicidade, pois uma verificação seguida de uma inserção separada permite que dois executores observem a ausência do registro e produzam o efeito duas vezes.
  3. A semântica dos métodos HTTP e a idempotência da aplicação são distintas: PUT é definido como idempotente no nível do protocolo, enquanto um POST pode permitir novas tentativas seguras por meio de uma chave específica da operação.

Quando a idempotência é importante

Atribua uma chave de idempotência às operações repetidas nos serviços que você cria ou ao chamar APIs de terceiros que documentem suporte a essa chave, para que o servidor possa retornar o resultado original em vez de criar outro recurso. A API da Transloadit não aceita uma chave de idempotência para a criação de Assemblies, portanto a deduplicação de envios repetidos de Assemblies é responsabilidade da aplicação que faz a integração; qualquer chave que você usar deve identificar a mesma operação lógica sem ser reutilizada em trabalhos não relacionados.

Transforme conhecimento sobre mídia em um pipeline funcional

Conecte uploads, processamento, IA, armazenamento e entrega por meio de uma única API declarativa, com o stack de codificação, o ajuste de escala e as constantes mudanças de formatos gerenciados para você.

Experimente a Transloadit gratuitamente