Osservabilità nei microservizi vs. registrazione dei log nei sistemi monolitici
L'osservabilità dei microservizi offre tracciamento, metriche e log distribuiti su servizi indipendenti, mentre la registrazione monolitica si concentra su record centralizzati provenienti da una singola applicazione. La scelta giusta dipende dalla complessità del sistema, dalla scalabilità e dal livello di informazioni di cui i team hanno bisogno sulle interazioni tra i servizi.
In evidenza
L'osservabilità dei microservizi tratta tracce, metriche e log come segnali equivalenti, mentre la registrazione monolitica si basa quasi interamente su record testuali.
Il tracciamento distribuito consente ai team di individuare con precisione quale servizio specifico ha causato un errore, cosa che i log tradizionali faticano a fare tra i diversi servizi.
La registrazione monolitica richiede molta meno infrastruttura e competenza per iniziare, il che la rende interessante per i sistemi più piccoli o preesistenti.
L'osservabilità aumenta con la complessità del sistema, mentre la registrazione monolitica tende a degradarsi con l'aumentare delle dimensioni dell'applicazione e del traffico.
Cos'è Osservabilità nei microservizi?
Un approccio multidimensionale che combina tracce, metriche e log per comprendere il comportamento di servizi distribuiti e implementati in modo indipendente.
Costruito su tre pilastri: tracciamento distribuito, metriche e registrazione strutturata tra i servizi
Utilizza gli ID di correlazione per seguire una singola richiesta mentre passa da una dozzina o centinaia di servizi
Si avvale di strumenti come OpenTelemetry, Jaeger, Prometheus e Grafana per la raccolta e la visualizzazione dei dati.
Progettato per gestire infrastrutture effimere in cui container e moduli vengono installati e spenti continuamente.
Consente ai team SRE di rilevare anomalie tramite obiettivi di livello di servizio e budget di errore
Cos'è Registrazione del sistema monolitico?
Un approccio tradizionale in cui una singola applicazione scrive voci di registro in file centralizzati o in un singolo archivio di log per il debug e la verifica.
I log provengono da un unico codebase in esecuzione come singolo processo, il che rende i percorsi delle richieste facili da seguire.
In genere utilizza la registrazione basata su file, syslog, o semplici aggregatori di log come Logback o log4j.
Il debug in genere prevede la ricerca nei file di log o l'interrogazione di una singola istanza dello stack ELK.
Il sovraccarico prestazionale è minimo poiché la registrazione avviene all'interno di un unico ambiente di runtime.
È più facile implementare la correlazione tramite il contesto locale del thread o semplici ID di sessione.
Tabella di confronto
Funzionalità
Osservabilità nei microservizi
Registrazione del sistema monolitico
Architettura
Distribuito su molti servizi
Applicazione unica e unificata
Tipi di dati primari
Tracce, metriche e registri
Principalmente registri, a volte metriche
Tracciamento delle richieste
Tracciamento distribuito con contesto di intervallo
Tracciamento a livello di thread o di sessione
Complessità degli utensili
Elevato — richiede strumentazione in tutti i servizi
Basso — è sufficiente una singola pipeline di log
Scalabilità
Scala orizzontalmente in base al numero di servizi
Limitato dalla capacità di elaborazione di una singola applicazione
Diagnosi del guasto
Individua quale servizio ha causato latenza o errori
Più facile all'interno di un processo, più difficile ai confini.
Requisiti di archiviazione
Database ad alto volume, spesso di serie temporali
Moderato, in genere file piatti o un indice
Costo di implementazione
Investimento iniziale significativo
Minori costi di installazione iniziali
Confronto dettagliato
Filosofia e approccio fondamentali
L'osservabilità dei microservizi presuppone che non sia possibile prevedere in anticipo ogni modalità di errore, quindi si raccolgono dati di telemetria sufficientemente diversificati per poter porre nuove domande dopo che i problemi si sono verificati. La registrazione monolitica adotta un approccio più semplice: acquisire un numero sufficiente di record testuali per ricostruire l'accaduto durante una richiesta. Il primo approccio considera i log come un segnale tra i tanti, mentre il secondo li considera il segnale principale per comprendere il comportamento del sistema.
Debug e analisi delle cause principali
Quando si verifica un problema in un'architettura a microservizi, gli ingegneri si immergono nelle tracce distribuite per individuare con precisione quale servizio ha introdotto la latenza o restituito un errore. In un'architettura monolitica, gli sviluppatori solitamente aprono un file di log, cercano un timestamp o un ID utente e leggono le voci in sequenza. Il metodo monolitico può sembrare più intuitivo, ma diventa inadeguato quando il sistema cresce a tal punto che un singolo file di log diventa ingestibile.
Strumenti e infrastrutture
Gli stack di osservabilità in genere combinano una libreria di strumentazione come OpenTelemetry, un backend di tracciamento come Jaeger o Tempo, un archivio di metriche come Prometheus e un livello di dashboarding come Grafana. La registrazione monolitica spesso richiede molto meno: un framework di logging, un sistema di invio dei log come Filebeat e magari un cluster ELK o OpenSearch. La toolchain dei microservizi richiede una maggiore maturità operativa, ma ripaga quando i sistemi diventano complessi.
Prestazioni e costi generali
Il tracciamento distribuito aggiunge passaggi di rete e costi di serializzazione man mano che gli intervalli vengono propagati attraverso i confini dei servizi, sebbene le strategie di campionamento mantengano l'overhead gestibile. La registrazione monolitica rimane vicina al processo applicativo, quindi l'impatto sulle prestazioni deriva principalmente dall'I/O su disco e dalla formattazione dei log. Entrambi gli approcci possono degradare le prestazioni se la registrazione viene lasciata a livelli di dettaglio elevati in produzione, ma gli ambienti a microservizi tendono a richiedere una messa a punto più accurata.
Quando ognuno ha senso
L'osservabilità si rivela particolarmente utile in ambienti con implementazioni frequenti, servizi poliglotta e team che necessitano di una gestione indipendente dei componenti. La registrazione monolitica rimane una soluzione valida per applicazioni di dimensioni ridotte, sistemi legacy o scenari in cui la conformità normativa richiede tracce di audit semplici. Molte organizzazioni, in realtà, utilizzano entrambi i metodi: mantengono i log tradizionali per la conformità e integrano strumenti di osservabilità per ottenere informazioni utili al team di ingegneri.
Pro e Contro
Osservabilità nei microservizi
Vantaggi
+Visibilità completa della richiesta
+Correlazione multisegnale
+Scala con la complessità
+Abilita le pratiche SRE
Consentiti
−Costi di attrezzaggio più elevati
−curva di apprendimento più ripida
−Maggiori costi di stoccaggio
−Richiede disciplina nella strumentazione
Registrazione del sistema monolitico
Vantaggi
+Semplice da implementare
+Minori costi operativi
+Noto alla maggior parte delle squadre
+Tracciabilità semplificata
Consentiti
−Visione interservizi limitata
−Non si adatta bene alle dimensioni
−Punto singolo di guasto
−Eventi più difficili da correlare
Idee sbagliate comuni
Mito
I soli log sono sufficienti per eseguire il debug di qualsiasi sistema.
Realtà
I log funzionano bene per i sistemi monolitici, ma perdono efficacia nei sistemi distribuiti, dove una singola richiesta coinvolge numerosi servizi. Metriche e tracce colmano queste lacune, mostrando modelli e catene causali che i log non riescono a rivelare facilmente.
Mito
L'osservabilità non è altro che una forma più elaborata di registrazione dei dati, con un nome diverso.
Realtà
L'osservabilità è una disciplina più ampia che include i log, ma aggiunge anche metriche e tracce come segnali di primaria importanza. L'obiettivo si sposta dalla ricerca nei record alla formulazione di domande arbitrarie sul comportamento del sistema senza rilasciare nuovo codice.
Mito
I sistemi monolitici non necessitano di osservabilità.
Realtà
Anche le singole applicazioni traggono vantaggio da metriche, tracce e log strutturati una volta raggiunta una scala significativa. L'osservabilità consiste nel comprendere lo stato del sistema, un principio che si applica indipendentemente dall'architettura.
Mito
Il tracciamento distribuito è troppo costoso per l'utilizzo in produzione.
Realtà
moderni sistemi di tracciamento utilizzano il campionamento head-based o tail-based per acquisire un sottoinsieme rappresentativo delle richieste. Ciò consente di mantenere basso il sovraccarico, fornendo al contempo dati sufficienti per diagnosticare la maggior parte dei problemi.
Mito
Il passaggio ai microservizi migliora automaticamente l'osservabilità.
Realtà
I microservizi rendono l'osservabilità più difficile, non più facile, perché ora ci sono più componenti in movimento da monitorare. Senza una strumentazione e strumenti adeguati, la visibilità diminuisce effettivamente rispetto a un monolite ben strumentato.
Domande frequenti
Qual è la differenza tra osservabilità e registrazione?
Il logging è un tipo di dati di telemetria: eventi discreti registrati da un'applicazione. L'osservabilità è una proprietà di un sistema che descrive quanto bene è possibile comprenderne lo stato interno a partire da output esterni. L'osservabilità utilizza log, metriche e tracce insieme, mentre il logging si concentra esclusivamente su record testuali.
Perché i microservizi necessitano di tracciamento distribuito?
In un'architettura a microservizi, una singola richiesta utente può attraversare cinque, dieci o più servizi prima di essere completata. Il tracciamento distribuito segue tale richiesta attraverso i confini dei servizi utilizzando ID di correlazione e intervalli, consentendo di visualizzare dove è stato impiegato il tempo e dove hanno avuto origine gli errori.
È possibile utilizzare i tradizionali sistemi di logging in un ambiente a microservizi?
Sì, ma diventa più difficile correlare i log tra i diversi servizi senza identificatori condivisi. La maggior parte dei team aggiunge la registrazione strutturata con ID di correlazione, quindi sovrappone il tracciamento e le metriche per ottenere un quadro completo del comportamento del sistema.
Quali sono i tre pilastri dell'osservabilità?
I tre pilastri sono i log, le metriche e le tracce. I log catturano eventi discreti, le metriche registrano dati numerici nel tempo e le tracce mostrano il percorso di una richiesta attraverso i sistemi distribuiti. Insieme, consentono ai team di rispondere a domande su prestazioni, errori ed esperienza utente.
OpenTelemetry rappresenta lo standard per l'osservabilità?
OpenTelemetry è diventato di fatto lo standard per la strumentazione nella maggior parte dei linguaggi e delle piattaforme. È nato dalla fusione dei progetti OpenTracing e OpenCensus ed è ora supportato dalla Cloud Native Computing Foundation, con un ampio sostegno da parte di fornitori e strumenti open source.
Quanto costa l'osservabilità rispetto alla registrazione dei dati?
L'osservabilità in genere comporta costi maggiori a causa dello spazio di archiviazione aggiuntivo, delle licenze per gli strumenti e del tempo di progettazione necessario per la strumentazione. Tuttavia, spesso riduce il tempo medio di risoluzione dei problemi e previene costosi fermi macchina, il che può compensare l'investimento iniziale per le organizzazioni che gestiscono sistemi complessi.
I monoliti traggono vantaggio dagli strumenti di osservabilità?
Assolutamente. Anche le singole applicazioni traggono vantaggio dal tracciamento distribuito all'interno del proprio processo, dalle metriche che rivelano le tendenze delle prestazioni e dai log strutturati più facili da interrogare. Gli strumenti di osservabilità non sono un'esclusiva dei microservizi.
Che cos'è un intervallo nel tracciamento distribuito?
Uno span rappresenta una singola unità di lavoro all'interno di una traccia, come ad esempio una query di database o una chiamata HTTP tra servizi. Gli span hanno un nome, un'ora di inizio, una durata e dei metadati, e sono collegati tra loro tramite relazioni padre-figlio per formare una traccia completa.
Come si correlano i log tra i microservizi?
In genere, i team inseriscono un ID di correlazione ai margini del sistema e lo propagano tramite intestazioni HTTP, metadati dei messaggi o contesto del thread. Ogni servizio include tale ID nelle proprie voci di registro, pertanto una singola ricerca su tutti i servizi restituisce il percorso completo della richiesta.
Le startup dovrebbero utilizzare l'osservabilità o continuare a utilizzare i log?
Le startup in fase iniziale solitamente iniziano con la registrazione strutturata e le metriche di base perché consentono di rilasciare i prodotti più velocemente e a costi inferiori. Man mano che il sistema cresce e i team si moltiplicano, l'aggiunta di funzionalità di tracciamento e di una piattaforma di osservabilità unificata diventa fondamentale per mantenere la velocità di sviluppo.
Verdetto
Scegli l'osservabilità dei microservizi quando il tuo sistema si estende su molti servizi indipendenti e hai bisogno di comprendere le interazioni tra i servizi in tempo reale. Rimani fedele alla registrazione monolitica per applicazioni più semplici, dove i record centralizzati offrono una visibilità sufficiente e il sovraccarico operativo è più importante dell'analisi granulare. In pratica, i sistemi maturi spesso combinano entrambi gli approcci anziché impegnarsi completamente in uno solo.