castomFLOW

Käigud, mida saad usaldada

Keegi ei märka automatiseerimist, kuni see saadab midagi kaks korda

Siis märkavad kõik. Neli mehhanismi sellel lehel eksisteerivad, sest sellise tarkvara tõrked on alati samad neli tõrget, ja kõik on vältitatavad disaini, mitte hoolikuse kaudu.

Simuleeri enne avaldamist

Suruge päris kirje läbi töövoolu, mis on välja lülitatud, ja lugege tagasi täpselt, mis oleks juhtunud: võetud tee, iga väärtus igal sammul, iga sõnumi sõnastus ja päring, mis oleks läinud igasse välisesse süsteemi.

Midagi ei lahku hoonest. Ei saadeta e-kirja, ei tõsteta arvet, ei proovita tasu võtta, ei kirjutata rida. Välised kutsed tähitakse kui kavatsused, koos andmekogumiga, mis oleks saadetud, nii et sa näed, kas vastendus on õige, enne kui see saab kellegi probleemiks.

Simulatsioonid on viis, kuidas vastata küsimusele, mis peatab inimesed automatiseerimise sisselülitamast: mida see tegelikult teeb?

Simulatsioon · tellimus 88 214Midagi ei saadetud
  • 1Kinnita aadressSobis. Oleks kirjutanud 6 välja.
  • ?TingimusTellimus üle 1 000 zł? Ei — 289,00 zł. Võeti lühike tee.
  • 3ArveOleks saatnud POST-päringu arveldussüsteemi. Andmekogu näidatakse täies ulatuses.
  • !Tabatud siinKäibemaksu määr võeti valest väljast. Leiti simulatsioonis, mitte raamatupidaja postkastis.

Saadetud: mitte midagiArvatud: mitte midagi

Iga käik järgib versiooni, millel ta alustas

Muudatuse avaldamine töövoos ei puuduta juba sees olevaid käike. Iga käik on seotud versiooniga, millel ta alustas, ja lõpetab selle versiooniga, olenemata sellest, kui kaua see võtab ja kui palju sa vahepeal ümber kirjutad.

Nii saad töövoogu ümber kujundada, kui kümme tuhat inimest on selle poole peal, ja igaüks neist lõpetab voo, mis talle lubati. Alternatiiv — disain, kus kogu järgnev tee materialiseeritakse sisenemisel — on põhjus, miks elava automatiseerimise redigeerimine tundub enamikus tööriistades ohtlik. Siin on see tavapärane.

Uued käigud saavad uue versiooni alates avaldamise hetkest. Millist versiooni käik kasutab, on kirjas käigul endal, nii et küsimusele märtsi käitumise kohta on septembris vastus olemas.

Redigeerimine töötamise ajalv4 → v5
  • 1Enne2 918 käiku töös, kõik v4-l. Mõned kahenädalasel ootel.
  • 2Avalda v5Kaks sammu ümber järjestatud, üks sõnum ümber kirjutatud.
  • 3PärastNeed 2 918 lõpetavad v4. Kõik, mis algab alates 11:40, kasutab v5.
  • §Mitte keegiei saanud poolt üht töövoogu ja poolt teist.

Versioon kirjas igal käigulVanad versioonid säilitatakse

Kordused, mis ei saa topeltsaata

Samm on puhas funktsioon oma sisenditest ja selle mõjud kinnitatakse koos käigu enda edasiliikumisega järgmisse sammu. Pole akent, kus sõnum on juba läinud, aga käik ei tea seda.

See on kogu trikk, ja see on struktuurne omadus, mitte lubadus. Töötaja, kes hukkub sammu keskel — deploy, krahh, masin, mis kaob — jätab käigu täpselt sinna, kus see oli. Teine töötaja võtab selle üle ja käitab sammu uuesti. Kuna mõju ja edasiliikumine kinnitatakse ühe tervikuna, kas mõlemad juhtusid või kumbki ei juhtunud.

Väljaminevad kutsed süsteemidesse, mis toetavad idempotentsusvõtmeid, kannavad võtit, tuletatud käigust ja sammust, nii et vastaspool tunneb korduse samuti ära.

Töötaja hukkus saatmise keskelTaastatud
  • 1Samm 5 algabSaada saadetise teavitus.
  • ✕Töötaja surebDeploy. Mitte midagi ei kinnitatud.
  • 2Üle võetudTeine töötaja leiab käigu veel sammul 5.
  • ✓Saadetud üks kordKlient sai ühe e-kirja, mitte kaks.

Mõjud kinnitatakse koos edasiliikumisegaIdempotentsusvõti iga käigu ja sammu kohta

Logi, mis on kirjutatud inimesele lugemiseks

Iga käik, iga samm, valitud haru ja väärtus, mis selle otsustas. Ajad iga sammu kohta. Iga välise kutsu päring ja vastus, volitavad andmed eemaldatud. Versioon, millel käik oli. Kus käik ootab ja kuni milleni.

Kui keegi küsib, mis neljateistkümnendal esitatud tellimusest sai, on vastus olemas ja selle leidmine võtab minutit, mitte pärastolekut kolme süsteemi logide omavahel seostamisega.

Ebaõnnestunud käigud kogunevad ühte kohta koos põhjuse rühmitamisega, nii et „nelikümmend üks tõrge üleöö” laheneb kui „üks tarnija tagastas 503 üheksa minutit”, mitte nelikümmend üks eraldi uurimine.

Üleöö, rühmitatud41 tõrget
  • 1Üks põhjusTarnija API tagastas 503 ajavahemikus 02:41–02:50.
  • 2Mis juhtusKõik 41 prooviti uuesti; 39 õnnestus teisel katsel.
  • 3JärelejäänudKaks peatusid ja ootavad inimest. Mõlemad on loetletud koos readega, kus viga tekkis.
  • §Mitte nelikümmend üksuurimist. Üks, ja otsus kahe kirje kohta.

Mandaadid maskeeritudVersioon salvestatud

Mida me ei väida

Me ei avalda turunduslehel töökindluse (uptime) näitajat, sest number ilma mõõtmisperioodi ja „töös olemise” definitsioonita on lihtsalt kaunistus. Kui vajad seda lepinguliselt, küsi ja räägime, mille me tegelikult kinnitada saame.

Me ei saa ka kellegi teise API-d usaldusväärseks teha. Kui teenusepakkuja on maas, ootab talle tuginev töövoog, proovib uuesti ja peatub lõpuks selge põhjusega. Mida me lubame, on see, et tõrge on nähtav, et see ei riku midagi, ja et jätkamine ei saada sõnumit teist korda.

Ootamise kohta: kaks päeva ootav käik on käigul olev wake_at, mitte järjekorras istuv töö. Seetõttu saab töövoog hoida sajatuhandit käiku kolmenädalases ootuses ilma, et see midagi maksaks, ja seetõttu ei pea sa hetkel ootavate käikude arvu pärast muretsema.

Käik, millest sa kunagi ei mõtle, on see, mis õnnestus.