L’importanza di Monitoraggio e Observability per la qualità del servizio IT

Monitoraggio & Observability

Per sostenere una qualità del servizio ottimale non si può prescindere dal garantire un’attività di monitoraggio efficace, integrata e proattiva.

Questo permette di tenere traccia del comportamento dell’utente e delle applicazioni, della frequenza e della tipologia di errori che si verificano, fornendo dati oggettivi a supporto di uno studio approfondito di tutti i processi coinvolti.

Il monitoraggio dell’infrastruttura hardware e software consente il raggiungimento di un importante obiettivo: evitare che, a causa di malfunzionamenti non pronosticabili, un sistema smetta di funzionare e interrompa il servizio a cui è preposto.

Il monitoraggio dell’infrastruttura IT consiste nell’attivare sistemi in grado di segnalare tutte le possibili anomalie, per garantire il corretto funzionamento dei servizi dediti ai processi di business.

Per controllare la salute dei nostri sistemi e prevenire inerzie causate dal loro malfunzionamento è necessario adottare una soluzione in grado di gestire varie tipologie di monitoraggio.

Il segreto è poter controllare tutte le risorse coinvolte.
Per risorse, non si intendono solo le componenti hardware, entrano in gioco altre metriche quali: il carico di lavoro di un server, i tempi di risposta dei webserver, le performance dei database ma anche fattori di rischio che possono contribuire a deteriorare l’ambiente delle Server Farm, come ad esempio il surriscaldamento, i fumi o l’umidità.

È certamente possibile trovare soluzioni che gestiscono tutti questi controlli in maniera centralizzata ma queste, singolarmente, non saranno sufficienti a garantire un buon risultato se non saranno adottati meccanismi di correlazione eventi.

 

Observability

Molte delle applicazioni scritte negli ultimi anni si basano su architetture a microservizi, e sono erogate in piattaforme distribuite come Kubernetes all’interno di un numero variabile di container su ambienti cloud o multi-cloud.

Valutare lo stato complessivo di queste applicazioni è una procedura in generale complessa che deve tenere conto di molti fattori.

Ad esempio, se un nodo di un cluster Kubernetes in cui è in esecuzione una applicazione ha un malfunzionamento, per l’applicazione erogata il problema potrebbe essere limitato perché è la piattaforma stessa a preoccuparsi di distribuire su nodi differenti il carico di lavoro.

Molto più preoccupante per quanto riguarda lo stato di salute complessivo, è la situazione in cui un’applicazione presenta molto spesso errori o eccezioni che non è in grado di gestire, oppure il caso in cui le performance degradino sensibilmente, magari in seguito ad un rilascio di una nuova versione.

Observability è una parola presa in prestito dalla teoria di controllo e indica la proprietà di un sistema di poterne ricostruire lo stato a partire da output prodotti dal sistema stesso.

È quindi importante, soprattutto quando si sviluppa una applicazione secondo il paradigma delle applicazioni a microservizi, pensare a più strumenti che rendano facilmente possibile ricostruire una fotografia dello stato interno a partire da output esterni costruiti adeguatamente.

Chiaramente, i diversi malfunzionamenti di cui può soffrire un’applicazione dipendono fortemente dall’applicazione stessa e la responsabilità di poter correttamente valutarne lo stato di salute deve includere quindi anche gli sviluppatori e non solo il personale di Infrastruttura.

Con una visione dell’observability implementata correttamente, è possibile stabilire il perché una applicazione presenta dei malfunzionamenti, o comunque avere degli indizi a riguardo anziché verificare solamente il disservizio.

Andando nel concreto i principali strumenti a disposizione di chi sviluppa per avere una chiara visione dello stato di un’applicazione sono tre:

  • Metriche, che non devono più solamente essere metriche di sistema, ma anche metriche applicative e di business
  • Logging, una strategia di logging chiara e definita e strumenti per raccogliere log provenienti da più fonti sono fondamentali per avere una buona fotografia dello stato di un sistema
  • Tracing, è importante implementare una strategia di tracing per verificare quale funzione di quale microservizio presenta dei problemi.

Sono di ausilio moderne tecnologie, che in maniera predittiva possono apprendere grazie ad algoritmi di Machine Learning ed intervenire in supporto agli operatori preposti nell’adottare la miglior soluzione per ripristinare i normali valori di erogazione dei servizi di Business.