castomFLOW
Otvoriť castomFLOW

Behy, ktorým môžete dôverovať

Automatizáciu si nikto nevšimne, kým niečo nepošle dvakrát

Potom si ju všimnú všetci. Štyri mechanizmy na tejto stránke existujú preto, lebo zlyhania tohto druhu softvéru sú vždy tie isté štyri zlyhania, a všetky sa dajú predísť dizajnom, nie opatrnosťou.

Simulujte pred publikovaním

Prepustite skutočný záznam cez vypnutý workflow a prečítajte presne to, čo by sa stalo: zvolenú cestu, každú hodnotu v každom kroku, znenie každej správy a požiadavku, ktorá by odišla do každého externého systému.

Nič neopúšťa budovu. Neodošle sa žiadny e-mail, nevystaví sa žiadna faktúra, nepokúsi sa žiadna platba, nezapíše sa žiadny riadok. Externé volania sa zaznamenávajú ako úmysly, s dátovou časťou, ktorá by bola odoslaná, takže uvidíte, či je mapovanie správne, skôr než sa z toho stane niečí problém.

Simulácie sú spôsob, ako odpovedať na otázku, ktorá bráni ľuďom zapnúť automatizáciu: čo to vlastne urobí?

Simulácia · objednávka 88 214Nič neodoslané
  • 1Overiť adresuZhoda nájdená. Bolo by zapísaných 6 polí.
  • ?PodmienkaObjednávka nad 1 000 zł? Nie — 289,00 zł. Zvolená krátka cesta.
  • 3FaktúraBolo by odoslané POST do fakturačného systému. Dátová časť zobrazená v plnom znení.
  • !Zachytené tuSadzba DPH mapovaná z nesprávneho poľa. Odhalené v simulácii, nie v schránke účtovníka.

Odoslané: ničNaúčtované: nič

Priebeh kráči verziou, na ktorej začal

Publikovanie zmeny workflow sa nedotkne priebehov, ktoré sa v ňom už nachádzajú. Každý priebeh je pripútaný k verzii, na ktorej začal, a dokončí túto verziu, nech trvá akokoľvek dlho a nech medzitým prepíšete čokoľvek.

Takže môžete prebudovať workflow, keď sa ním desaťtisíc ľudí nachádza v polovici, a každý z nich dokončí tok, ktorý mu bol prisľúbený. Alternatíva — návrh, pri ktorom sa celá následná cesta materializuje pri vstupe — je dôvodom, prečo je úprava živej automatizácie vo väčšine nástrojov nebezpečná. Tu je to bežná záležitosť.

Nové priebehy dostanú novú verziu od okamihu publikovania. Verzia, na ktorej priebeh beží, je zapísaná priamo na priebehu, takže otázka o správaní v marci má odpoveď aj v septembri.

Úprava počas prevádzkyv4 → v5
  • 1Predtým2 918 priebehov v behu, všetky na v4. Niektoré čakajú v dvojdňovom čakaní.
  • 2Publikovať v5Preusporiadané dva kroky, prepísaná jedna správa.
  • 3PotomTých 2 918 dokončí v4. Všetko, čo začne od 11:40, beží na v5.
  • §Niktonedostal polovicu jedného workflow a polovicu druhého.

Verzia zaznamenaná na každom priebehuStaré verzie zachované

Opakovania, ktoré nemôžu odoslať dvakrát

Krok je čistá funkcia svojich vstupov a jeho účinky sa potvrdzujú spolu s posunom priebehu na ďalší krok. Neexistuje okno, v ktorom by správa už odišla, ale priebeh by to ešte nevedel.

To je celý trik a je to štrukturálna vlastnosť, nie sľub. Worker zabitý v polovici kroku — nasadenie, pád, stroj, ktorý zmizne — nechá priebeh presne tam, kde bol. Iný worker ho prevezme a krok spustí znova. Pretože účinok a posun sa potvrdzujú ako jedno, buď sa stali oba, alebo ani jeden.

Odchádzajúce volania do systémov podporujúcich idempotencijné kľúče ho nesú — odvodený z priebehu a kroku — takže druhá strana rozpozná opakovanie tiež.

Worker zabitý v polovici odosielaniaObnovené
  • 1Krok 5 začínaOdoslať oznámenie o odoslaní zásielky.
  • ✕Worker zomrieNasadenie. Nič sa nepotvrdilo.
  • 2PrevzatéIný worker nájde priebeh stále na kroku 5.
  • ✓Odoslané razZákazník dostal jeden e-mail, nie dva.

Efekty sa ukladajú s posunomKľúč idempotencie pre každé spustenie a krok

Záznam napísaný pre človeka

Každé spustenie, každý krok, vetva, ktorú zvolilo, a hodnota, ktorá o tom rozhodla. Časy jednotlivých krokov. Požiadavka a odpoveď každého externého volania s utajenými prihlasovacími údajmi. Verzia, na ktorej spustenie bežalo. Kde spustenie čaká a do kedy.

Keď sa niekto pýta, čo sa stalo s objednávkou zo štrnásteho, existuje odpoveď a jej nájdenie trvá minútu, nie odpoledne porovnávanie logov troch systémov.

Neúspešné spustenia sa zhromažďujú na jednom mieste s zoskupeným dôvodom, takže „štyridsaťjeden zlyhaní cez noc“ sa vyrieši na „jeden dodávateľ vracal 503 deväť minút“ namiesto štyridsaťjeden samostatných vyšetrovaní.

Cez noc, zoskupené41 zlyhaní
  • 1Jedna príčinaAPI dodávateľa vracalo 503 medzi 02:41 a 02:50.
  • 2Čo sa staloVšetkých 41 sa opakovalo; 39 uspelo pri druhom pokuse.
  • 3ZostaloDve sa zastavili a čakajú na človeka. Obe sú vypísané s riadkom, ktorý zlyhal.
  • §Nie štyridsaťjedenvyšetrovaní. Jedno a rozhodnutie o dvoch záznamoch.

Prihlasovacie údaje utajenéVerzia zaznamenaná

Čo nenárokujeme

Nezverejňujeme údaj o dostupnosti na marketingovej stránke, pretože číslo bez meracieho okna a definície „dostupné“ je len dekorácia. Ak ho potrebujete zmluvne, povedzte nám a preberieme, čo skutočne môžeme garantovať.

Nemôžeme tiež urobiť spoľahlivým API niekoho iného. Ak je poskytovateľ nedostupný, workflow naňho čaká, opakuje pokusy a nakoniec sa zastaví s jasným dôvodom. Čo môžeme sľúbiť, je, že zlyhanie je viditeľné, že nič nepoškodí a že pokračovanie nepošle správu znova.

O čakaní: spustenie čakajúce dva dni je wake_at na spustení, nie úloha sediaca vo fronte. Preto workflow môže držať sto tisíc spustení v trojtýždňovom čakaní bez akýchkoľvek nákladov a preto počet práve čakajúcich spustení niečo, o čom by ste sa museli starať, nie je.

Spustenie, o ktorom nikdy nepremýšľate, je to, ktoré fungovalo.