Approfondimenti21/2/2024
Il valore di business portato dagli strumenti di Observability in architetture distribuite
Le moderne applicazioni sono sempre più complesse, caratterizzate da una molteplicità di microservizi e diverse istanze che lavorano insieme per soddisfare le richieste degli utenti. Con questa crescente complessità sorge una sfida significativa: come monitorare e comprendere appieno ciò che accade all'interno di questi sistemi distribuiti?
Il bisogno di Observability
In passato, una semplice analisi dei file di log poteva offrire una panoramica abbastanza completa delle attività dell'applicazione. Tuttavia, con l'avvento delle architetture basate su microservizi, ci troviamo a dover gestire un numero crescente di processi. Ad esempio, Immaginate di avere 20 microservizi, ognuno con tre istanze in esecuzione. Questo significa dover monitorare e gestire fino a 60 diversi processi. Ecco dove ci possono aiutare gli strumenti di observability.
Manutenzione predittiva grazie alla Log Collection
La raccolta dei log è una delle pratiche fondamentali per garantire un'observability efficace. Ogni microservizio genera una vasta quantità di log, contenenti informazioni utili sulle attività svolte, eventuali errori e altro ancora. Tuttavia, la raccolta di questi log non è sufficiente. È necessario implementare strumenti e tecniche per archiviarli in modo efficiente e renderli facilmente consultabili. Grazie all’analisi proattiva di questi dati si possono individuare e tracciare i trend di valori in un determinato periodo, con la possibilità di costruire delle metriche di alert che segnalino eventuali scostamenti rispetto a un valore standard. In questo modo, l’observability diventa un processo con cui fare manutenzione predittiva. Ad esempio, se la memoria applicativa è consumata in modo intensivo, grazie all’analisi dei trend è possibile anticipare i problemi di out of memory.
Strumenti di Log Collection
Tra gli strumenti più utilizzati per la raccolta e l'analisi dei log troviamo Elasticsearch, un potente motore di ricerca progettato appositamente per gestire grandi volumi di dati. Accanto a Elasticsearch, troviamo Kibana, che offre un'interfaccia intuitiva per la visualizzazione e l'analisi dei log. Insieme, questi strumenti consentono di esplorare e comprendere facilmente i dati registrati dalle applicazioni.
Data Driven Design grazie alla Metrics Collection
Oltre alla raccolta dei log, è essenziale monitorare le metriche tecniche e applicative per garantire un'observability completa. Le metriche tecniche, come il consumo di memoria e la disponibilità del disco, forniscono indicazioni preziose sullo stato di salute del sistema. Tuttavia, per ottenere una visione completa delle prestazioni dell'applicazione, è necessario monitorare anche le metriche applicative, come i tempi di risposta e il throughput. Le metriche applicative registrano i dati che possono essere estratti e tradotti in un evento sintetico che arriva direttamente al team, ad esempio segnalando il problema di un’interruzione di emissione di ordini nel sistema, ecc...
Questo tipo di metriche è interessante anche per il business dato che le informazioni ricavate da esse, attraverso il monitoraggio dell’utilizzo delle funzionalità, possono servire allo sviluppo di un prodotto "data driven design”. La priorità sugli item del backlog non è solo data alla sensibilità del Product Owner, ma è giustificata da evidenze numeriche che arrivano direttamente dal reale comportamento e dai reali bisogni degli utenti finali.
Rispetto alla business intelligence classica, che rappresenta una fotografia del passato, le metriche applicative sono in grado di fornire un visione real-time.
Strumenti di Metrics Collection
Per monitorare le metriche tecniche, è possibile utilizzare strumenti come Nagios et similia, che offrono un monitoraggio reattivo delle risorse di sistema. Per le metriche applicative, strumenti come Micrometer consentono di raccogliere ed esporre metriche personalizzate, che possono poi essere archiviate, visualizzate ed analizzate con strumenti come Prometheus e Grafana. Quest’ultimo strumento permette di fornire una sintesi in tempo reale facilmente consultabile anche da profili business non tecnici come i CIO.
Performance Optimization grazie alla Traces collection
Infine, per ottenere una comprensione completa delle prestazioni dell'applicazione, è necessario tracciare il flusso di esecuzione attraverso i diversi microservizi. Questo consente di individuare eventuali ritardi o problemi di prestazioni e ottimizzare di conseguenza il sistema, identificando in anticipo i bottleneck. Qui il focus è l’ottimizzazione delle performance.
Strumenti di Traces Collection
Strumenti come Jaeger e OpenTelemetry sono ampiamente utilizzati per tracciare le richieste attraverso l'architettura distribuita e identificare eventuali aree critiche o punti di debolezza.
Conclusioni
In un'epoca in cui le architetture applicative sono sempre più complesse, implementare un'observability efficace è essenziale per garantire prestazioni elevate e un'esperienza utente ottimale. Utilizzando una combinazione di raccolta dei log, monitoraggio delle metriche e tracciamento dei flussi di esecuzione, è possibile ottenere una visione completa delle attività dell'applicazione e reagire proattivamente ai problemi, fare scelte di prodotto più consapevoli, e garantire performance d’eccellenza. Investire nell'observability oggi significa garantire il successo delle applicazioni di domani.