castomFLOW

Lopies waarop jy kan vertrou

Niemand let op 'n outomatisering totdat dit iets twee keer stuur nie

Dan let almal op. Die vier meganismes op hierdie bladsy bestaan omdat die foute van hierdie soort sagteware altyd dieselfde vier foute is, en hulle is almal deur ontwerp vermybaar, nie deur sorgsaamheid nie.

Simuleer voordat jy publiseer

Druk 'n werklike rekord deur 'n werkstroom wat afgeskakel is, en lees presies terug wat sou gebeur het: die pad gevolg, elke waarde by elke stap, die bewoording van elke boodskap, en die versoek wat na elke eksterne stelsel sou gegaan het.

Niks verlaat die gebou nie. Geen e-pos word gestuur, geen faktur opgemaak, geen heffing probeer, geen ry geskryf nie. Eksterne oproepe word as bedoelings aangeteken, met die lading wat gestuur sou gewees het, sodat jy kan sien of die kartering reg is voordat dit iemand se probleem word.

Simulasies is hoe jy die vraag antwoord wat mense keer om 'n outomatisering aan te skakel: wat gaan dit werklik doen?

Simulasie · bestelling 88 214Niks gestuur nie
  • 1Valideer adresGeëien. Sou 6 velde geskryf het.
  • ?VoorwaardeBestelling oor 1 000 zł? Nee — 289,00 zł. Kort pad gevolg.
  • 3FaktuurSou POST na die faktureerstelsel stuur. Vrag in volle getoon.
  • !Hier vasgevangBTW-koers uit die verkeerde veld gekoppel. In 'n simulasie gevind eerder as in 'n rekenmeester se inkassie.

Gestuur: niksGebel: niks

'n Uitvoering loop op die weergawe waarop dit ingegaan het

As jy 'n verandering aan 'n werkvloei publiseer, raak dit nie die uitvoerings wat reeds daarin is nie. Elke uitvoering is vasgepen op die weergawe waarop dit begin het en voltooi daardie weergawe, hoe lank dit ook al duur en hoeveel jy intussen ook al herskryf.

So kan jy 'n werkvloei herstruktureer terwyl tienduisend mense halfpad daardeur is, en elkeen van hulle voltooi die vloei wat hulle belowe is. Die alternatief — die ontwerp waar die hele afstroompad by intrede gerealiseer word — is die rede waarom die redigeer van 'n lewendige outomatisering in die meeste gereedskap gevaarlik voel. Hier is dit onopsigtend.

Nuwe uitvoerings kry die nuwe weergawe vanaf die oomblik dat jy publiseer. Watter weergawe 'n uitvoering loop, is op die uitvoering neergeskryf, so 'n vraag oor gedrag in Maart het in September 'n antwoord.

Redigeer terwyl dit leefv4 → v5
  • 1Voor2 918 uitvoerings onderweg, almal op v4. Sommige in 'n twee-dag wag.
  • 2Publiseer v5Twee stappe herrangskik, een boodskap herskryf.
  • 3NaDaardie 2 918 voltooi v4. Alles wat vanaf 11:40 begin, loop v5.
  • §Niemandhet die helfte van een werkvloei en die helfte van 'n ander ontvang nie.

Weergawe op elke uitvoering aangetekenOu weergawes bewaar

Herprobeerings wat nie dubbel kan stuur nie

'n Stap is 'n suiwer funksie van sy insette, en sy effekte word saam met die uitvoering se eie vordering na die volgende stap toegewy. Daar is geen venster waarin die boodskap reeds uit is maar die uitvoering dit nie weet nie.

Dit is die hele kunsgreep, en dit is 'n strukturele eienskap eerder as 'n belofte. 'n Werker wat mid-stap doodgaan — 'n ontplooiing, 'n ongeluk, 'n masjien wat verdwyn — laat die uitvoering presies waar dit was. 'n Ander werker tel dit op en hardloop die stap weer. Omdat die effek en die vordering as een toegewy word, het óf albei gebeur óf geen van albei nie.

Uitgaande oproepe na stelsels wat idempotensiesleutels ondersteun, dra een, afgelei van die uitvoering en die stap, sodat die ander kant die herhaling ook kan herken.

Werker dood gestuur mid-stuurHerstel
  • 1Stap 5 beginStuur die verskyningskennisgewing.
  • ✕Werker sterfOntplooiing. Niks was toegewy nie.
  • 2Opgeneem'n Ander werker vind die uitvoering steeds op stap 5.
  • ✓Een keer gestuurDie kliënt het een e-pos ontvang, nie twee nie.

Effekte word saam met die vordering toegewyIdempotensiesleutel per uitvoering en stap

'n Logboek geskryf vir 'n mens om te lees

Elke uitvoering, elke stap, die tak wat dit geneem het en die waarde wat dit beslis het. Tydsberekeninge per stap. Die versoek en antwoord van elke eksterne oproep, met geloofsbriewe uitgevee. Die weergawe waarop die uitvoering was. Waar 'n uitvoering wag en tot wanneer.

As iemand vra wat met die bestelling van die veertiende gebeur het, is daar 'n antwoord, en dit neem 'n minuut om dit te vind in plaas van 'n middag om die loglêers van drie stelsels te vergelyk.

Lopies wat misluk, versamel op een plek met die rede saamgegroepeer, sodat “een-en-veertig mislukkies oornag” oplos in “een verskaffer het 503 teruggegee vir nege minute” in plaas van een-en-veertig afsonderlike ondersoeke.

Oornag, gegroepeer41 mislukkings
  • 1Een oorsaakVerskaffer-API het 503 teruggegee tussen 02:41 en 02:50.
  • 2Wat gebeur hetAl 41 is herprobeer; 39 het op die tweede poging geslaag.
  • 3OorgeblyTwee is gestop en wag vir 'n persoon. Albei word gelys met die ry wat misluk het.
  • §Nie een-en-veertig nieondersoeke. Een, en 'n besluit oor twee rekords.

Geloofsbriewe geredigeerWeergawe aangeteken

Wat ons nie beweer nie

Ons publiseer nie 'n beskikbaarheidsyfer op 'n bemarkingsbladsy nie, want 'n nommer sonder 'n meetvenster en 'n definisie van “aanlyn” is versiering. As jy een kontraktueel nodig het, vra en ons sal praat oor waartoe ons werklik kan verbind.

Ons kan ook nie iemand anders se API betroubaar maak nie. As 'n verskaffer af is, wag 'n werkstroom wat daarvan afhang, probeer weer en stop uiteindelik met 'n duidelike rede. Wat ons kan belowe, is dat die mislukking sigbaar is, dat dit niks korrupbeer nie, en dat hervatting nie die boodskap 'n tweede keer stuur nie.

oor wagtye: 'n lopie wat twee dae wag is 'n wake_at op die lopie, nie 'n taak wat in 'n tou sit nie. Daarom kan 'n werkstroom honderdduisend lopies vir drie weke laat wag sonder dat dit enigsins kos, en hoef jy nie oor die aantal lopies wat tans wag te dink nie.

Die lopie waaroor jy nooit dink nie, is die een wat gewerk het.