castomFLOW

Izvršavanja kojima možete vjerovati

Niko ne primijeti automatizaciju dok nešto ne pošalje dvaput

Onda je primijete svi. Četiri mehanizma na ovoj stranici postoje jer su kvarovi ovakve vrste softvera uvijek ista četiri kvara, i svi su izbježivi dizajnom, a ne pažnjom.

Simulirajte prije objavljivanja

Provucite stvarni zapis kroz tok rada koji je isključen i pročitajte tačno što bi se dogodilo: put koji bi bio izabran, svaku vrijednost u svakom koraku, formulaciju svake poruke i zahtjev koji bi otišao ka svakom vanjskom sistemu.

Ništa ne napušta zgradu. Nijedan e-mail se ne šalje, nijedan račun se ne izdaje, nijedno plaćanje se ne pokušava, nijedan red se ne upisuje. Vanjski pozivi se bilježe kao namjere, s podacima koji bi bili poslani, tako da možete vidjeti je li mapiranje ispravno prije nego što postane nečiji problem.

Simulacije su način da odgovorite na pitanje koje sprječava ljude da uključe automatizaciju: šta će ovo zaista učiniti?

Simulacija · narudžba 88 214Ništa poslano
  • 1Potvrdi adresuPodudara se. Napisalo bi 6 polja.
  • ?UslovNarudžba preko 1 000 zł? Ne — 289,00 zł. Preuzet kraći put.
  • 3FakturaPoslalo bi POST zahtjev sistemu za fakturisanje. Cijeli sadržaj zahtjeva je prikazan.
  • !Ovdje uhvaćenoStopa PDV-a mapirana iz pogrešnog polja. Otkriveno u simulaciji, a ne u sandučetu računovođe.

Poslano: ništaNaplaćeno: ništa

Svaka izvedba ostaje na verziji na koju je ušla

Objavljivanje izmjene u toku rada ne dira izvedbe koje su već u njemu. Svaka izvedba je vezana za verziju na kojoj je počela i završava tu verziju, koliko god trajala i koliko god Vi u međuvremenu nešto prepravili.

Tako možete preurediti tok rada dok je deset hiljada ljudi na pola puta kroz njega, i svaki od njih završava tok koji mu je obećan. Alternativa — dizajn u kojem se cijeli nizvodni put materijalizuje pri ulasku — razlog je što uređivanje aktivne automatizacije u većini alata djeluje opasno. Ovdje je to potpuno obična stvar.

Nove izvedbe dobijaju novu verziju od trenutka objave. Verzija na kojoj se izvedba nalazi zapisana je na samoj izvedbi, tako da pitanje o ponašanju u martu ima odgovor i u septembru.

Uređivanje dok je aktivnov4 → v5
  • 1Prije2 918 izvedbi u toku, sve na v4. Neke čekaju po dva dana.
  • 2Objavi v5Dva koraka preuređena, jedna poruka prepravljena.
  • 3PoslijeTih 2 918 završava v4. Sve što počne od 11:40 koristi v5.
  • §Nikonije dobio pola jednog toka rada i pola drugog.

Verzija zabilježena na svakoj izvedbiStare verzije sačuvane

Ponovni pokušaji koji ne mogu poslati dvostruko

Korak je čista funkcija svojih ulaza, a njegovi efekti se potvrđuju zajedno sa pomjeranjem izvedbe na sljedeći korak. Ne postoji prozor u kojem je poruka već poslana, a izvedba to ne zna.

To je cijeli trik, i to je strukturno svojstvo, a ne obećanje. Radnik ubijen usred koraka — implementacija, pad, mašina koja nestane — ostavlja izvedbu tačno tamo gdje je bila. Drugi radnik je preuzima i ponavlja korak. Pošto se efekat i pomjeranje potvrđuju kao jedno, ili se oboje desilo ili nijedno.

Odlazni pozivi sistemima koji podržavaju ključeve idempotencije nose jedan, izveden iz izvedbe i koraka, tako da druga strana također može prepoznati ponavljanje.

Radnik ubijen usred slanjaOporavljeno
  • 1Korak 5 počinjePošaljite obavještenje o isporuci.
  • ✕Radnik umireImplementacija. Ništa nije potvrđeno.
  • 2PreuzetoDrugi radnik pronalazi izvedbu još uvijek na koraku 5.
  • ✓Poslano jednomKupac je dobio jedan e-mail, ne dva.

Efekti se potvrđuju zajedno s pomjeranjemKljuč idempotencije po izvedbi i koraku

Zapisnik pisan da ga čovjek čita

Svako pokretanje, svaki korak, grana koju je izabrao i vrijednost koja je odlučila. Vremena po koraku. Zahtjev i odgovor svakog vanjskog poziva, s uklonjenim vjerodajnicama. Verzija na kojoj je pokretanje radilo. Gdje pokretanje čeka i do kada.

Kada vas neko pita šta se desilo s narudžbom plasiranom četrnaestog, postoji odgovor, a pronalaženje traje minut umjesto poslijepodneva uspoređivanja logova tri sistema.

Izvršavanja koja ne uspiju prikupljaju se na jednom mjestu sa grupisanim razlogom, tako da se „četrdeset i jedan neuspjeh preko noći“ rješava kao „jedan dobavljač je vraćao 503 tokom devet minuta“ umjesto četrdeset i jedne zasebne istrage.

Preko noći, grupisano41 neuspjeh
  • 1Jedan uzrokAPI dobavljača je vraćao 503 između 02:41 i 02:50.
  • 2Šta se dogodiloPonovo je pokušano svih 41; 39 je uspjelo iz drugog pokušaja.
  • 3PreostaloDva su zaustavljena i čekaju osobu. Oba su navedena sa redom koji nije uspio.
  • §Ne četrdeset i jednaistraga. Jedna, i odluka o dva zapisa.

Akreditivi su redigovaniVerzija je zabilježena

Šta ne tvrdimo

Ne objavljujemo podatke o neprekidnom radu (uptime) na marketinškoj stranici, jer broj bez perioda mjerenja i definicije „radnog stanja“ predstavlja samo ukras. Ako Vam je on potreban prema ugovoru, pitajte i razgovarat ćemo o onome na šta se zaista možemo obavezati.

Također ne možemo tuđi API učiniti pouzdanim. Ako je dobavljač nedostupan, tok posla koji zavisi od njega čeka, pokušava ponovo i na kraju se zaustavlja s jasnim razlogom. Ono što možemo obećati je da je neuspjeh vidljiv, da ne kvari ništa, te da nastavak rada ne šalje poruku drugi put.

O čekanjima: izvršavanje koje čeka dva dana predstavlja wake_at na samom izvršavanju, a ne zadatak koji sjedi u redu čekanja. To je razlog zašto tok posla može držati stotinu hiljada izvršavanja u tronedjeljnom čekanju bez ikakvih troškova, i zašto broj izvršavanja koja trenutno čekaju nije nešto o čemu morate razmišljati.

Izvršavanje o kojem nikada ne razmišljate je ono koje je uspjelo.