En programación y sistemas distribuidos, idempotencia significa que una misma operación puede ejecutarse muchas veces y el resultado será el mismo que si se hubiera ejecutado una sola vez.
Dicho de otro modo: Un sistema idempotente no se asusta si alguien le da clic dos veces.
Te pondré un ejemplo cotidiano:
Cuando haces una transferencia bancaria desde una app, a veces la red se cae o no llega la confirmación. Si la app está bien diseñada, aunque presiones “Enviar” dos veces, no se duplicará el dinero enviado.
Entonces se puede decir que la operación fue idempotente.
Dato curioso: La idempotencia tiene origen matemático: el término viene de idem (igual) potence (poder), es decir, mismo poder. En álgebra sería: f(f(x)) = f(x) un ejemplo de esto sería la función de valor absoluto.
¿Por qué es importante?
En sistemas reales como microservicios, APIs REST, colas de mensajes, bases de datos o pasarelas de pago, las fallas de red y los reintentos son inevitables.
Sin idempotencia, los efectos colaterales (duplicaciones, inconsistencias, corrupción de datos) se vuelven catastróficos.
Y qué podría pasar?
| Contexto | Riesgo de no tener idempotencia |
|---|---|
| Pagos en línea | Doble cobro al cliente |
| APIs REST | Creación duplicada de registros |
| Microservicios | Eventos repetidos generan estados incorrectos |
| Bases de datos | Alteración o inserción no intencionada de datos |
| Colas (RabbitMQ, Kafka, etc) | Mensajes procesador varias veces |
Ejemplos reales en la industria
Como ya sabes dev, a mi me gusta hablar con ejemplos y si son reales, pues mejor, así que aquí te muestro algunos que conozco de primera mano:
Stripe (Procesamiento de pagos)
Stripe implementa idempotency keys en sus APIs.
Cuando un cliente envía una solicitud de cobro, debe incluir un encabezado similar a este:
Idempotency-Key: 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d
Si el mismo cliente reintenta con la misma clave, Stripe devuelve el mismo resultado, sin volver a cobrar.
👉 Esto evita duplicidad en cobros si el cliente reintenta por un timeout.
Aquí tienes la documentación que respalda lo que digo.

Uber/Eats (Solicitudes de viaje/pedido)
Uber maneja muchísimas solicitudes de viaje por minuto, para que te hagas una idea, se estima que manejan alrededor de 36 millones de viajes y órdenes de entrega por día a nivel global, esto sin idempotencia sería un caos total.
Si el usuario reenvía su solicitud (por mala señal o reintento automático), el backend usa un token único de solicitud para asegurar que solo se cree o cancele un viaje.
El pasajero no verá dos autos, y el sistema mantiene consistencia.
Aquí tienes la documentación de Uber que menciona esto 😉

Netflix (Streaming)
Para nadie es un secreto el altísimo volumen de requests que es capaz de manejar Netflix!
El guardado del progreso de visualización es una operación inherentemente idempotente.
- Si se intenta guardar "minuto 25" varias veces, el estado final del progreso de ese título para ese usuario es siempre "minuto 25".
- Los sistemas de Contadores Distribuidos de Netflix no son más que un microservicio llamado "Counting Service" utilizado para métricas y, entre otras cosas, el progreso de visualización, incorpora mecanismos de tokens de idempotencia para garantizar que los eventos de actualización no se dupliquen o corrompan el estado final.
Netflix ha documentado el uso de idempotencia en sus arquitecturas de eventos y contadores a gran escala en este artículo técnico del blog oficial.

Buenas prácticas
- Usa Idempotency-Key para operaciones sensibles (como un
POSTpor ejemplo). - Los métodos
GET,PUTyDELETEya son idempotentes por definición HTTP. - Los
POSTdeben ser diseñados idempotentes cuando crean recursos únicos. - Guarda resultados temporales (caché o base de datos) para detectar reintentos.
- Nunca confíes en que el cliente “solo llamará una vez”, nah!.
Analogía final: el botón del ascensor 🛗
Si presionas el botón varias veces, el ascensor no llega más rápido ni crea otro elevador.
Eso es idempotencia en la vida real.
Así que ya lo sabes, estimado dev, la idempotencia evita duplicaciones y mantiene la calma cuando tus sistemas reciben la misma orden más de una vez.
Si esta entrada te ha encantado, compártela crack!
Créditos de imagen de portada: Foto de Pierre Bamin en Unsplash

Un comentario en «La Idempotencia: pieza clave de la confiabilidad en la ingeniería de software moderna»