Chaos engineering on Netflixin alunperin kehittämä filosofia, jolla pyritään parantamaan isojen hajautettujen järjestelmien vikasietoisuutta ajamalla erilaisia "kaaoskokeita" (chaos experiment) suoraan tuotantoympäristössä. Netflix aloitti tämän kehittämällä Chaos Monkey nimisen työkalun, joka toimii tuotantoympäristössä ja sammuttaa virtuaalikoneita sattumanvaraisesti. Tämä käytännössä pakottaa tiimit kehittämään palveluista sellaisia, että ne toipuvat tällaisista vikatilanteista. Myöhemmin vastaavia työkaluja on kehitetty lisää ja ne pystyvät injektoimaan ympäristöihin paljon erilaisia vikatilanteita, esimerkiksi verkkotason latenssia tai katkoksia, pakettihävikkiä ym, ja virtuaalikonetasolla kasvanutta CPU-kuormaa, muistin kulutusta tai muita suorituskykyyn vaikuttavia ongelmatilanteita. Hallitusti injektoitujen vikatilanteiden kautta järjestelmien vikasietoisuutta voidaan testata ja sitä kautta pyrkiä korjaamaan havaitut ongelmat. Chaos engineerig -filosofian ydin on ajaa testejä nimenomaan tuotantoympäristössä, jolloin voidaan varmistua siitä, että testit mahdollisimman tarkasti toistavat tosielämän vikatilanteita.
Chaos engineering -kokeiden suorittaminen tuotantoympäristössä vaatii pitkäjänteistä kehitystä ja kokeiden tarkkaa suunnittelua ja valmistelua. Tätä ennen pitää tietenkin olla suhteellisen hyvä käsitys siitä miten järjestelmä tulee käyttäytymään vikatilanteissa, ja yleensä kokeilla halutaankin testata jotain tiettyä järjestelmän osa-aluetta. Järjestelmien vikasietoisuuden parantumisen lisäksi toinen tärkeä hyöty on siinä että sovellustiimit oppivat toimimaan paremmin myös todelllisissa vikatilanteissa kun vikatilanteiden selvittelyä harjoitellaan hallitusti chaos engineering kokeiden kautta.
Vaikka chaos engineering -filosofian tavoitteena onkin pyrkiä tilanteeseen, jossa luottamus järjestelmän toimintaan on sillä tasolla, että kokeita voidaan ajaa tuotantoympäristössä riittävällä varmuudella siitä, että kokeet itsessään eivät aiheuteta isompaa hallitsematonta vikatilannetta, tähän ei ole tietenkään välttämätöntä pyrkiä heti alkuvaiheessa. Chaos engineering -työkaluista voi olla paljonkin hyötyä osana normaalia järjestelmien testausprosessia, jolloin mahdolliset ongelmat havaitaan mahdollisesti jo testausvaiheessa ja voidaan korjata ennen kuin tuotannossa vastaavia ongelmia edes ilmenee.
Chaos engineering -kokeiden hallintaan ja suorittamiseen löytyy useita avoimen lähdekoodin sovelluksia ja myös maksullisia apuvälineitä, esimerkiksi ChaosMesh, LitmusChaos ja Gremlin. Toimittaessa AWS-ympäristössä voidaan käyttää AWS:n omaa Fault Injection Simulator (FIS) -työkalua joka integroituu suoraan AWS-resursseihin ja pystyy simuloimaan useita erilaisia vikatilanteita.
Jussi Lehtiniemi
Senior Cloud Architect