castomFLOW

Vykdymai, kuriais galite pasitikėti

Niekas nepastebi automatizacijos, kol ji kažko nesiunčia dukart

Tada pastebi visi. Keturi šio puslapio mechanizmai egzistuoja todėl, kad tokios programinės įrangos klaidos visada yra tos pačios keturios klaidos, ir visas jų galima išvengti dizainu, o ne atidumu.

Išbandykite prieš publikuodami

Perstumkite tikrą įrašą per išjungtą darbo eigą ir perskaitykite tiksliai tai, kas įvyktų: pasirinktą kelią, kiekvieną reikšmę kiekviename žingsnyje, kiekvieno pranešimo formuluotę ir užklausą, kuri būtų išsiųsta kiekvienai išorinei sistemai.

Niekas nepalanka pastato. Nesiunčiamas joks el. laiškas, nesudaroma joki sąskaita, nebandomas joks mokesčio nuskaitymas, neišrašoma joki eilutė. Išoriniai kvietimai užfiksuojami kaip ketinimai, su duomenų paketu, kuris būtų išsiųstas, kad galėtumėte pamatyti, ar atvaizdavimas teisingas, dar prieš tai tampant kažkieno problema.

Simuliacijos — tai būdas atsakyti į klausimą, kuris sulaiko žmones nuo automatizacijos įjungimo: ką ji iš tikrųjų darys?

Simuliacija · užsakymas 88 214Nieko neišsiųsta
  • 1Patikrinti adresąAtitiko. Būtų buvę parašyta 6 laukai.
  • ?SąlygaUžsakymas virš 1 000 zł? Ne — 289,00 zł. Pasirinktas trumpasis kelias.
  • 3Sąskaita faktūraBūtų siunčiama POST užklausa į sąskaitų faktūrų sistemą. Apkrova rodoma visa.
  • !Pagauta čiaPVM tarifas paimtas iš netinkamo lauko. Rasta simuliacijoje, o ne buhalterės gautame laiške.

Išsiųsta: niekoImta: nieko

Vykdimas eina ta versija, kurioje jis įėjo

Pakeitimo publikavimas darbo eigoje nepalieka jau joje esančių vykdymų. Kiekvienas vykdymas yra pririštas prie versijos, kurioje pradėjo, ir ją užbaigia — neatsižvelgiant į tai, kiek laiko tai užtrunka ir kiek Jūs tuo metu perrašote.

Todėl Jūs galite pertvarkyti darbo eigą, kai dešimt tūkstančių žmonių yra jos viduryje, ir kiekvienas iš jų užbaigs jiems pažadėtą eigą. Alternatyva — dizainas, kuriame visas tolesnis kelias yra sukonkretintas įėjimo metu — yra priežastis, kodėl gyvo automatizmo redagavimas daugumoje įrankių atrodo pavojingas. Čia tai nieko neįprasto.

Nauji vykdymai gauna naują versiją nuo publikavimo akimirkos. Versija, kurioje yra vykdymas, įrašyta pačiame vykdyme, todėl klausimas apie elgseną kovo mėnesį turi atsakymą ir rugsėjį.

Redagavimas veikiantv4 → v5
  • 1Prieš2 918 vykdymų vyksta, visi v4. Kai kurie laukia dvi dienas.
  • 2Publikuoti v5Du žingsniai sukeisti vietomis, vienas pranešimas perrašytas.
  • 3PoTie 2 918 užbaigs v4. Viskas, kas prasideda nuo 11:40, vykdoma v5.
  • §Niekasnegavo pusės vienos darbo eigos ir pusės kitos.

Versija įrašyta kiekviename vykdymeSenos versijos išsaugomos

Pakartojimai, kurie negali išsiųsti dvigubai

Žingsnis yra gryna savo įvesties funkcija, o jo poveikis įsipareigoja kartu su paties vykdymo pažanga į kitą žingsnį. Nėra lango, kuriame pranešimas jau išsiųstas, bet vykdymas to dar nežino.

Tai visas triukas, ir tai struktūrinė savybė, o ne pažadas. Darbuotojas, nutrauktas žingsnio viduryje — diegimas, gedimas, dingoęs serveris — palieka vykdymą tiksliai ten, kur jis buvo. Kitas darbuotojas jį paima ir pakartoja žingsnį. Kadangi poveikis ir pažanga įsipareigoja kaip vienas, arba abu įvyko, arba nei vienas.

Išoriniai kvietimai į sistemas, palaikančias idempotencijos raktus, neša tokį raktą, išvestą iš vykdymo ir žingsnio, kad kita pusė taip pat atpažintų pakartojimą.

Darbuotojas nutrauktas siuntimo metuAtkurta
  • 15 žingsnis prasidedaIšsiųsti pristatymo pranešimą.
  • ✕Darbuotojas žūstaDiegimas. Niekas nebuvo įsipareigoję.
  • 2PaimtaKitas darbuotojas randa vykdymą vis dar 5 žingsnyje.
  • ✓Išsiųsta kartąKlientas gavo vieną el. laišką, o ne du.

Poveikis įsipareigoja kartu su pažangaIdempotencijos raktas kiekvienam vykdymui ir žingsniui

Žurnalas, parašytas žmogui skaityti

Kiekvienas vykdymas, kiekvienas žingsnis, pasirinkta šaka ir vertė, kuri tai lėmė. Laikai pagal žingsnį. Kiekvieno išorinio kvietimo užklausa ir atsakymas, su nuslėptais kredencialais. Versija, kurioje buvo vykdymas. Kur vykdymas laukia ir iki kada.

Kai kas nors paklausia, kas atsitiko keturioliktąją pateiktam užsakymui, yra atsakymas, ir jo paieška užima minutę, o ne popietę, per kurią sulyginami trijų sistemų žurnalai.

Nepavykę paleidimai renkasi vienoje vietoje su sugrupuota priežastimi, todėl „keturiasdešimt vienas nepavykimų per naktį“ išsprendžiamas į „vienas tiekėjas devynias minutes grąžino 503“, o ne keturiasdešimt vienas atskirų tyrimų.

Per naktį, sugrupuota41 nepavykimai
  • 1Viena priežastisTiekėjo API tarp 02:41 ir 02:50 grąžino 503.
  • 2Kas atsitikoVisi 41 pakartoti; 39 pavyko antru bandymu.
  • 3LikoDu sustojo ir laukia žmogaus. Abu išvardyti kartu su nepavykusia eilute.
  • §Ne keturiasdešimt vienastyrimas. Vienas, ir sprendimas dėl dviejų įrašų.

Prisijungimo duomenys užrašytiVersija užfiksuota

Ko mes neteigiame

Neskelbiame darbo laiko rodiklio rinkodaros puslapyje, nes skaičius be matavimo laikotarpio ir apibrėžimo, kas yra „veikianti“, yra tik puošmena. Jei jo jums reikia sutartiniu pagrindu, paklauskite, ir pasikalbėsime, kuo iš tikrųjų galime įsipareigoti.

Taip pat negalime padaryti patikimo kieno kito API. Jei tiekėjas neveikia, nuo jo priklausantis darbo procesas laukia, kartoją ir galiausiai sustoja su aiškia priežastimi. Ką galime pažadėti — tai, kad nepavykimas matomas, kad jis nieko nesugadina ir kad pratęsimas nesiunčia pranešimo antrą kartą.

Apie laukimą: du dienas laukiantis paleidimas yra wake_at lauke tame paleidime, o ne darbas, stovintis eilėje. Todėl darbo procesas gali laikyti šimtą tūkstančių paleidimų trijų savaičių laukime, ir tai nieko nekainuoja, taip pat todėl dabar laukiančių paleidimų skaičius yra dalykas, apie kurį jums nereikia galvoti.

Paleidimas, apie kurį niekada negalvojate, yra tas, kuris pavyko.