Em termos simples, idempotência é a propriedade que algumas operações têm de poderem ser aplicadas várias vezes sem alterar o resultado além da primeira aplicação.
Se você executar uma operação idempotente uma vez, ela produz um efeito. Se você executá-la 100 vezes, o estado final do sistema será exatamente o mesmo de quando você a executou pela primeira vez.
Exemplos do mundo real
- Botão de Elevador: Se você aperta o botão para o 5º andar, o elevador registra o pedido. Se você apertar o mesmo botão mais dez vezes, o resultado é o mesmo: o elevador vai para o 5º andar. (Idempotente)
- Botão de "Mudo" no Controle Remoto: Se você aperta uma vez, o som desliga. Se aperta de novo, o som liga. O resultado muda a cada clique. (Não Idempotente)
Idempotência na Programação e APIs (HTTP)
No contexto de desenvolvimento de software (especialmente em sistemas distribuídos e APIs REST), a idempotência é crucial para garantir a resiliência do sistema. Se uma rede falha e o cliente tenta enviar a mesma requisição novamente, o servidor precisa saber lidar com isso sem duplicar dados.
Por que isso é vital para um Desenvolvedor?
Se você trabalha no ecossistema .NET e Angular, a idempotência é sua melhor amiga em dois cenários principais:
1. Políticas de Retentativa (Retry Policies)
No frontend com Angular, é comum implementarmos interceptors que tentam reenviar uma requisição se a rede oscilar. Se a sua API não for idempotente, um simples "retry" automático pode duplicar um registro no seu banco de dados.
2. Mensageria e Filas (RabbitMQ / Azure Service Bus)
Sistemas distribuídos falham. Às vezes, uma mensagem é processada com sucesso, mas o "Acknowledge" (confirmação) se perde. O sistema enviará a mensagem novamente. Seu backend .NET precisa ser capaz de ignorar essa segunda mensagem se o trabalho já tiver sido feito.
Conclusão
A idempotência é sobre previsibilidade. Em um mundo onde a rede é instável e usuários clicam duas vezes por ansiedade, garantir que sua operação seja repetível com segurança é o que diferencia um sistema amador de uma plataforma profissional.


Comentários
Postar um comentário