Mitä kaaostekniikka on ja miksi se on tärkeää?

By Kolton Andrus

Miksi kaaostekniikka on tärkeää? Tarkastellaanpa ensin, miksi laadunvarmistus (QA) on ylipäätään olemassa.  Yksinkertaisesti sanottuna QA on olemassa, koska vaikka kuinka yrittäisimme luoda täydellistä ohjelmistoa, joka tekee aina sen, mitä sen on suunniteltu ja tarkoitettu tekevän, todellisuus ei tunnu sallivan sitä.  Virheitä pääsee mukaan. Koneet tulkitsevat koodiamme eri tavalla kuin tarkoitimme. Kaikenlaista tapahtuu. Laatutekniikan tarkoituksena on […]

Miksi kaaostekniikka on tärkeää? Tarkastellaanpa ensin, miksi laadunvarmistus (QA) on ylipäätään olemassa. 

Yksinkertaisesti sanottuna QA on olemassa, koska vaikka kuinka yrittäisimme luoda täydellistä ohjelmistoa, joka tekee aina sen, mitä sen on suunniteltu ja tarkoitettu tekevän, todellisuus ei tunnu sallivan sitä. 

Virheitä pääsee mukaan. Koneet tulkitsevat koodiamme eri tavalla kuin tarkoitimme. Kaikenlaista tapahtuu. Laatutekniikan tarkoituksena on yrittää löytää nämä tahattomat ongelmat ennen asiakkaitamme. 

Mitä kaaostekniikka on?

Kaaostekniikka on järjestelmällinen lähestymistapa mahdollisten häiriöiden tunnistamiseen ennen kuin ne aiheuttavat käyttökatkoja. Kaaostekniikassa suunnittelet häiriöiden syöttökokeita ja vertaat sitä, mitä uskot tapahtuvan, siihen, mitä järjestelmissäsi todella tapahtuu. “Rikot asioita tarkoituksella” oppiaksesi rakentamaan vikasietoisempia järjestelmiä.

Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

Miksi kaaostekniikka on tärkeää?

Koska järjestelmät muuttuvat. Perinteisesti QA suorittaa monenlaisia testejä ja testaustyyppejä etsiäkseen näitä ongelmia ennakoivasti kauan ennen kuin koodi päätyy tuotantoon. Nämä testit suoritetaan koontiversion lopussa ja ennen kuin koodi julkaistaan, yleensä testi- tai esituotantoympäristössä eikä tuotantoympäristössä. 

Tähän asti kaikki on hyvin, jos toimimme perinteisen ohjelmistokehitys- ja käyttöönottomallin mukaisesti. Monoliittiset rakenteet ja käyttöönotot yrityksen omistamilla koneilla tarjoavat paljon hallintaa. Tämä hallinta tuo mukanaan vakautta. Sen ansiosta testi- ja esituotantoympäristöt muistuttavat tuotantoympäristöjä, mikä mahdollistaa niissä onnistuvan testaamisen.

Hajautetut järjestelmät ovat erilaisia. Pilvi on erilainen. Emme hallitse infrastruktuuria. Se muuttuu jatkuvasti. Infrastruktuuri muuttuu suunnittelumme mukaisesti, kun yksittäiset palvelut ja mikropalvelut sekä kuormantasaus käynnistävät uusia laskentasolmuja tai poistavat niitä tarpeen mukaan. Vikasietoisuusjärjestelmät mukautuvat varmistaakseen riskien hallinnan. Jatkuva muutos aiheuttaa odottamattomia, emergenttejä toimintatapoja. Näitä toimintatapoja emme aina pysty ennustamaan, mutta voimme toistaa ja aiheuttaa niitä käyttämällä yhtä testaustapaa, jota kutsutaan kaaostekniikaksi.

Testauksen on mukauduttava järjestelmien muuttuessa

Emme voi testata tehokkaasti kaikkea, mitä tuotantokoodimme ja ympäristö kohtaavat, testaamalla jossain toisessa ympäristössä. Voimme testata monia asioita, ja perinteinen QA suoriutuu niistä varsin hyvin ja sen tulisikin jatkaa niiden tekemistä, vaikka osa niistä voitaisiin ehkä nykyään tehdä automaation avulla koontiputken aikana. Nykyisillä QA-menetelmillämme emme kuitenkaan voi testata esimerkiksi sitä, miten hajautettu järjestelmämme reagoi, kun tietovaraston ja useiden laskentasolmujen välinen verkkoliikenne kuormittuu liikaa ja viive kasvaa.

Automaattiset ja ihmisten suorittamat testimme eivät ota huomioon nopeasti muuttuvaa tuotantoympäristöä, jossa palveluita käynnistyy ja sammuu kysynnän mukaan. Ainoa tapa testata, säilyykö hajautettu järjestelmä luotettavana muuttuviin tuotanto-olosuhteisiin liittyvien emergenttien toimintatapojen edessä, on tehdä kuten kaikissa testaustavoissa tehdään: kokeilla ja ottaa selvää.

Näin kaaostekniikka toimii: testaa ja opi häiriöiden kautta

Meillä kaikilla on käytettävyyttä koskevia tavoitteita. Haluamme kaikki parantaa suorituskykyämme. Tätä varten meidän on hyödynnettävä kaikkia käytettävissä olevia resursseja oppiaksemme mahdollisimman paljon siitä, miten järjestelmämme käsittelevät häiriöitä – olipa kyse käyttäjän epäonnistumisesta sopivien tietojen syöttämisessä lomakekenttään tai pilvipalvelun järjestelmäkomponentin toimimattomuudesta odotetulla tavalla.

 “Mitä tapahtuu, kun?” on kysymys, jonka me kaikki esitämme mielellämme. Sitten kokeilemme ja otamme selvää.

Koska järjestelmämme ja järjestelmäsuunnittelumme ovat kehittyneet ennennäkemättömällä tavalla, myös testaustapojemme on kehityttävä, jotta ymmärtäisimme paremmin, miten hajautetut järjestelmämme käsittelevät häiriöitä ja miten komponenttien ja riippuvuuksien häiriöt vaikuttavat koko järjestelmään. Tämänkaltaista kokonaisvaltaista testausta varten kaaostekniikka on olemassa, koska sen avulla voidaan testata koko järjestelmää sellaisena kuin se tuotannossa toimii.

Kaaostekniikkaohjelma aloitetaan pienessä mittakaavassa testaamalla asioita, jotka jo tunnemme tai joiden uskomme olevan meille tuttuja:

  • Havaitseeko valvontajärjestelmämme aktiivisesti tietyn raja-arvon ylittävän verkkoviiveen? 
  • Laukaiseeko se ilmoituksen päivystävälle insinöörille tai ehkä automaattisen lievennystoimenpiteen? 
  • Onko kokoonpanomme poikennut ajan mittaan alkuperäisestä, vai käynnistetäänkö laskentasolmuja edelleen määritysten mukaisesti?

Miten kukin palveluinstanssi suoriutuu kevyessä testauksessa? Entä keskitasoisessa tai raskaassa? Niiden kaikkien pitäisi olla samanlaisia, ja kuormantasauksen pitäisi jakaa kuormitus niiden välillä asianmukaisesti. Mitä tapahtuu, jos yksi instanssi alkaa vastaanottaa huomattavasti suurempaa kuormaa kuin muut, koska kuormantasauspalvelussamme on ongelmia?

More Articles

Kaoottisten järjestelmien järjestelmällinen testaus tuo elintärkeitä hyötyjä

Testaamme tieteellistä menetelmää käyttäen, aloittaen pienestä ja toimien harkitusti. Suunnittelemme ensimmäiset kokeet niin, että vaikutusalue, eli niiden palvelujen ja komponenttien joukko, joihin uskomme kokeen voivan vaikuttaa, jää mahdollisimman pieneksi ja kokeen parametrien vaikutus mahdollisimman vähäiseksi. 

Kun onnistumme tässä, voimme päättää edetä vaihe vaiheelta, kasvattaen luottamustamme järjestelmäämme tai kasvattaen priorisoitua kehitysjonoamme parannuksista, joita aiomme tehdä. Kun teemme nämä parannukset ja testaamme uudelleen käyttäen samaa kaaoskoetta ja samoja parametreja, järjestelmä läpäisee testin ja tiedämme sen olevan luotettavampi kuin aiemmin.

Tämä on ainoa tapa oppia, miten järjestelmämme todellisuudessa käsittelevät tuotantoympäristössä tapahtuvia häiriöitä, joiden vaikutukset asiakkaamme viime kädessä kokevat. Jos löydämme pienet ongelmat nyt, ennen kuin ne ehtivät ketjuttua suuriksi ongelmiksi, voimme varmistaa, että järjestelmätason häiriöitä tapahtuu yhä harvemmin.

Tämä tekee kaaostekniikasta erinomaisen luotettavuustyökalun. Se on toimintatapa, joka auttaa meitä tekemään pilvessä ja suuressa mittakaavassa sen, minkä pystyimme aiemmin saavuttamaan pienemmissä, hallituissa ympäristöissä perinteisen laadunvarmistuksen avulla.

Tämä tarkoittaa viime kädessä harvempia laajamittaisia tuotantohäiriöitä ja käyttökatkoja. Kun kaaostekniikkaa käytetään johdonmukaisesti, sellaiset palvelu- ja komponenttihäiriöt, joiden pitäisi odottaa tapahtuvan pilviympäristön kaaoksessa, eivät vaikuta asiakkaisiimme. He eivät itse asiassa edes koskaan saa tietää häiriöstä – ja juuri se on todellinen tavoitteemme.

Mitä seuraavaksi?

Puhuin kaaostekniikasta yksityiskohtaisemmin The QA Lead -podcastin jaksossa Jonathon Wrightin kanssa.

Toimittajan huomautus:

Voit pysyä ajan tasalla The QA Leadin muista podcasteista ja artikkeleista tilaamalla uutiskirjeen.

Voit myös liittyä jäseneksi ja saada käyttöoikeuden The QA Lead -yhteisön keskustelufoorumille, jossa voit jakaa parhaita käytäntöjä muiden laadunvarmistuksen ammattilaisten ja laatuinsinöörien kanssa. Toivottavasti tapaamme siellä!

Aiheeseen liittyvää luettavaa: 10 PARASTA LAATUINSINÖÖRITYÖN OHJELMISTOTYÖKALUA: KATTAVA OPAS

Kolton Andrus
CEO and Co-Founder of Gremlin, the world's first "Failure-as-a-Service" platform helping companies avoid outages and build more resilient systems.

You may also like