Idempotentie uitgelegd | EIGHTY8

Wat is idempotentie? Een handeling die je veilig kunt herhalen zonder dubbel effect. Cruciaal voor automatiseringen die opnieuw proberen.

Idempotentie is de eigenschap van een handeling die bij herhaling hetzelfde effect heeft als bij één keer: een factuur die al verstuurd is, wordt niet nog een keer verstuurd. Elke automatisering die opnieuw probeert bij een fout heeft deze eigenschap nodig. EIGHTY8 ontwerpt daarom elke stap met een kenmerk waarmee een herhaalde poging wordt herkend en gestopt.

Software die opnieuw probeert, heeft één gevarenzone: het effect dat twee keer plaatsvindt. Een netwerkfout, een time-out, een herstart. Het komt allemaal voor. De automatisering weet in dat moment niet of haar stap doorkwam, en kiest logischerwijs voor opnieuw. Is de stap niet herhaalveilig ingericht, dan ontstaat er een tweede factuur, een tweede boeking of een dubbele melding aan de klant.

Idempotentie lost dat op met een eenvoudig beginsel: elke handeling draagt een uniek kenmerk, en de ontvanger houdt bij welke kenmerken al verwerkt zijn. Komt hetzelfde kenmerk binnen, dan antwoordt het systeem alsof het de eerste keer was. Zonder de handeling nog een keer uit te voeren. De afzender krijgt dus wel een bevestiging, maar er gebeurt niets nieuws. Herhalen wordt daarmee veilig in plaats van gevaarlijk.

Een voorbeeld uit de praktijk: een automatisering verstuurt na goedkeuring een factuur naar een klant en wacht op een bevestiging. Die bevestiging komt niet. De verbinding valt weg. Probeer de stap opnieuw zonder herhaalveiligheid, en de klant krijgt twee facturen. Met idempotentie draagt de tweede poging hetzelfde kenmerk, herkent het systeem de eerdere verzending, en krijgt de automatisering tóch een antwoord. Niemand merkt er iets van, en dat is precies het doel.

Idempotentie is de moeite waard bij elke stap met een effect naar buiten: een mail die de deur uit gaat, een betaling, een boeking in een systeem, een melding aan een klant. Ook bij nachtelijke batches en bij stappen die een externe dienst aanroepen met zijn eigen limieten, is het de bouwsteen die opnieuw proberen mogelijk maakt.

Een leesactie heeft het niet nodig: iets opvragen verandert niets, dus herhalen is ongevaarlijk. En het is geen excuus om foutafhandeling te verwaarlozen. Idempotentie voorkomt dubbele effecten, niet de fout zelf. De fout hoort nog steeds zichtbaar te zijn, gemeld te worden en opgelost te worden. Het verschil is dat de herstelpoging veilig is, niet dat niemand kijkt.

EIGHTY8 legt idempotentie onder elke effectvolle stap: een kenmerk per handeling, een registratie van wat al verwerkt is, en een opnieuw-proberen-regel die daarop vertrouwt. In de oplevering leggen we uit welke stappen herhaalbaar zijn en waarom. Zodat een fout niet een reeks dubbele mails wordt, maar een regel in een logboek die de volgende poging netjes afhandelt.

Wat is een voorbeeld van een handeling die niet idempotent is?

Een overboeking of een mail-uitgang zonder kenmerk: stuur je die bij een onzekere afloop opnieuw, dan staat er twee keer een bedrag of komen er twee mails aan. Ook een teldactie is vaak niet-herhaalbaar. Elke poging verhoogt de teller. Het herkenningspatroon: de handeling telt op in plaats van een toestand vast te stellen. Juist die stappen bouwen we eerst om naar een veilige vorm, vóórdat de automatisering opnieuw gaat proberen.

Waarom hoort idempotentie bij automatisering die opnieuw probeert?

Omdat opnieuw proberen zonder herhaalveiligheid een loterij is: soms herstel je een fout, soms veroorzaak je een dubbele handeling. En je weet van tevoren niet welke. Met idempotentie is elke nieuwe poging zonder gevaar, dus kan de automatisering rustig haar werk doen bij een time-out of een onderbreking. De combinatie van beide (proberen én veilig herhalen) is wat een kleine storing een kleine storing laat zijn.

Kan een webhook dezelfde melding twee keer sturen?

Ja, en het is normaal dat dat gebeurt: de verzender hoorde geen bevestiging en probeerde het nog een keer. Daarom hoort de ontvangende kant altijd idempotent te zijn. Elke melding draagt een uniek kenmerk en de verwerking controleert of dat kenmerk al langs kwam. Komt hij dubbel binnen, dan wordt hij bevestigd maar niet nog een keer verwerkt. Zo is een herhaalde melding een nietszeggend detail in plaats van een dubbele boeking.

Merkt een gebruiker dat een stap idempotent is ingericht?

Nee. En dat is de hele kern. Een klant ziet één factuur, één mail, één boeking, ook al is de stap achter de schermen drie keer geprobeerd. De zichtbaarheid zit op een andere plek: in het logboek, waar elke poging en de uiteindelijke afloop te volgen is. Voor de werkvloer is het dus een garantie die je niet ziet maar wel merkt, in het uitblijven van dubbele dingen.

EIGHTY8