Skip to content
Innopulse Consulting
SaaS & Engineering

Was bedeutet Idempotenz?

Kurzdefinition

Idempotenz bedeutet, dass dieselbe Operation mehrfach ausgeführt denselben Zustand ergibt wie einmal ausgeführt. In verteilten Systemen ist sie keine technische Feinheit, sondern die Voraussetzung dafür, dass ein Wiederholungsversuch nach einer verlorenen Antwort ungefährlich bleibt.

Idempotenz bedeutet, dass eine Operation mehrfach ausgeführt denselben Zustand hinterlässt wie einmal ausgeführt. Eine Adresse auf einen bestimmten Wert zu setzen ist idempotent — zehnmal ausgeführt ist das Ergebnis dasselbe. Einen Betrag zu einem Konto zu addieren ist es nicht.

Warum Wiederholungen unvermeidbar sind

In einem verteilten System kann eine Anfrage ankommen und ihre Antwort verloren gehen. Der Sender weiss dann nicht, ob die Operation ausgeführt wurde. Er hat zwei Möglichkeiten: nicht wiederholen und riskieren, dass nichts passiert ist, oder wiederholen und riskieren, dass es doppelt passiert. Ohne Idempotenz ist beides gefährlich. Mit Idempotenz ist die Wiederholung risikolos, und das Problem verschwindet.

Der Idempotenzschlüssel

Für Operationen, die von Natur aus nicht idempotent sind, ist der übliche Weg ein Schlüssel, den der Aufrufer mitschickt. Das empfangende System merkt sich, welche Schlüssel es bereits verarbeitet hat. Kommt dieselbe Anfrage mit demselben Schlüssel erneut, wird nicht erneut ausgeführt, sondern das gespeicherte Ergebnis zurückgegeben. Entscheidend ist, dass der Schlüssel vom Aufrufer stammt und beim Wiederholungsversuch identisch bleibt — ein neu erzeugter Schlüssel macht das Verfahren wirkungslos.

Wo es in der Praxis zählt

Drei Bereiche dominieren. Zahlungen, wo eine Doppelbuchung unmittelbar Schaden verursacht. Webhook-Verarbeitung, wo Mehrfachzustellung der Normalfall ist. Und Datenimporte, wo ein abgebrochener und erneut gestarteter Vorgang keinen halben oder doppelten Zustand hinterlassen darf. In allen drei Fällen ist Idempotenz keine Verbesserung, sondern die Bedingung für Verlässlichkeit.

Der Unterschied zur Deduplizierung

Idempotenz und nachträgliches Entfernen von Duplikaten werden gelegentlich verwechselt. Idempotenz verhindert, dass ein Duplikat überhaupt entsteht. Deduplizierung räumt hinterher auf. Der zweite Weg ist unterlegen, weil zwischen Entstehen und Aufräumen ein Zustand existiert, in dem das Duplikat wirksam war — die zweite E-Mail ist versendet, bevor jemand sie entfernt.

Wo es schwierig wird

Schwierig sind Operationen mit Nebenwirkungen ausserhalb des eigenen Systems: eine versendete Nachricht, ein Aufruf bei einem Dritten. Diese lassen sich nicht zurücknehmen, weshalb die Prüfung vor der Ausführung stattfinden muss und nicht danach. Schwierig ist auch die Aufbewahrungsdauer der Schlüssel: zu kurz, und eine späte Wiederholung wird erneut ausgeführt; zu lang, und der Speicher wächst unbegrenzt.

Praktische Konsequenz

Bei jeder Schnittstelle, die einen Zustand verändert, gehört die Frage beantwortet, was bei zweimaligem Aufruf passiert. Ist die Antwort nicht dasselbe wie bei einmaligem, braucht es einen Idempotenzschlüssel — und zwar bevor das erste Duplikat in der Produktion auftritt.

SaaS & Engineering ist unser Fachgebiet

Innopulse erklärt nicht nur Begriffe — wir setzen sie für DACH-Unternehmen in die Praxis um.