castomFLOW

Izvođenja kojima možete vjerovati

Nikome nije upadljivo dok automatizacija nešto ne pošalje dvaput

A onda je upadljivo svima. Četiri mehanizma na ovoj stranici postoje jer su kvarovi ove vrste softvera uvijek ista četiri kvara, a svi su izbjegnuti dizajnom, a ne pažnjom.

Simulirajte prije objave

Provucite stvarni zapis kroz isključeni tijek rada i pročitajte točno što bi se dogodilo: put koji bi bio odabran, svaku vrijednost u svakom koraku, formulaciju svake poruke i zahtjev koji bi otišao svakom vanjskom sustavu.

Ništa ne napušta zgradu. Ne šalje se e-pošta, ne izdaje se račun, ne pokušava se naplata, ne upisuje se redak. Vanjski pozivi bilježe se kao namjere, sa sadržajem koji bi bio poslan, 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: što će ovo stvarno učiniti?

Simulacija · narudžba 88 214Ništa poslano
  • 1Potvrdi adresuPodudara se. Napisano bi bilo 6 polja.
  • ?UvjetNarudžba preko 1 000 zł? Ne — 289,00 zł. Odabran je kraći put.
  • 3RačunPoslalo bi se POST zahtjev sustavu za fakturiranje. Cijeli sadržaj zahtjeva prikazan je u cijelosti.
  • !Ovdje uhvaćenoStopa PD-a mapirana je iz pogrešnog polja. Otkriveno u simulaciji, a ne u sandučiću računovođe.

Poslano: ništaNaplaćeno: ništa

Svaka izvedba ostaje na verziji na koju je ušla

Objava promjene na tijeku rada ne dira izvedbe koje su već u njemu. Svaka je izvedba vezana uz verziju na kojoj je započela i završava tu verziju, koliko god dugo trajala i koliko god Vi u međuvremenu prepravili.

Tako možete preustrojiti tijek rada dok je deset tisuća ljudi na pola puta kroz njega, a svaki od njih dovršava tijek koji im je obećan. Alternativa — dizajn u kojem se cijeli nizvodni put materijalizira pri ulasku — razlog je što uređivanje žive automatizacije u većini alata djeluje opasno. Ovdje je to nešto sasvim uobičajeno.

Nove izvedbe dobivaju novu verziju od trenutka objave. Verzija u kojoj se izvedba nalazi zapisana je na samoj izvedbi, pa pitanje o ponašanju u ožujku ima odgovor i u rujnu.

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

Verzija zabilježena na svakoj izvedbiStare verzije sačuvane

Ponovni pokušaji koji ne mogu poslati dvaput

Korak je čista funkcija svojih ulaza, a njegovi se učinci predaju zajedno s pomakom izvedbe na sljedeći korak. Ne postoji prozor u kojem je poruka već poslana, a izvedba to ne zna.

To je cijela tajna, i to je strukturno svojstvo, a ne obećanje. Radnik ubijen usred koraka — implementacija, pad, stroj koji nestane — ostavlja izvedbu točno tamo gdje je bila. Drugi radnik je preuzima i ponovno izvodi korak. Budući da se učinak i pomak predaju kao jedno, ili se oboje dogodilo ili nijedno.

Odlazni pozivi sustavima 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 obavijest o otpremi.
  • ✕Radnik umireImplementacija. Ništa nije bilo predano.
  • 2PreuzetoDrugi radnik pronalazi izvedbu još uvijek na koraku 5.
  • ✓Poslano jednomKupac je primio jednu e-poruku, ne dvije.

Učinci se predaju zajedno s pomakomKljuč idempotencije po izvedbi i koraku

Dnevnik napisan da ga čovjek čita

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

Kada vas netko pita što se dogodilo s narudžbom napravljenom četrnaestog, postoji odgovor, a pronalazak traje minutu umjesto poslijepodneva uspoređivanja zapisnika triju sustava.

Izvođenja koja ne uspiju skupljaju se na jednom mjestu s razlogom grupiranim, tako da „četrdeset i jedan neuspjeh preko noći” postane „jedan dobavljač vraćao je 503 devet minuta”, a ne četrdeset i jedna odvojena istraga.

Preko noći, grupirano41 neuspjeh
  • 1Jedan uzrokAPI dobavljača vraćao je 503 između 02:41 i 02:50.
  • 2Što se dogodiloSvih 41 je ponovno pokušano; 39 je uspjelo iz drugog pokušaja.
  • 3PreostaloDva su zaustavljena i čekaju osobu. Oba su navedena s retkom koji nije uspio.
  • §Nije četrdeset i jedanistraga. Jedna, i odluka o dva zapisa.

Vjerodajnice uklonjeneVerzija zabilježena

Što ne tvrdimo

Ne objavljujemo broj dostupnosti na marketinškoj stranici, jer je broj bez mjernog razdoblja i definicije „dostupno” samo ukras. Ako Vam takav broj ugovorno treba, pitajte i razgovarat ćemo o tome na što se stvarno možemo obvezati.

Također ne možemo učiniti tuđi API pouzdanim. Ako je davatelj usluge nedostupan, tijek rada koji od njega ovisi čeka, pokušava ponovno i na kraju se zaustavi s jasnim razlogom. Ono što možemo obećati jest da će kvar biti vidljiv, da ništa neće oštetiti i da nastavak neće poslati poruku drugi put.

O čekanju: izvođenje koje čeka dva dana je wake_at na izvođenju, a ne posao koji sjedi u redu čekanja. Zato tijek rada može držati sto tisuća izvođenja u tro tjednom čekanju bez da to išta košta, i zato broj izvođenja koja trenutno čekaju nije nešto o čemu morate razmišljati.

Izvođenje o kojem nikad ne razmišljate jest ono koje je uspjelo.