Utilizzo dell'intelligenza artificiale generativa per la risoluzione dei problemi e l'affidabilità del software
25 luglio 2023 di Dotan Horovits
Nel frenetico panorama digitale di oggi, mantenere i servizi aggiornati e performanti, soprattutto per i servizi online e basati su cloud, è fondamentale per rimanere competitivi. Problemi di inattività o latenza possono allontanare i clienti, soprattutto quando basta un clic per passare a una soluzione SaaS concorrente. I team DevOps e Site Reliability Engineering (SRE) affrontano la sfida costante di ridurre al minimo il tempo medio di riparazione (MTTR) quando si affrontano errori e problemi. Per quanto preziosi siano i motori di ricerca come Google, l’enorme quantità di informazioni disponibili può rendere la ricerca delle soluzioni giuste un compito dispendioso in termini di tempo. E se esistesse un modo per automatizzare e semplificare questo processo, rendendo l’indagine sugli errori più intelligente, mirata ed efficiente?
Questo articolo ti guiderà attraverso il percorso di risoluzione degli errori, dalla prima oscura riga di registro all'identificazione del problema nascosto al suo interno. Risolveremo il problema utilizzando diverse tattiche, che alla fine porteranno all'uso dell'intelligenza artificiale generativa per ridurre l'MTTR e fornire raccomandazioni IT precise. Questo viaggio include misure e principi utili che possono essere applicati dai team DevOps ed esplora il potenziale dell'applicazione dell'intelligenza artificiale generativa.
Immagina questo: viene visualizzata una riga di registro con un oscuro messaggio di errore e il primo istinto è cercare questo messaggio su Google per potenziali soluzioni. Dopotutto, qualcun altro deve aver riscontrato un problema simile, giusto? Tuttavia, l’abbondanza di risorse e risultati di ricerca può essere travolgente. I risultati della ricerca vengono spesso visualizzati in base alla pertinenza del sito web, non necessariamente alla pertinenza dell'errore stesso. Di conseguenza, si perde tempo prezioso vagliando innumerevoli risultati di ricerca, il che comporta tempi più lunghi per comprendere e correggere l’errore. Per i team DevOps e SRE responsabili del mantenimento della stabilità del sistema, la riduzione dell'MTTR è un indicatore chiave di prestazione (KPI) cruciale. Ciò fa sorgere la domanda: come possiamo sfruttare l’automazione e l’intelligenza artificiale per migliorare il processo di ricerca e accelerare la risoluzione degli errori?
Nel tentativo iniziale della nostra organizzazione di affrontare questa sfida, ci siamo concentrati sullo sfruttamento delle tecniche di crowdsourcing per ottenere risultati più pertinenti rispetto alla ricerca forzata di Google. Inoltre, volevamo automatizzare il processo ed eseguirlo offline in modo che, quando si verifica un incidente, possiamo offrire approfondimenti utili anziché avviare la ricerca quando il sistema è inattivo o non funziona correttamente.
L’approccio prevede una fase offline e una fase online. La fase offline prevedeva l'analisi di tutti i log acquisiti e l'identificazione di modelli di log comuni. Ciò ci ha anche permesso di contare la frequenza con cui questo modello si è verificato nel nostro sistema e quanto è prevalente. Quindi abbiamo analizzato forum tecnologici pertinenti come StackOverflow, Google Groups e Bing Groups alla ricerca di discorsi pertinenti su questi modelli di registro che potrebbero offrire soluzioni pertinenti. Il passo successivo è stato quello di classificare i risultati della ricerca in base alla pertinenza e prendere i primi cinque link più rilevanti.
La fase offline ha prodotto una libreria di modelli di log noti e, per ognuno, un insight cognitivo contenente questi collegamenti, oltre a informazioni aggiuntive come il livello di gravità, quante volte questo modello si è verificato nei log, la data della prima occorrenza e tag aggiuntivi di tecnologie, strumenti e domini coinvolti.
La fase online avviene in tempo reale man mano che arrivano nuovi log. Dopo aver acquisito il log, viene automaticamente confrontato con tutti i modelli conosciuti; se ne corrisponde uno, ottiene l'intuizione cognitiva per quel modello. Ciò significa che non appena arriva il registro problematico, l'ingegnere DevOps ha già focalizzato e classificato i risultati di ricerca e il contesto da cui partire, il che accelera il processo di indagine.
Dopo aver riflettuto sul nostro approccio iniziale, abbiamo avuto un’illuminazione. I modelli linguistici di grandi dimensioni (LLM) come ChatGPT avevano già esplorato il Web e assorbito una grande quantità di informazioni. Quindi, perché non sfruttare le loro capacità e chiedere loro direttamente approfondimenti? L’idea era semplice: lasciare che l’intelligenza artificiale “leggesse i post” per noi e ci fornisse consigli. Abbiamo iniziato formulando domande specifiche come “Quali potrebbero essere i possibili errori?” e ha addirittura fatto un ulteriore passo avanti chiedendo ulteriori fasi di indagine. Tuttavia, l’implementazione di questo approccio apparentemente semplice ha comportato una serie di sfide. Per ottenere ciò che ci aspettavamo, dovevamo eseguire la pre-elaborazione prima di chiedere all'intelligenza artificiale generativa, nonché eseguire la post-elaborazione sulle risposte restituite. Vediamo cosa comporta questo processo.