Il Chaos Engineering è definito come “disciplina per effettuare esperimenti su un sistema al fine di costruire la fiducia e la confidenza che il sistema resisterà in condizioni turbolente una volta in produzione (citazione tradotta dei Principles of Chaos Engineering).
In pratica il Chaos Engineering è una metodologia di testing del software (e delle infrastrutture IT) che evidenzia problemi prima che provochino disastri. Per quanto tu possa considerare affidabile il tuo software e per quanto tu abbia cercato di produrre un buon codice effettuandone i test, gli eventi negativi, purtroppo, accadono spesso e gli esempi si sprecano.
Non puoi prevedere eventi come alluvioni, terremoti ed altri eventi atmosferici che possono rendere offline interi data center. Non puoi prevedere problemi gravi nella linea elettrica o nell’hardware che possono tradursi in race condition e comportamenti anormali degli applicativi. Infine non puoi prevedere il più classico dei problemi: l’errore umano.
Più è complesso il sistema più è facile che un qualsiasi errore possa diventare grave.
Perchè serve il Chaos Engineering
Il rischio deve essere sempre gestito per le applicazioni soprattutto se sono critiche per il tuo business. Utilizzare il Chaos Engineering ti serve perchè:
- puoi determinare il rischio ed il costo ed impostare gli elementi come Service Level Indicators(SLI), Service Level Objectives (SLO) e Service Level Agreements (SLA);
- puoi testare i tuoi sistemi effettivamente in maniera completa senza lasciare nulla da parte;
- puoi emergere le proprietà e le componenti che magari sono più nascoste e che possono portare gravi problemi;
- puoi comprendere come adottare i piani di contingenza e di Business Continuity;
- puoi comprendere gli eventuali errori umani in produzione che normalmente non si riesce ad individuare durante i classici test come gli Unit Test e gli End-to-End.
In pratica grazie al Chaos Engineering riesci ad avere software, architetture, applicazioni pronte per qualsiasi grave problema. Se hai già provato un grave problema comprendi ancora di più perchè sarebbe stato ideale implementare il Chaos Engineering.
Tuxweb supporta lo stack della CNCF (https://landscape.cncf.io/card-mode?category=chaos-engineering&grouping=category) e oltre a fornire il supporto per realizzare piattaforme di chaos-engeneering supporta il progetto kubeinvaders (https://github.com/lucky-sideburn/kubeinvaders)
Perchè serve il Chaos Engineering
Queste tecniche di analisi infrastrutturale possono essere eseguite utilizzando diversi metodi. Un metodo comune è quello di utilizzare uno strumento di ingegneria del caos progettata per kubernetes come kubeinvaders, sviluppato per simulare guasti o eventi imprevisti sul sistema. Un altro metodo è quello di eseguire manualmente i guasti o gli eventi imprevisti sul sistema.
Prova subito la nostra demo online di kubeinvaders!
E’ una metodologia potente che può aiutare a migliorare la resilienza dei sistemi. Tuttavia, è importante notare che l’ingegneria del caos può anche causare guasti al sistema. Pertanto, è importante eseguire l’ingegneria del caos in modo sicuro e controllato.