{"id":18281,"date":"2022-02-21T07:30:37","date_gmt":"2022-02-21T06:30:37","guid":{"rendered":"https:\/\/www.unilab.eu\/?p=18281"},"modified":"2022-02-02T10:39:37","modified_gmt":"2022-02-02T09:39:37","slug":"ingegneria-del-caos","status":"publish","type":"post","link":"https:\/\/www.unilab.eu\/it\/articoli\/coffee-break-it\/ingegneria-del-caos\/","title":{"rendered":"Ingegneria del caos: migliorare il software, generando errori"},"content":{"rendered":"<p>Con i termini <strong>ingegneria del caos<\/strong> si fa riferimento a una metodologia di testing dei sistemi informatici, volta a scovare eventuali falle o punti deboli. La particolarit\u00e0 che la distingue dai comuni stress test, \u00e8 che la stessa si basa sui principi della teoria del caos e punta a generare eventi normalmente caratterizzati da una bassa probabilit\u00e0 di verificarsi.<\/p>\n<p>In pratica si tratta di <strong>esperimenti controllati<\/strong> e capaci di migliorare la sicurezza informatica, rilevando anomalie non immediatamente visibili o bug che possono comparire in maniera casuale. L\u2019obiettivo primario \u00e8 impedire agli hacker di sfruttare tali vulnerabilit\u00e0 per arrecare danni all\u2019infrastruttura.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Migliorare il sistema attraverso test controllati<\/strong><\/p>\n<p>Il concetto principale dell&#8217;ingegneria del caos si incentra sul <strong>rompere un sistema di proposito<\/strong> per raccogliere informazioni che aiutino a migliorarne la resilienza. Quello in questione risulta essere un metodo molto efficiente per testare software e applicativi, ma anche sistemi distribuiti (cio\u00e8 una rete di computer collegati fra loro, che condividono risorse in locale o in remoto).<\/p>\n<p>Pi\u00f9 un network \u00e8 ampio e articolato, pi\u00f9 \u00e8 probabile che sia soggetto a \u201crotture\u201d. I punti in cui lo stesso pu\u00f2 fallire sono tanti e spesso sembrano <strong>generati da eventi all\u2019apparenza casuali<\/strong> (l\u2019impressione della casualit\u00e0 tende ad aumentare a seconda di quanto pi\u00f9 \u00e8 strutturato l\u2019intero sistema).<\/p>\n<p>I test che seguono i principi della teoria del caos sono pensati per dare intenzionalmente vita a situazioni <strong>imprevedibili<\/strong>, cos\u00ec da trovare punti deboli di cui non si sospetta l\u2019esistenza. Alcuni esempi di problemi potenzialmente identificabili dalle suddette operazioni di testing sono:<\/p>\n<ul>\n<li><strong>punti ciechi<\/strong>: posti dove il software di monitoraggio non pu\u00f2 raccogliere dati adeguati;<\/li>\n<li><strong>bug nascosti<\/strong>: glitch o altri problemi che possono causare il malfunzionamento del software o della rete;<\/li>\n<li><strong>colli di bottiglia delle prestazioni<\/strong>: situazioni in cui l&#8217;efficienza e le prestazioni potrebbero essere migliorate.<\/li>\n<\/ul>\n<p>Rilevare qualunque malfunzionamento \u00e8 molto importante, soprattutto se si pensa che le infrastrutture di rete e i metodi di programmazione <strong>diventano ogni giorno pi\u00f9 complessi e articolati<\/strong>.<\/p>\n<p>Un\u2019azienda che intende tutelare a dovere il proprio reparto IT deve, dunque, tassativamente ricorrere alle strategie appena descritte, per adattarsi e riuscire a controllare il pi\u00f9 possibile l\u2019inevitabile caos generato da determinati imprevisti.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Funzionamento dell\u2019ingegneria del caos<\/strong><\/p>\n<p>Come per i comuni stress test, anche l\u2019ingegneria del caos si pone l\u2019obiettivo di scoprire e correggere i malfunzionamenti di un sistema, di una rete o di un programma. Tuttavia, la differenza sostanziale sta nel fatto che, invece di concentrare le risorse su un singolo componente alla volta, essa <strong>lavora su una scala di possibilit\u00e0 praticamente infinita<\/strong>.<\/p>\n<p>Guarda oltre i bug ovvi e testa i sistemi distribuiti contro problemi o insiemi di problemi che hanno meno probabilit\u00e0 di accadere. Per farla breve, l\u2019idea \u00e8 quella di <strong>ottenere nuove conoscenze sul sistema<\/strong>, attraverso un processo che tipicamente si suddivide in diversi passaggi:<\/p>\n<ol>\n<li><strong>stabilire una linea di base<\/strong>: i tester devono comprendere come il sistema dovrebbe funzionare in condizioni ottimali e specificare cosa costituisce uno stato di lavoro normale;<\/li>\n<li><strong>creare un&#8217;ipotesi<\/strong>: si considerano una o pi\u00f9 potenziali debolezze e vengono formulate ipotesi sui loro effetti (per esempio, i tester del software potrebbero voler sapere cosa succederebbe se si verificasse un grande picco di traffico);<\/li>\n<li><strong>eseguire la fase di testing<\/strong>: si fanno esperimenti per valutare le conseguenze della teoria formulata. Le prove svolte potrebbero rivelare un errore in un processo critico o una relazione causa-effetto inaspettata (usando sempre l\u2019ipotetico caso precedente, la simulazione di un picco di traffico potrebbe mostrare un problema di prestazioni dello storage);<\/li>\n<li><strong>valutare l&#8217;effettiva veridicit\u00e0 dell\u2019ipotesi<\/strong>: si determinano le criticit\u00e0 da risolvere.<\/li>\n<\/ol>\n<p>I team che si occupano di ingegneria del caos usano quindi (principalmente) <strong>scenari di tipo \u201cwhat if\u201d<\/strong> per innescare errori e malfunzionamenti casuali. Ci\u00f2 gli permette di identificare gli interventi pi\u00f9 significativi da eseguire, in modo da migliorare le prestazioni del sistema e garantirne l\u2019integrit\u00e0.<\/p>\n<!--themify_builder_content-->\n<div id=\"themify_builder_content-18281\" data-postid=\"18281\" class=\"themify_builder_content themify_builder_content-18281 themify_builder tf_clear\">\n    <\/div>\n<!--\/themify_builder_content-->\n","protected":false},"excerpt":{"rendered":"<p>Con i termini ingegneria del caos si fa riferimento a una metodologia di testing dei sistemi informatici, volta a scovare eventuali falle o punti deboli. La particolarit\u00e0 che la distingue dai comuni stress test, \u00e8 che la stessa si basa sui principi della teoria del caos e punta a generare eventi normalmente caratterizzati da una bassa probabilit\u00e0 di verificarsi.<\/p>\n","protected":false},"author":10,"featured_media":18279,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"none","_seopress_titles_title":"Ingegneria del caos: migliorare il software, generando errori","_seopress_titles_desc":"Con i termini ingegneria del caos si fa riferimento a una metodologia di testing dei sistemi informatici, volta a scovare eventuali falle o punti deboli. La particolarit\u00e0 che la distingue dai comuni stress test, \u00e8 che la stessa si basa sui principi della teoria del caos e punta a generare eventi normalmente caratterizzati da una bassa probabilit\u00e0 di verificarsi.","_seopress_robots_index":"","_seopress_analysis_target_kw":"ingegneria del caos","footnotes":""},"categories":[46],"tags":[],"class_list":["post-18281","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-coffee-break-it","has-post-title","has-post-date","has-post-category","has-post-tag","has-post-comment","has-post-author",""],"builder_content":"","_links":{"self":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts\/18281","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/comments?post=18281"}],"version-history":[{"count":0,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/posts\/18281\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/media\/18279"}],"wp:attachment":[{"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/media?parent=18281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/categories?post=18281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unilab.eu\/it\/wp-json\/wp\/v2\/tags?post=18281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}