9.6 Glundroðaverkfræði og seigluprófanir
Yfirlit og tilgangur
Glundroðaverkfræði er agaða venjan að keyra tilraunir á kerfi til að byggja traust á getu þess til að standast ókyrrð í framleiðslu. Nafnið hljómar kæruleysislega og það er það fyrsta sem þarf að aflæra. Glundroðaverkfræði er ekki að brjóta hluti af handahófi og vona að maður læri eitthvað. Hún er andstæðan: stýrð, tilgátudrifin aðferð til að sprauta raunhæfum bilunum svo þú uppgötvir veikleika áður en notendur þínir gera það. Þú veist nú þegar að kerfi þitt mun standa frammi fyrir bilunum, því hvert raunverulegt kerfi gerir það. Eina spurningin er hvort þú mætir þeim bilunum á þriðjudagseftirmiðdegi með afturköllun tilbúna, eða klukkan þrjú um nótt á annasömustu stundinni án nokkurrar hugmyndar um hvað er að gerast.
Fyrir stór teymi skiptir þetta máli því flækjan hefur vaxið fram úr getu nokkurs til að rökræða um hana með skoðun. Nútímaþjónusta er vefur tuga eða hundraða íhluta, hver með eigin tímamörk, endurtilraunir, skyndiminni og bilunarhætti, og víxlverkanir þeirra á milli framleiða tilkomuhegðun sem enginn arkitektúrmynd spáir. Þú getur rýnt kóðann, teiknað kassana og samt orðið hissa þegar hæg ósjálfstæði ræsir endurtilraunastorm sem fellir þjónustu þrjú hopp í burtu. Glundroðaverkfræði er hvernig þú könnar þær víxlverkanir reynsluleg, svo seigla þín sé eitthvað sem þú hefur staðfest frekar en gert ráð fyrir.
Fyrirtækja- og opinbert umhverfi hækkar húfið og, í auknum mæli, umboðið. Fjármálaeftirlitsaðilar ætlast nú til að fyrirtæki prófi rekstrarseiglu gegn alvarlegum en trúverðugum sviðsmyndum og sanni að þau geti haldið mikilvægri þjónustu gangandi gegnum truflun. Opinberir aðilar keyra rekstrarsamfelluæfingar svo nauðsynleg opinber þjónusta lifi af rof, hamfarir og netárásir. Í báðum heimum er „við teljum að það haldi“ ekki ásættanlegt svar við úttektaraðila eða borgara. Glundroðaverkfræði gefur þér sönnunargögn. Þessi kafli byggir á áreiðanleikaverkfræði (kafli 9.1) og seigluþáttamynstrunum í kafla 3.5 og tengist þétt atvikastjórnun (kafli 9.3) og hamfarabata (kafli 9.5).
Meginreglur
- Byggðu traust, ekki skapa glundroða. Markmiðið er staðfest seigla, ekki sjónarspil. Sérhver tilraun svarar tiltekinni spurningu um hvernig kerfið hegðar sér undir álagi.
- Skilgreindu stöðugt ástand fyrst. Þú getur ekki greint vandamál án skýrrar, mælanlegrar skilgreiningar á því hvernig „heilbrigt“ lítur út.
- Myndaðu tilgátu. Segðu hvað þú býst við að gerist áður en þú sprautar bilun. Óvænt er niðurstaða. Fjarvera hennar er líka niðurstaða.
- Lágmarkaðu og haltu sprengisvæðinu í skefjum. Byrjaðu smátt, verndaðu raunverulega notendur og víkkaðu umfang aðeins eftir því sem traust vex.
- Kjóstu framleiðslu, varlega. Bilanir hegða sér ólíkt undir raunverulegri umferð, raunverulegum gögnum og raunverulegri stærð. Vinndu þér inn réttinn til að prófa þar.
- Sjálfvirknivæddu í átt að samfelldri staðfestingu. Veikleiki sem þú lagar einu sinni getur gengið til baka. Seigla sem er prófuð samfellt helst sönn.
- Bilun er kennari, ekki dómur. Niðurstöður bæta kerfið. Þær eru aldrei ástæða til að kenna þeim sem keyrði tilraunina um.
Ráðleggingar
Komdu á forsendunum áður en þú sprautar eina bilun
Glundroðaverkfræði er margfaldari áhrifamáttar fyrir þroskað kerfi og skuld fyrir óþroskað. Áður en þú byrjar þarftu þrennt á sínum stað. Í fyrsta lagi sýnileika, það er mælikvarðana, skrárnar og rakningarnar sem leyfa þér að sjá hvað kerfi þitt er að gera utan frá, því tilraun sem þú getur ekki fylgst með kennir þér ekkert. Í öðru lagi þjónustustigsmarkmið eða sambærilega skilgreiningu á stöðugu heilsuástandi (kafli 9.1), svo þú getir greint vel heppnaða tilraun frá skaðlegri í rauntíma. Í þriðja lagi hraða og áreiðanlega afturköllunar- eða stöðvunarleið, svo um leið og tilraun ógnar raunverulegum notendum getir þú stöðvað hana og endurheimt venjulega þjónustu á sekúndum. Ef þú getur ekki mælt kerfi þitt, skilgreint heilbrigt ástand þess og dregið það aftur frá brúninni, ekki keyra glundroðatilraunir enn. Byggðu þá getu fyrst. Hún borgar sig hvort sem er.
Skilgreindu stöðugt ástand og myndaðu raunverulega tilgátu
Sérhver tilraun byrjar á því að skrifa niður hvernig eðlilegt lítur út í mælanlegum skilmálum: árangurshlutfall beiðna yfir 99,9 prósent, greiðslutöf undir 400 millisekúndum í 95. hundraðshluta, biðraðardýpt undir þröskuldi. Þetta er skilgreining þín á stöðugu ástandi og hún ætti að endurspegla notendasýnilega heilsu, ekki innri lagnir. Settu síðan fram tilgátu á einföldu máli: „Ef við bætum 300 millisekúndna töf við meðmælaþjónustuna mun vörusíðan samt birtast innan töfarfjárhagsáætlunar sinnar því síðan líkir meðmælum sem valkvæðum og rennur út á tíma eftir 200 millisekúndur.“ Nú hefurðu hrekjanlega fullyrðingu. Þegar þú keyrir tilraunina gerist annað tveggja góðra hluta. Annaðhvort hegðar kerfið sér eins og spáð var og traust þitt er unnið, eða það gerir það ekki og þú hefur fundið raunverulegan veikleika ódýrt, á eigin forsendum, með verkfræðinga að horfa.
Sprautaðu raunhæfum bilunum, ekki handahófskenndum
Bilanirnar sem þú kynnir ættu að spegla bilanirnar sem kerfi þitt upplifir í raun. Bilanasprautun, viljandi innleiðing villna til að prófa hvernig kerfi bregst við, gefur þér matseðil dreginn úr raunverulegum framleiðsluatvikum. Sprautaðu töf til að líkja eftir hægu ósjálfstæði eða mettaðri nettengingu. Sprautaðu villum, skilaðu HTTP 500 eða tengingarhöfnunum, til að líkja eftir bilandi niðurstreymisþjónustu. Sprautaðu auðlindaþurrð með því að eyða örgjörva, minni, diski eða skráarlýsingum, til að sjá hvernig kerfið skerðist undir þrýstingi. Sprautaðu ósjálfstæðisbilun með því að gera heilan gagnagrunn, skyndiminni, röð eða API þriðja aðila óaðgengilegt. Í dreifðu kerfi, þar sem íhlutir keyra á aðskildum vélum og tala saman yfir óáreiðanlegt net, eru þetta bilanirnar sem ráða raunverulegum rofum. Töf og hlutabilun, ekki hreinar hrun, eru það sem brýtur hluti í reynd, svo þyngdu tilraunir þínar að óreiðukenndu miðjunni.
Staðfestu að seiglubúnaður þinn virki í raun
Hér vinnur glundroðaverkfræði fyrir sér. Kerfi þitt er fullt af búnaði sem á að vernda þig: tímamörk sem stöðva kallara frá því að bíða endalaust, endurtilraunir sem breiða yfir tímabundin blikk, rofar sem hætta að hamra á bilandi ósjálfstæði og yfirfærsla sem skiptir yfir í biðstöðu þegar aðalkerfið deyr. Þessi mynstur, rædd í kafla 3.5, eru munurinn á afmörkuðu vandamáli og flæðandi rofi. Vandinn er að þau eru sjaldan prófuð við skilyrðin sem þau eru til fyrir. Tímamörk stillt á 30 sekúndur þegar frestur kallarans sjálfs er 2 sekúndur gera ekkert. Endurtilraun án veldisundanhalds breytir einni erfiðri þjónustu í álagsstorm. Rofi sem aldrei var æfður kann að vera rangt stilltur og aldrei slá út, eða slá stöðugt út. Glundroðatilraunir eru hvernig þú staðfestir að hvert þeirra hegðar sér eins og hannað þegar bilunin sem það ver gegn berst í raun. Gerðu ráð fyrir að hver óprófaður öryggisbúnaður sé bilaður þar til tilraun sannar annað.
Byrjaðu á leikdögum áður en þú sjálfvirknivæðir
Byrjaðu ekki á sjálfvirkum vettvangi sem sprautar bilunum samfellt. Byrjaðu á leikdegi: tímasettri, hagnýtri æfingu þar sem teymi kemur saman, velur sviðsmynd, sprautar bilun í stýrðu umhverfi og fylgist með saman. Áður en jafnvel það, borðæfing, þar sem þú ferð yfir sviðsmynd á töflu án þess að snerta kerfið, dregur fram göt í keyrsluhandbókum, viðvörunum og eignarhaldi á nánast engum kostnaði. Leikdagar eru innkeyrslan þín. Þeir byggja vöðvann við að mynda tilgátur, halda sprengisvæði í skefjum og lesa kerfið undir álagi og þeir byggja traustið við forystu og nágrannateymi sem þú þarft áður en nokkur leyfir þér að keyra tilraunir í framleiðslu. Þeir styrkja líka atvikaviðbrögð beint, því færnin er sú sama og bakvaktarverkfræðingar þínir nota í raunverulegu atviki (kafli 9.3). Keyrðu fyrstu leikdagana í prófunarumhverfi, síðan í framleiðslu á rólegum tímum með lítið sprengisvæði og víkkaðu svo.
Haltu sprengisvæðinu í skefjum af ásetningi
Mikilvægasta öryggisvenjan er að takmarka mögulegan skaða hverrar tilraunar. Byrjaðu á minnsta umfangi sem getur kennt þér eitthvað: eitt tilvik, eitt prósent umferðar, eitt ókritískt ósjálfstæði, eitt aðgengissvæði. Skilgreindu stöðvunarskilyrði áður en þú byrjar, tengdu þau við stöðugs ástands mælikvarða þína og gerðu að stöðva tilraunina eina aðgerð sem hver sem er sem fylgist með getur ræst. Kjóstu að keyra á vinnutíma þegar teymið er vakandi og mannað, ekki yfir nótt þegar óvænt verður atvik án þess að nokkur horfi. Víkkaðu sprengisvæðið aðeins þegar minni tilraunir hafa runnið hreint og traust þitt er sannarlega meira. Aginn í afmörkun er það sem aðgreinir glundroðaverkfræði frá rofi sem þú olli sjálfur.
Vaxtu í átt að samfelldri, sjálfvirkri seiglustaðfestingu
Stöku leikdagar finna veikleika, en kerfi breytast á hverjum degi og lagfæring frá síðasta ársfjórðungi getur hljóðlega gengið til baka. Þroskaða lokaástandið er samfelld staðfesting: valið safn seiglutilrauna sem keyra sjálfvirkt, í leiðslu eða á áætlun, svo afturför í tímamörkum, endurtilraunastefnu eða yfirfærsluleið sé gripin innan daga frekar en í næsta raunverulega rofi. Hér unnu verkfæri eins og Chaos Monkey frá Netflix, sem slekkur af handahófi á tilvikum í framleiðslu til að neyða verkfræðinga til að smíða þjónustur sem þola tilvikamissi, orðstír sinn. Sjálfvirknivæddu aðeins tilraunirnar sem þú skilur og treystir nú þegar úr handvirkum keyrslum. Samfelldur glundroði ofan á óþroskað kerfi er leið til að búa til atvik, ekki traust.
Tengdu tilraunir við hamfarabata og atvikanám
Glundroðaverkfræði lifir ekki ein. Stærri, sjaldgæfari sviðsmyndirnar, að missa heilt svæði, yfirfæra gagnagrunn, endurheimta úr afriti, tilheyra hamfarabataprófunum (kafli 9.5) og leikdagur er oft besta farartækið til að æfa þær áætlanir í stað þess að láta þær rotna sem óprófuð skjöl. Hinum megin ætti sérhver tilraun sem dregur fram veikleika að nærast inn í sömu námslykkju og raunverulegt atvik (kafli 9.3): skrif án sakbendingar, rakin lagfæring og eftirfylgnitilraun til að staðfesta að lagfæringin haldi. Þegar glundroðaniðurstöður, hamfarabataæfingar og atvikarýni renna allar inn í eitt bakslag vinnu færðu samsetta ávöxtun í stað dreifðra einskiptisæfinga.
Málamiðlanir: kostir og gallar
| Ákvörðun | Kostir | Gallar |
|---|---|---|
| Prófun í framleiðslu | Raunveruleg umferð, gögn og stærð. Niðurstöður eru sannar | Hætta fyrir notendur ef afmörkun bregst. Krefst þroska |
| Prófun aðeins í prófunarumhverfi | Öruggt, lítið í húfi, auðvelt að byrja | Missir raunhegðun. Falskt traust |
| Handvirkir leikdagar | Byggir færni og traust. Lítill verkfærakostnaður | Strjálir. Niðurstöður geta gengið til baka óséðar |
| Samfelldur sjálfvirkur glundroði | Grípur afturfarir hratt. Skalast | Þarfnast þroskaðra verkfæra og sýnileika fyrst |
| Breitt sprengisvæði | Afhjúpar stóra kerfisveikleika | Mikil áhætta. Mistök verða atvik |
| Þröngt sprengisvæði | Öruggt og stjórnanlegt | Getur misst tilkomnar þverþjónustubilanir |
Kjarnaspennan er raunsæi gegn öryggi. Niðurstöðurnar sem þú vilt mest koma úr framleiðslu, því það er eini staðurinn þar sem kerfi þitt mætir raunverulegri umferð, raunverulegum gögnum og raunverulegri stærð, samt er framleiðsla einmitt þar sem misheppnuð tilraun skaðar notendur. Lausnin er ekki að velja hlið. Hún er að vinna sér inn leiðina að framleiðslu smám saman: sanna forsendur þínar, æfa í prófunarumhverfi, keyra síðan litlar, vel afmarkaðar tilraunir í framleiðslu með stöðvunarskilyrði tengd lifandi mælikvörðum og víkka umfang aðeins eftir því sem sönnunargögn safnast. Hin endurtekna spennan, handvirkt gegn sjálfvirku, leysist eins með tímanum. Byrjaðu handvirkt til að byggja skilning og traust, sjálfvirknivæddu síðan tilraunirnar sem þú hefur komið til að reiða þig á, svo seigla sem þú staðfestir einu sinni haldist staðfest.
Spurningar til að ræða með teyminu
Erum við í raun tilbúin að keyra glundroðatilraunir og hvernig myndum við vita það? Það er freistandi að byrja að sprauta bilunum því það hljómar háþróað, en glundroðaverkfræði á ósýnilegu kerfi án skýrrar heilsuskilgreiningar og án hraðrar afturköllunar er bara sjálfsköpuð niðurtími. Komdu með heiðarleg sönnunargögn í þessa umræðu: getið þið séð árangurshlutföll beiðna og töf í rauntíma, hafið þið samþykkta skilgreiningu á stöðugu ástandi og getið þið stöðvað tilraun og náð ykkur á sekúndum? Fyrir stórt teymi er svarið oft ólíkt eftir þjónustu, svo gagnlega úttakið er viðbúnaðarviðmið sem þjónusta verður að standast áður en hún er gjaldgeng í tilraunir. Í regluverkuðu umhverfi tvöfaldast það viðbúnaðarviðmið sem stýring sem þú getur sýnt úttektaraðila. Ef heiðarlega svarið er að þið eruð ekki tilbúin er verðmætasta glundroðavinnan sem þið getið gert þennan ársfjórðung að byggja sýnileika- og afturköllunargeturnar sem gera ykkur tilbúin.
Hver er sprengisvæðisstefna okkar og hver hefur vald til að stöðva tilraun? Sérhver glundroðatilraun ber einhverja áhættu fyrir raunverulega notendur og munurinn á verðmætri niðurstöðu og atviki sem þú olli er hve þétt þú hélst henni í skefjum. Ræðið áþreifanlegu mörkin: hvaða brot umferðar, hve mörg tilvik, hvaða umhverfi, hvaða tíma dags og hvaða mælikvarðaþröskuldar stöðva keyrsluna sjálfvirkt. Ákveðið fyrirfram hver fylgist með hverri tilraun og hver heldur eins aðgerðar drápsrofanum, því tilraun sem enginn getur stöðvað hratt er ekki afmörkuð. Fyrir stóra skipulagsheild er þessi stefna það sem leyfir mörgum teymum að gera tilraunir án þess að nokkurt þeirra taki óvart niður sameiginlegt ósjálfstæði. Svarið ætti að vera skrifað niður, samþykkt með teymunum sem þjónustur þeirra þú gætir haft áhrif á og meðhöndlað sem forsendu þess að keyra nokkuð í framleiðslu.
Hvaða seiglubúnaður telur okkur trú um að verndi okkur og höfum við nokkru sinni í raun prófað hann? Flest kerfi eru full af tímamörkum, endurtilraunum, rofum, skyndiminnum og yfirfærsluleiðum sem voru stilltar einu sinni og aldrei æfðar undir bilununni sem þær eru til fyrir. Búðu til lista yfir búnaðinn sem þið treystið á, spyrðu síðan fyrir hvern hvenær hann var síðast staðfestur að virka undir raunverulegri sprautaðri bilun. Sjónarmiðið á móti er tími: að staðfesta hvern búnað kostar verkfræðifyrirhöfn og alltaf er eiginleikafrestur. Komdu með mótsönnunargögn við þá mótbáru, nefnilega kostnað fyrra rofs sem virkur rofi eða rétt tímamörk hefðu afmarkað. Svarið ætti að breyta huggunarlegum lista yfir gert ráð fyrir vernd í forgangsraðað bakslag tilrauna, byrjandi á búnaðinum þar sem bilun myndi skaða mest.
Hvað verður að vera satt áður en við keyrum tilraun í framleiðslu frekar en prófunarumhverfi og hvaða þjónustur hafa unnið sér þann rétt í dag? Niðurstöðurnar sem þú vilt mest koma úr framleiðslu, því það er eini staðurinn þar sem kerfi þitt mætir raunverulegri umferð, raunverulegum gögnum og raunverulegri stærð, samt er framleiðsla líka eini staðurinn þar sem misheppnuð tilraun skaðar raunverulega notendur. Fyrir stórt teymi er heiðarlegi veruleikinn að ólíkar þjónustur eru á ólíkum viðbúnaðarstigum, svo almenn „engin glundroðaverkfræði í framleiðslu“ regla sóar besta náminu þínu á meðan almenn „já“ býður sjálfsköpuðum rofum. Komdu með sönnunargögn á þjónustu: gæði sýnileika hennar, hvort stöðugt ástand er skilgreint og viðvörunarhæft, hve hröð afturköllun er og feril hreinna tilrauna í prófunarumhverfi sem myndu réttlæta að útskrifa hana. Í fyrirtækja- og opinberu umhverfi skaltu tengja framleiðsluhliðið við skjalfesta stýringu sem nefnir hver samþykkir eflinguna og hvaða stöðvunarskilyrði eru tengd lifandi mælikvörðum, svo úttektaraðilinn sjái yfirvegaða, rökstudda ákvörðun frekar en teymi sem spinnur með raunverulegum notendum.
Þegar glundroðatilraun dregur fram veikleika, hvert fer sú niðurstaða og hvernig stöðvum við hana frá því að rotna óhreyfð? Áætlun sem uppgötvar veikleika en lagar þá aldrei er verri en engin áætlun, því hún brennir fyrirhöfn, rýrir traust og kennir fólki að tilraunir séu leikhús. Þrýstingurinn á móti er alltaf eiginleikavegvísirinn: seiglulagfæring finnst sjaldan eins brýn og næsta útgáfa þar til rofið sem hún hefði komið í veg fyrir berst í raun. Komdu með núverandi stöðu seigluvinnubakslags ykkar í umræðuna: hve margar glundroðaniðurstöður eru opnar, hve gömul sú elsta er og hvort niðurstöður úr tilraunum, hamfarabataæfingum og atvikarýni renni í eina sameiginlega biðröð eða dreifist yfir teymi. Komið ykkur saman um hver á hverja lagfæringu og hver keyrir eftirfylgnitilraunina sem staðfestir að hún haldi. Fyrir stóra eða regluverkaða skipulagsheild skaltu nefna vettvanginn sem rýnir bakslagið á föstum takti og hefur vald til að forgangsraða seiglulagfæringu fram yfir eiginleika, því niðurstaða sem enginn ber ábyrgð á að loka er áhætta sem þú hefur aðeins skjalfest frekar en fjarlægt.
Erum við tilbúin að sjálfvirknivæða einhverjar tilrauna okkar í samfellda staðfestingu og hverjar nákvæmlega? Stöku leikdagar finna veikleika, en kerfi breytast daglega og lagfæring frá síðasta ársfjórðungi getur hljóðlega gengið til baka, svo þroskaða lokaástandið er valið safn tilrauna sem keyra sjálfvirkt og grípa afturfarir innan daga. Hættan er að sjálfvirknivæða of snemma: samfelldur glundroði lagður ofan á óþroskað kerfi með veikan sýnileika býr til atvik hraðar en innsýn. Komdu með listann yfir tilraunir sem þið hafið keyrt handvirkt nógu oft til að treysta fullkomlega, sprengisvæðisstýringarnar og stöðvunarskilyrðin sem myndu stýra þeim án eftirlits og vöktunina sem myndi grípa sjálfvirka keyrslu fara úrskeiðis klukkan þrjú um nótt þegar enginn horfir. Fyrir stórt fyrirtæki eða opinbera stofnun skaltu vega aukna skoðun sem eftirlitslaus bilanasprautun býður: breytingastjórnarsamþykki, úttektarslóðina sem hver sjálfvirk keyrsla verður að skilja eftir og skýra ábyrgð á tímasettri tilraun sem fellur saman við raunverulegt atvik. Sjálfvirknivæddu aðeins tilraunirnar sem þú skilur nú þegar og haltu hinum handvirkum þar til þær vinna sér inn sama traust.
Sjónarhorn eftir geirum
Sprotafyrirtæki. Hraði og lífsafkoma ráða, svo eyddu engu í glundroðavettvang. Keyrðu einn níutíu mínútna leikdag í prófunarumhverfi gegn því eina ósjálfstæði sem bilun í myndi í raun drepa þig, yfirleitt greiðslur, auðkenning eða aðalgagnageymsla. Sprautaðu bilunina með grófum milliþjóni eða drepnu ferli, horfðu á hvað brotnar, lagaðu vantandi tímamörk eða varaleið og haltu áfram. Allur tilgangurinn er að grípa augljósa sjálfsköpuðu rofið ódýrt áður en viðskiptavinur gerir það, ekki að byggja aga sem þú getur ekki mannað.
Lítið fyrirtæki. Án áreiðanleikasérfræðings og með þröngt fjárhagsáætlun skaltu líta á seigluprófanir sem reglubundna, yfirvegaða æfingu frekar en áætlun sem þú manna. Hallaðu þér að bilanasprautunareiginleikunum sem skýjaveitan þín eða stýrð verkfæri innihalda nú þegar í stað þess að kaupa sérstakan vettvang og beindu tilraunum að örfáu ósjálfstæðunum sem viðskiptavinur tæki eftir. Rammaðu það sem tryggingu: eftirmiðdagur sem fer í að staðfesta að afrit þín endurheimtist og að greiðsla þín skerðist mjúklega er langtum ódýrari en rofið sem sannar að þau gera það ekki.
Stórfyrirtæki. Vandinn er að samræma mörg teymi gegn sameiginlegum ósjálfstæðum í stærð, svo staðlaðu viðbúnaðarviðmiðið, sprengisvæðisstefnuna og stöðvunarskilyrðatengingarnar sem hvert teymi verður að standast áður en það keyrir í framleiðslu. Beindu glundroðaniðurstöðum, hamfarabataæfingum og atvikarýni í eitt seigluvinnubakslag með skýru eignarhaldi og notaðu ársfjórðungslega leikdaga auk valins safns sjálfvirkra tilrauna til að uppfylla rekstrarseiglu væntingar með sönnunargögnum. Stýrðu hver má hafa áhrif á sameiginlega þjónustu svo tilraun eins teymis taki ekki niður innviði sem aðrir treysta á.
Hið opinbera. Innkaupareglur, gagnsæi og opinber ábyrgð móta starfið. Rekstrarsamfelluumboð krefjast oft reglulegra æfinga hvort sem er, svo keyrðu þær sem lifandi leikdaga sem framleiða raunverulegar niðurstöður frekar en möppu sem enginn opnar og haltu úttektarslóð hverrar tilraunar, sprengisvæðis hennar og niðurstöðu. Þar sem bilanasprautunarverkfæri eru keypt skaltu krefjast þess að þau falli innan öryggis- og gagnameðhöndlunarreglna og taktu frá framleiðslutilraunir á borgarasnúnum þjónustum fyrir fast afmarkaða, samþykkta glugga. Sönnunargögnin sem glundroðaáætlun framleiðir eru nákvæmlega það sem eftirlitsaðili eða úttektaraðili býst við að sjá.
Dæmi
Sprotafyrirtæki. Fimmtán manna sprotafyrirtæki rekur vefforrit á örfáum þjónustum og er háð API þriðja aðila fyrir greiðslur. Enginn hefur tíma fyrir glundroðavettvang, svo teymið keyrir níutíu mínútna leikdag í prófunarumhverfi. Þau mynda tilgátu: ef greiðsluAPI-ið fer að skila villum ætti greiðslan að sýna skýr endurtilraunaskilaboð og setja pöntunina í röð frekar en að hrynja. Þau sprauta 500-svörum með einföldum milliþjóni og uppgötva að framendinn frýs endalaust því biðlarakallið hefur engin tímamörk. Þau bæta við tímamörkum og vinalegri varaleið, endurkeyra tilraunina til að staðfesta lagfæringuna og skrifa tveggja málsgreina athugasemd í sameiginlegt skjal. Heildarkostnaður: einn eftirmiðdagur og einn mjög raunverulegur galli gripinn áður en viðskiptavinur rakst á hann.
Stórfyrirtæki. Alþjóðlegur banki verður að sýna eftirlitsaðilum rekstrarseiglu gegn alvarlegum en trúverðugum sviðsmyndum. Áreiðanleikateymi hans rekur áætlun ársfjórðungslegra leikdaga auk safns sjálfvirkra tilrauna í framleiðslu. Ein sviðsmynd yfirfærir aðalfærslugagnagrunninn yfir í biðstöðu sína á rólegum umferðartíma, með þröngt afmarkað sprengisvæði og stöðvunarskilyrði tengd færsluárangurshlutfalli. Fyrsta keyrslan afhjúpar að niðurstreymissáttarþjónusta hefur endurtilraunastefnu án undanhalds, sem framleiðir álagstopp sem seinkar endurheimt langt umfram endurheimtartímamarkmiðið í hamfarabataáætluninni (kafli 9.5). Niðurstaðan fer í sama bakslag og atvikarýni, endurtilraunastefnan er löguð með veldisundanhaldi og eftirfylgnitilraun staðfestir að yfirfærslan klárast nú innan markmiðs. Allt verkefnið verður að sönnunargögnum fyrir eftirlitsaðilann.
Hið opinbera. Landsbundin stofnun sem rekur borgarasnúna bótagátt er skylduð til að viðhalda rekstrarsamfellu gegnum truflanir. Frekar en að líta á samfelluáætlun sína sem möppu sem enginn opnar keyrir stofnunin árlega samfelluæfingu sem lifandi leikdag. Teymið líkir eftir missi aðalgagnavers og gengur yfirfærsluna á varastað, á meðan það sprautar sérstaklega töf í auðkenningarósjálfstæði til að sjá hvort gáttin skerðist mjúklega. Þau læra að óprófað vöktunargat skildi bakvaktarteymið blint á að auðkenningarþjónustan hægði á sér, svo viðvaranir kviknuðu seint. Stofnunin lokar sýnileikagatinu, uppfærir keyrsluhandbækur og tímasetur sömu æfingu fyrir næsta ár, sem breytir reglufylgnikröfu í raunverulega, prófaða seiglu fyrir mikilvæga opinbera þjónustu.
Viðskiptarök: hvatar, ávöxtun fjárfestingar og heildarkostnaður
Ávöxtun glundroðaverkfræði kemur af rofum sem verða aldrei. Eitt stórt rof fyrir stóra þjónustu getur kostað allt frá tugum þúsunda til milljóna í glötuðum tekjum, eftirlitsviðurlögum, úrbótavinnu og orðsporsskaða sem varir lengi eftir að þjónusta er endurheimt. Glundroðatilraunir breyta þeim ófyrirsjáanlegu, dýru óvæntu uppákomum í ódýrar, tímasettar niðurstöður sem þú lagar á eigin tímalínu með verkfræðinga að horfa og afturköllun tilbúna. Að finna brotin tímamörk á stýrðum leikdegi kostar eftirmiðdag. Að finna þau í raunverulegu atviki kostar rof, óðagot allra og traust notenda þinna. Reikningurinn hallar leikdeginum með miklum mun.
Heildareignarkostnaðurinn er hóflegur þegar forsendurnar eru til, því glundroðaverkfræði endurnýtir sýnileika-, viðvörunar- og afturköllunarfjárfestingarnar sem þú þarft hvort sem er. Heiðarlegu kostnaðarliðirnir eru verkfræðitími til að keyra tilraunir, nokkur verkfæri til að sprauta bilunum og halda sprengisvæði í skefjum og menningarvinnan við að gera forystu þægilega með að innleiða bilun viljandi. Sá síðasti er raunverulega hindrunin og leiðin í gegn er að byrja í prófunarumhverfi, sýna niðurstöður sem varpast á peninga eða áhættu og láta fáeinar afmarkaðar framleiðslutilraunir byggja traust. Til að færa rök við forystu skaltu ramma glundroðaverkfræði sem mælanlega tryggingu: settu fram kostnað nýlegra atvika, sýndu hver þeirra seiglutilraun hefði gripið og leggðu til áætlun sem byrjar smátt og víkkar aðeins eftir því sem hún sannar sig. Í regluverkuðu og opinberu umhverfi skaltu bæta við reglufylgnihorninu, því rekstrarseiglupróf og samfelluæfingar eru í auknum mæli væntanlegar og glundroðaáætlun er hvernig þú uppfyllir þá væntingu með sönnunargögnum frekar en pappírsvinnu.
Andmynstur og gildrur
- Glundroði án sýnileika. Að sprauta bilunum í kerfi sem þú sérð ekki er ágiskun með aukaskrefum. Þú veldur skaða og lærir ekkert.
- Engin skilgreining á stöðugu ástandi. Án samþykkts heilsumælikvarða geturðu ekki sagt hvort tilraun afhjúpaði vandamál eða olli því.
- Engin tilgáta. Að brjóta hluti af handahófi er ekki glundroðaverkfræði. Það er skemmdarverk með fínu nafni og engum niðurstöðum.
- Óafmarkað sprengisvæði. Að sleppa litlu, öruggu tilraununum og fara beint í framleiðslubreiða bilun breytir prófi í sjálfsköpuð rof.
- Engin stöðvunarleið. Tilraun sem þú getur ekki stöðvað samstundis er ekki tilraun. Hún er atvik sem bíður gikks.
- Sjálfvirknivæðing of snemma. Samfelldur glundroði ofan á óþroskað kerfi býr til atvik hraðar en innsýn.
- Niðurstöður sem fara hvergi. Að uppgötva veikleika og laga hann aldrei sóar æfingunni og rýrir traust á allri áætluninni.
- Sök eftir slæma tilraun. Að refsa verkfræðingnum sem keyrði tilraun sem afhjúpaði raunverulegan galla tryggir að enginn keyri þá næstu.
Þroskalíkan
- Stig 1, Upphaf: Seigla er gert ráð fyrir, ekki prófuð. Bilanir uppgötvast í framleiðslu í raunverulegum atvikum. Engir leikdagar, engin bilanasprautun og oft engin skýr skilgreining á hvernig heilbrigt lítur út. Teymið lærir um veikleika sína á erfiða mátann, eitt rof í einu.
- Stig 2, Þróun: Teymið heldur stöku leikdaga, yfirleitt í prófunarumhverfi, með skilgreinda sviðsmynd og tilgátu. Stöðugt ástand er skilgreint fyrir fáeinar lykilþjónustur og grunnsýnileiki er til. Niðurstöður eru fangaðar og sumar lagaðar, en venjan er ósamræmd milli teyma og veltur á einstökum málsvörum frekar en staðfestri aðferð.
- Stig 3, Stöðlun: Glundroðatilraunir eru skjalfest, skipulagsheildarvíð venja með framfylgdum sprengisvæðisstefnum, stöðvunarskilyrðum og viðbúnaðarviðmiðum sem þjónusta verður að standast áður en hún gerir tilraunir í framleiðslu. Tilraunir keyra í framleiðslu undir stýrðum skilyrðum, niðurstöður renna í sameiginlegt seiglubakslag ásamt atvikarýni og hamfarabataæfingum og seiglubúnaður er staðfestur frekar en gert ráð fyrir. Hvert teymi fylgir sömu handbók.
- Stig 4, Stjórnun: Áætlunin er mæld og stýrð með gögnum gegn grunnlínum. Þú rekur þekju (hvaða mikilvægu þjónustur og hvaða búnaður, svo sem tímamörk, endurtilraunir, rofar og yfirfærsla, hafa verið staðfest undir raunverulegri sprautaðri bilun og hve nýlega), hlutfallið sem tilraunir afhjúpa niðurstöður á, meðaltíma til að loka niðurstöðu og hve oft áður staðfestur búnaður gengur til baka. Þessir mælikvarðar eru rýndir á föstum takti, framleiðslueflingu er hliðuð á sönnunargögnum frekar en skoðun og tilraunum er forgangsraðað eftir mældri áhættu búnaðarins sem enn er óstaðfestur.
- Stig 5, Samhæfing: Valið safn tilrauna keyrir samfellt og sjálfvirkt og grípur afturfarir innan daga og áætlunin aðlagast eftir því sem kerfið og áhættumynd þess breytast. Glundroðaverkfræði er samþætt um skipulagsheildina með afhendingarleiðslum, atvikanámi og hamfarabataprófunum, svo nýjar þjónustur erfi seiglustaðfestingu sjálfgefið. Seigla er samfellt staðfestur eiginleiki kerfisins og forysta lítur á áætlunina sem staðlaða áhættustýringu sem er fínpússuð á sönnunargögnum frekar en sértækt frumkvæði.
Hugmyndir til umræðu
- Hvernig ákveðið þið hvaða þjónusta vinnur sér fyrst rétt til að keyra glundroðatilraunir í framleiðslu og hvað þarf að vera satt áður en hún gerir það?
- Þegar glundroðatilraun dregur fram alvarlegan veikleika, hver á lagfæringuna og hvernig haldið þið niðurstöðunni frá því að sitja óhreyfð í bakslagi?
- Hvar er línan milli glundroðatilraunar, hamfarabataæfingar og leikdags í ykkar samhengi og skiptir greinarmunurinn jafnvel máli fyrir hvernig þið skipuleggið þær?
- Hvernig myndið þið sannfæra efagjarnan stjórnanda um að það að sprauta bilun viljandi í framleiðslu sé öruggara en óbreytt ástand þess að bíða eftir raunverulegum rofum?
- Hver er minnsta, verðmætasta fyrsta tilraun sem teymi ykkar gæti keyrt í næsta mánuði og hvað myndi stöðva ykkur í að gera hana?
- Hvernig ættu seigluprófanir að vera ólíkar milli borgarasnúinnar opinberrar þjónustu með samfelluumboð og innra fyrirtækjaverkfæris með lítinn notendahóp?
Helstu atriði
- Glundroðaverkfræði er agaðar, tilgátudrifnar tilraunir til að byggja traust á seiglu, ekki handahófskennd bilun.
- Komdu á sýnileika, skilgreiningu á stöðugu ástandi og hraðri afturköllun áður en þú sprautar eina bilun.
- Sprautaðu raunhæfum bilunum (töf, villum, auðlindaþurrð, ósjálfstæðisbilun) og notaðu þær til að staðfesta að tímamörk, endurtilraunir, rofar og yfirfærsla virki í raun.
- Byrjaðu á borðæfingum og leikdögum, haltu sprengisvæði í skefjum af ásetningi og vinndu þig í átt að framleiðslu og sjálfvirkni.
- Tengdu tilraunir við hamfarabataprófanir (kafli 9.5) og atvikanám (kafli 9.3) svo niðurstöður safnist í eitt seiglubakslag.
- Meðhöndlaðu niðurstöður án sakbendingar og lagaðu þær. Tilraun þar sem lærdómnum er ekki sinnt er verri en engin tilraun.
Heimildir og frekari lestur
- Casey Rosenthal, Nora Jones, Chaos Engineering: System Resiliency in Practice
- Russ Miles, Learning Chaos Engineering: Discovering and Overcoming System Weaknesses Through Experimentation
- Mikolaj Pawlikowski, Chaos Engineering: Crash Test Your Applications
- Ali Basiri et al., Chaos Engineering (IEEE Software, 2016)
- Betsy Beyer, Chris Jones, Jennifer Petoff, Niall Richard Murphy, Site Reliability Engineering: How Google Runs Production Systems
- Michael T. Nygard, Release It! Design and Deploy Production-Ready Software
- Principles of Chaos Engineering, principlesofchaos.org