castomFLOW
Atvērt castomFLOW

Izpildes, kurām var uzticēties

Neviens nepamana automatizāciju, līdz tā kaut ko nosūta divreiz

Tad to pamana visi. Četri mehānismi šajā lapā pastāv tāpēc, ka šādas programmatūras kļūmes vienmēr ir tās pašas četras, un tās visas ir novēršamas ar dizainu, nevis ar rūpīgumu.

Simulējiet pirms publicēšanas

Izlaidiet reālu ierakstu caur izslēgtu darbplūsmu un nolasiet precīzi to, kas notiktu: veikto ceļu, katru vērtību katrā solī, katra ziņojuma formulējumu un pieprasījumu, kas tiktu nosūtīts uz katru ārējo sistēmu.

Nekas neiziet no ēkas. Netiek sūtīts e-pasts, izrakstīts rēķins, mēģināts maksājums vai ierakstīta rinda. Ārējie izsaukumi tiek reģistrēti kā nodomi, ar datiem, kas būtu nosūtīti, lai Jūs varat pārliecināties, vai kartēšana ir pareiza, pirms tā kļūst par kāda cilvēka problēmu.

Simulācijas ir veids, kā atbildēt uz jautājumu, kas attur cilvēkus ieslēgt automatizāciju: ko tas tiešām darīs?

Simulācija · pasūtījums 88 214Nekas nav nosūtīts
  • 1Validēt adresiSakrita. Būtu aizpildīti 6 lauki.
  • ?NosacījumsPasūtījums virs 1 000 zł? Nē — 289,00 zł. Tika izvēlēts īsais ceļš.
  • 3RēķinsBūtu veikts POST pie rēķinu sistēmas. Pilns pieprasījuma saturs ir parādīts.
  • !Atrasts šeitPVN likme tika ņemta no nepareiza lauka. Atrasts simulācijā, nevis grāmatveža iesūtnē.

Nosūtīts: nekasNorēķināts: nekas

Katra izpilde iet pa versiju, ar kuru tā iestājās

Izmaiņas publicēšana darba plūsmā neietekmē jau tajā esošās izpildes. Katra izpilde ir piesaistīta versijai, ar kuru tā sākās, un pabeidz to, cik ilgi arī tas aizņemtos un cik daudz Jūs pa to laiku pārrakstītu.

Tāpēc Jūs varat pārstrukturēt darba plūsmu, kamēr desmit tūkstoši cilvēku atrodas tās vidū, un katrs no viņiem pabeigs plūsmu, kas viņiem tika solīta. Alternatīva — dizains, kurā visa tālākā ceļa daļa tiek materializēta iestāšanās brīdī — ir iemesls, kāpēc dzīvas automatizācijas rediģēšana lielākajā daļā rīku šķiet bīstama. Šeit tas ir ikdienišķi.

Jaunas izpildes saņem jauno versiju jau publicēšanas brīdī. Versija, kurā izpilde atrodas, ir ierakstīta pašā izpildē, tāpēc jautājumam par uzvedību martā ir atbilde septembrī.

Rediģēšana darbības laikāv4 → v5
  • 1Pirms2 918 izpildes procesā, visas uz v4. Dažas divu dienu gaidā.
  • 2Publicēt v5Divas darbības pārkārtotas, viens ziņojums pārrakstīts.
  • 3PēcŠīs 2 918 pabeidz v4. Viss, kas sākas no 11:40, darbojas uz v5.
  • §Neviensnesaņēma pusi no vienas darba plūsmas un pusi no otras.

Versija ierakstīta katrā izpildēVecās versijas saglabātas

Atkārtojumi, kas nevar nosūtīt divreiz

Darbība ir tīra funkcija no saviem ievaddatiem, un tās efekti tiek fiksēti kopā ar izpildes pašas pāreju uz nākamo darbību. Nav loga, kurā ziņojums jau ir aizgājis, bet izpilde to vēl nezina.

Tā ir visa viltība, un tā ir strukturāla īpašība, nevis solījums. Darbinieks, kas nogalināts darbības vidū — izvietošana, avārija, mašīna, kas pazūd — atstāj izpildi tieši tur, kur tā bija. Cits darbinieks to pārņem un atkārto darbību. Tā kā efekts un pāreja tiek fiksēti kā viens, vai nu abi notika, vai neviens.

Izejošie izsaukumi uz sistēmām, kas atbalsta idempotences atslēgas, nes vienu, atvasinātu no izpildes un darbības, lai arī otra puse varētu atpazīt atkārtojumu.

Darbinieks nogalināts nosūtīšanas vidūAtkopta
  • 15. darbība sākasNosūtīt piegādes paziņojumu.
  • ✕Darbinieks mirstIzvietošana. Nekas nebija fiksēts.
  • 2PārņemtaCits darbinieks atrod izpildi vēl aizvien 5. darbībā.
  • ✓Nosūtīts vienreizKlients saņēma vienu e-pastu, nevis divus.

Efekti tiek fiksēti kopā ar pārejuIdempotences atslēga katrai izpildei un darbībai

Žurnāls, kas rakstīts cilvēkam lasāms

Katra izpilde, katra darbība, izvēlētais atzars un vērtība, kas to nolēma. Laiki pa darbībām. Katra ārējā izsaukuma pieprasījums un atbilde, ar noņemtiem pieteikuma datiem. Versija, kurā izpilde atradās. Kur izpilde gaida un līdz kuram laikam.

Ja kāds jautā, kas notika ar četrpadsmitajā izveidoto pasūtījumu, atbilde ir, un tās atrašana aizņem minūti, nevis pēcpusdienu, ko pavada, saskaņojot trīs sistēmu žurnālus.

Neizdevušies izpildes gadījumi tiek savākti vienā vietā ar grupētu iemeslu, tāpēc “četrdesmit viens pārrākums naktī” atrisinās kā “viens piegādātājs deva 503 deviņas minūtes”, nevis četrdesmit vieni atsevišķi izmeklējumi.

Naktī, grupēti41 pārrākums
  • 1Viens cēlonisPiegādātāja API atgrieza 503 no 02:41 līdz 02:50.
  • 2Kas notikaVisi 41 tika atkārtoti; 39 veiksmīgi otrajā mēģinājumā.
  • 3AtlicisDivi apstājās un gaida cilvēku. Abi ir uzskaitīti kopā ar neizdevušos rindu.
  • §Ne četrdesmit viensizmeklējumi. Viens, un lēmums par diviem ierakstiem.

Piekļuves dati noslēptiVersija ierakstīta

Ko mēs neapgalvojam

Mēs nepublicējam darbības laika rādītāju mārketinga lapā, jo skaitlis bez mērījuma loga un “darbojas” definīcijas ir tikai dekorācija. Ja Jums tas nepieciešams līgumiski, pajautājiet, un mēs parunāsim par to, uz ko mēs patiešām varam saistīties.

Mēs arī nevaram padarīt kāda cita API uzticamu. Ja pakalpojumu sniedzējs nedarbojas, no tā atkarīgā darbplūsma gaida, atkārto un galu galā apstājas ar skaidru iemeslu. Ko mēs varam solīt, ir tas, ka pārrākums ir redzams, ka tas nesabojā neko un ka atsākšana nesūta ziņu otro reizi.

Par gaidīšanu: izpilde, kas gaida divas dienas, ir wake_at vērtība izpildē, nevis darbs, kas sēž rindā. Tāpēc darbplūsma var turēt simts tūkstošus izpilžu trīs nedēļu gaidīšanā, neko neizmaksājot, un tāpēc par pašlaik gaidošo izpilžu skaitu nav jādomā.

Izpilde, par kuru nekad nedomājat, ir tā, kas izdevās.