DigitalnaKontakt
NovostiAutomatizacija

Što znači idempotentnost i zašto je važna kad automatizirate poslove

Tomislav Jurić

5 min čitanja

Pojam idempotentnosti zvuči strogo, a znači jednostavnu stvar: skripta smije biti pokrenuta dvaput, a da rezultat ostane isti. Objašnjavamo ga običnim riječima, uz primjere iz freelance rada.

Što znači idempotentnost i zašto je važna kad automatizirate poslove

Pojam koji zvuči teže nego što jest

Kad prvi put čuju riječ idempotentnost, polaznici na tečaju obično se malo ukoče. Zvuči kao nešto iz matematike, a zapravo opisuje vrlo svakodnevnu situaciju. Radnja je idempotentna ako je možete ponoviti koliko god puta želite, a stanje nakon druge, treće ili desete ponavljanja ostaje isto kao nakon prve. Dobar primjer je prekidač za svjetlo koji ima zasebne položaje za uključeno i isključeno, a ne jedan gumb koji samo mijenja stanje.

Zašto o tome govorimo u modulu o automatizaciji zadataka? Zato što se skripte rijetko izvode samo jednom. Pokrećete ih ručno, zakazujete ih da rade ujutro, a ponekad se prekinu usred posla zbog pada mreže ili ugašenog računala. Ako skripta nije napisana s tim na umu, ponovno pokretanje može napraviti više štete nego da ju nitko nije ni pokrenuo.

U ovom tekstu prolazimo kroz pojam korak po korak, bez žargona koliko god je moguće. Cilj nije da naučite napamet definiciju, nego da naučite postaviti jedno pitanje prije nego što skriptu pustite u rad: što se dogodi ako se ovo izvrši još jednom?

Primjer iz freelance svakodnevice

Zamislite freelancera koji svaki tjedan šalje klijentima izvještaje u obliku PDF datoteke. Napisao je skriptu koja iz tablice sastavi izvještaj i pošalje ga e-poštom. Jednog petka skripta stane nakon petog klijenta jer je pao internet. Vi je pokrenete ispočetka, i prvih pet klijenata dobiva izvještaj drugi put. Nitko neće biti sretan, a vi ćete se morati objašnjavati.

Idempotentna verzija iste skripte vodi evidenciju: uz svakog klijenta zapiše da je izvještaj za taj tjedan poslan. Pri ponovnom pokretanju najprije provjeri evidenciju i preskoči one koji su već gotovi. Ishod je isti bez obzira na to pokrenete li skriptu jednom ili pet puta, a upravo to je ono što pojam znači.

Ta provjera traje nekoliko redaka koda. Vrijednost joj je ipak velika, jer vam omogućuje mirno ponovno pokretanje nakon svakog prekida, bez ručnog pregledavanja što je već poslano, a što nije.

  • Radnja koja samo postavlja stanje (postavi status na gotovo) lako je idempotentna
  • Radnja koja dodaje (dodaj redak, pošalji poruku) traži dodatnu provjeru
  • Evidencija obavljenog posla najjednostavniji je način zaštite

Postavi, ne dodaj

Praktično pravilo koje polaznicima pomaže glasi: kad god možete, opišite željeno stanje umjesto radnje. Naredba koja kaže da mapa za klijenta mora postojati sigurnija je od naredbe koja kaže napravi mapu. Prva ne radi ništa ako mapa već postoji, a druga će prijaviti grešku ili, još gore, napraviti kopiju.

Isto vrijedi za datoteke i podatke. Ako skripta svaki put iznova upisuje cijeli sadržaj datoteke, rezultat je uvijek isti. Ako na kraj datoteke dodaje nove retke, svako dodatno pokretanje produljuje datoteku s duplikatima. Razlika je sitna u kodu, a golema u posljedicama nakon nekoliko tjedana rada.

U modulu to vježbamo na malim zadacima: polaznici dobiju skriptu koja nešto dodaje i zadatak da je preurede tako da se može sigurno ponoviti. Najčešće rješenje je provjera postoji li zapis prije upisa, ili korištenje jedinstvenog identifikatora za svaku stavku.

Gdje se pravilo najčešće krši

Najčešće greške vidimo na tri mjesta. Prvo su slanja poruka i izvještaja, gdje duplikat odmah vidi druga osoba. Drugo su obračuni i zbrajanja: skripta koja svaki put pribroji iznos u postojeću ukupnu vrijednost daje pogrešan zbroj nakon ponovljenog pokretanja. Treće su preuzimanja i preimenovanja datoteka, gdje se isti dokument pojavi pod dva imena.

Zanimljivo je da te greške rijetko nastaju iz nepažnje. Nastaju jer skriptu testirate jednom, na čistom stanju, kad sve radi savršeno. Problem se pokaže tek drugi put, često u trenutku kad ste nešto drugo imali na umu.

Zato predlažemo naviku koju zovemo dvostruko pokretanje: nakon što skripta proradi, pokrenite je odmah još jednom na istim podacima i pogledajte je li se išta promijenilo. Ako jest, imate nešto za popraviti prije nego što skripta ode u stvaran rad.

  • Slanje e-pošte i izvještaja
  • Zbrajanje i upisivanje iznosa
  • Preimenovanje i kopiranje datoteka

Kako to provjeriti u tri koraka

Provjera ne traži posebne alate. Prvo, pripremite mali uzorak podataka, recimo pet redaka, na kojem se ne bojite pogriješiti. Drugo, pokrenite skriptu i zabilježite rezultat: koliko je datoteka nastalo, koliko redaka ima tablica, što je upisano u evidenciju. Treće, pokrenite je ponovno i usporedite brojke s prvim rezultatom.

Ako se brojke podudaraju, skripta je u praksi idempotentna za taj slučaj. Ako se ne podudaraju, razlika vam pokazuje točno gdje treba dodati provjeru. Dobro je isprobati i prekid usred rada, tako da skriptu ugasite nasilno nakon nekoliko koraka pa je ponovno pokrenete.

Takav postupak traje desetak minuta, a štedi sate popravljanja. Uz AI asistenta možete tražiti i prijedlog izmjene, ali ishod uvijek provjerite sami istim dvostrukim pokretanjem, jer asistent ne zna kakvi su vaši stvarni podaci.

Idempotentnost nije ocjena iz informatike, nego navika oprezne radnje: napišite skriptu tako da je ponavljanje ne može pokvariti. Dovoljno je postaviti stanje umjesto dodavanja, voditi kratku evidenciju obavljenog i svaki novi posao isprobati dvaput. Tako ćete automatizaciju moći prepustiti rasporedu i računalu, a sami se posvetiti poslu koji traži vašu pažnju.

Pročitajte i ove tekstove

Tko piše

Tomislav Jurić

Instruktor web razvoja i sigurnosti

Vodi uvod u kibernetičku sigurnost i web razvoj. Naglasak stavlja na dobre navike i sigurnu praksu.