Cos'è il tracciamento distribuito?
Il tracciamento distribuito consiste nell'osservare le richieste di dati mentre attraversano un sistema distribuito. L'architettura moderna basata sui microservizi spesso comprende molteplici componenti indipendenti più piccoli. Questi componenti comunicano costantemente e scambiano dati tramite API per eseguire operazioni complesse. Con il tracciamento distribuito, gli sviluppatori possono tracciare, o seguire visivamente, un percorso di richiesta tra diversi microservizi. Tale visibilità aiuta a risolvere errori o correggere bug e problemi di prestazioni.
Quali sono i vantaggi del tracciamento distribuito?
Gli sviluppatori di software possono implementare sistemi di tracciamento distribuito in quasi tutti gli ambienti cloud nativi, nonché registrare le tracce distribuite generate dalle applicazioni cloud. Inoltre, gli strumenti di tracciamento supportano numerosi linguaggi di programmazione e stack software, consentendo ai team software di monitorare e raccogliere dati sulle prestazioni per diverse applicazioni sulla stessa piattaforma.
I team di sviluppo utilizzano il tracciamento distribuito per migliorare l'osservabilità e risolvere problemi di prestazioni che gli strumenti di debug e monitoraggio del software convenzionali non possono risolvere.
Di seguito sono riportati altri vantaggi del tracciamento distribuito.
Accelerazione della risoluzione dei problemi
Le applicazioni moderne si basano su numerosi microservizi per scambiare dati e soddisfare le richieste di servizio tra sistemi distribuiti. La risoluzione dei problemi di prestazioni in un'architettura basata su microservizi è molto più impegnativa rispetto a un'applicazione software monolitica. A differenza di un'applicazione monolitica, la causa principale di un problema software specifico potrebbe non essere evidente: la sovrapposizione e le interazioni complesse tra più moduli software possono rendere difficile la diagnosi dei problemi.
Con il tracciamento distribuito, i team addetti al software possono monitorare i dati che attraversano percorsi complessi che collegano vari microservizi e archiviazione dei dati. Utilizzando strumenti di tracciamento distribuiti, i team software tengono traccia delle richieste e visualizzano con precisione i percorsi di propagazione dei dati. I team addetti al software possono risolvere tempestivamente i problemi di prestazioni e ridurre al minimo le interruzioni del servizio.
Miglioramento della collaborazione degli sviluppatori
Diversi sviluppatori sono spesso coinvolti nella creazione di un'applicazione cloud, ognuno dei quali è responsabile di uno o più microservizi. Il processo di sviluppo del software rallenta se gli sviluppatori non sono in grado di tracciare i dati scambiati dai microservizi. Con i sistemi di tracciamento distribuiti gli sviluppatori possono collaborare fornendo dati di telemetria, come log e tracce, per ogni richiesta di servizio effettuata dal microservizio. Gli sviluppatori possono rispondere con precisione ai bug e ad altri problemi software scoperti durante i test e la produzione.
Riduzione del time-to-market
Le organizzazioni che implementano piattaforme di tracciamento distribuite possono semplificare e accelerare gli sforzi per rilasciare applicazioni software per gli utenti finali. I team software esaminano le tracce distribuite per ottenere informazioni che velocizzino lo sviluppo del software, riducano al minimo i costi di sviluppo, comprendano i comportamenti degli utenti e migliorino la preparazione al mercato.
Quali sono i diversi tipi di tracciamento distribuito?
I team addetti al software utilizzano strumenti di tracciamento distribuiti per monitorare, analizzare e ottimizzare le applicazioni.
Tracciamento del codice
Il tracciamento del codice è un processo software che ispeziona il flusso dei codici sorgente in un'applicazione quando si esegue una funzione specifica. Aiuta gli sviluppatori a comprendere il flusso logico del codice e a identificare problemi sconosciuti. Ad esempio, gli sviluppatori utilizzano la traccia del codice per verificare che la richiesta di servizio abbia richiamato i passaggi per interrogare un database. Se alcune funzioni software non rispondono, il sistema di tracciamento raccoglierà lo stato di errore appropriato e attirerà l'attenzione sul tempo di risposta.
Tracciamento del programma
Il tracciamento del programma è un metodo in cui gli sviluppatori possono esaminare gli indirizzi delle istruzioni e delle variabili richiamate da un'applicazione attiva. Quando un'applicazione software viene eseguita, elabora ogni riga di codice che risiede in uno spazio di memoria allocato specifico. L'applicazione elabora anche le variabili archiviate nella memoria della macchina. Ispezionare le modifiche nei programmi e nelle memorie di dati è difficile senza uno strumento automatizzato. Con il tracciamento dei programmi, i team addetti al software possono diagnosticare problemi di prestazioni radicati come l'overflow della memoria, il consumo eccessivo di risorse e il blocco delle operazioni logiche.
Monitoraggio completo
Grazie al tracciamento end-to-end, i team di sviluppo possono tracciare la trasformazione dei dati lungo il percorso della richiesta di servizio. Quando un'applicazione avvia una richiesta, invia dati ad altri componenti software per un'ulteriore elaborazione. Gli sviluppatori utilizzano strumenti di tracciamento per tracciare e compilare le modifiche che i dati critici subiscono dall'inizio alla fine. Fornisce una visione incentrata sull'applicazione delle richieste che fluiscono attraverso l'applicazione.
Come funziona il tracciamento distribuito end-to-end nell'architettura dei microservizi?
Quando si utilizzano le applicazioni, gli utenti avviano richieste di assistenza e diversi componenti dell'applicazione elaborano la richiesta.
Prendi in considerazione un utente che prenota un biglietto in un'applicazione di prenotazione di film online. L'utente inserisce i propri dati di contatto, i dettagli del film e le informazioni di pagamento e sceglie Prenota ora. Viene creata una richiesta che va a:
- Microservizio A che convalida i dati inseriti dall'utente.
- Microservizio B che preleva i dati da A e crea un record nel database dei clienti.
- Microservizio C che preleva i dati da B e convalida il pagamento.
- Microservizio D che prende i dati da C, assegna un posto e genera i dati dei biglietti del cinema.
- Microservice E che prende i dati da D e crea un file PDF del ticket formattato.
Una risposta contenente il PDF del ticket viene quindi restituita alla catena di microservizi da E a D a C a B ad A, fino a raggiungere l'utente. L'esempio precedente è semplice: una richiesta passa spesso attraverso diverse dozzine di microservizi e persino catene di componenti software di terze parti esterne all'applicazione. Ciò rende il processo sempre più complesso.
I sistemi di tracciamento distribuiti tengono traccia di queste interazioni delle richieste di servizio con altri microservizi e componenti software nell'ambiente di elaborazione distribuito. Una traccia distribuita rappresenta la cronologia e tutte le azioni che si verificano tra la generazione della richiesta e la ricezione della risposta. I team addetti al software utilizzano la traccia per seguire lo spostamento dei dati attraverso più microservizi con cui interagisce la richiesta iniziale.
Span
Durante l'elaborazione di una richiesta di assistenza, un'applicazione potrebbe eseguire diverse azioni. Queste azioni sono rappresentate come intervalli nel tracciamento distribuito. Ad esempio, uno span potrebbe essere una chiamata API, l'autenticazione dell'utente o l'abilitazione dell'accesso allo spazio di archiviazione. Se una singola richiesta comporta diverse azioni, l'intervallo iniziale (o principale) può diramarsi in diversi intervalli secondari. Questi livelli nidificati di intervalli padre e figlio formano una rappresentazione logica continua dei passaggi intrapresi per soddisfare la richiesta di servizio.
ID di tracciamento
Il sistema di tracciamento distribuito assegna un ID univoco a ogni richiesta per tracciarla. Ogni span eredita lo stesso trace ID dalla richiesta originale a cui appartiene. Gli span sono inoltre contrassegnati da un ID di span univoco che aiuta il sistema di tracciamento a consolidare i metadati, i log e i parametri che raccoglie.
Raccolta di parametri
Man mano che ogni estensione passa attraverso microservizi diversi, aggiunge parametri che forniscono agli sviluppatori informazioni approfondite e precise sul comportamento del software. Puoi raccogliere il tasso di errore, il timestamp, il tempo di risposta e altri metadati con gli intervalli. Dopo che la traccia ha completato un intero ciclo, lo strumento di tracciamento distribuito consolida tutti i dati raccolti.
Ad esempio, una chiamata API viene valutata con il tempo di risposta, lo stato di errore e l'interruzione delle funzioni secondarie eseguite da più servizi di terze parti. Lo strumento di tracciamento trasforma i dati in moduli visivi, evidenziando gli indicatori chiave e i riepiloghi delle prestazioni. In questo modo, i tecnici addetti all'affidabilità del sito possono identificare rapidamente gli errori, ispezionare gli elementi critici dei dati e collaborare con i team di sviluppo per correggere i problemi di prestazioni e garantire la conformità agli Accordi sul livello di servizio (SLA).
Cosa sono gli standard di tracciamento distribuito?
Gli standard di tracciamento distribuito forniscono un framework e strumenti software comuni per gli sviluppatori. Questi standard monitorano, visualizzano e analizzano le richieste di assistenza negli ambienti applicativi moderni. Standardizzando il flusso di lavoro di tracciamento distribuito, i team di software possono strumentare il tracciamento delle richieste senza essere soggetti al vincolo del fornitore.
Le sezioni seguenti descrivono gli standard introdotti per abilitare l'interoperabilità durante l'esecuzione del tracciamento distribuito.
OpenTracing
OpenTracing è uno standard di tracciamento distribuito open source sviluppato dalla Cloud Native Computing Foundation (CNCF). OpenTracing si concentra sul consentire agli sviluppatori di generare tracce con un'API di strumentazione. Ciò consente agli sviluppatori di generare tracce distribuite da diverse parti della base di codice, della libreria o di altre dipendenze.
OpenCensus
OpenCensus è costituito da librerie multilingue in grado di estrarre metriche software e inviarle ai sistemi di back-end per l'analisi. Gli sviluppatori possono utilizzare l'API fornita per gestire il modo in cui le tracce vengono generate e raccolte. A differenza di OpenTracing, gli sviluppatori lavorano con OpenCensus da un unico repository di progetto anziché da singole basi di codice e librerie.
OpenTelemetry
OpenTelemetry unifica OpenTracing e OpenCensus. Combina le migliori funzionalità di entrambi gli standard per fornire un framework di tracciamento distribuito completo. OpenTelemetry fornisce kit di sviluppo software completi, API, librerie e altri strumenti di strumentazione per implementare il tracciamento distribuito in modo più semplice.
Qual è la differenza tra tracciamento distribuito e registrazione?
La registrazione è una pratica di registrazione di eventi specifici che si verificano durante l'esecuzione di un'applicazione. Gli strumenti di registrazione raccolgono eventi con data e ora, come errori di sistema, interazioni con gli utenti, stati di comunicazione e altri parametri, per aiutare i team di sviluppo a rilevare le anomalie del sistema. In genere, esistono due tipi di registrazione:
- La registrazione centralizzata raccoglie tutte le attività registrate e le archivia in un'unica posizione.
- La registrazione distribuita archivia i file di log in posizioni separate sul cloud.
Entrambi i metodi di registrazione forniscono una panoramica statica degli incidenti che mostra agli sviluppatori cosa è successo nell'applicazione. Al contrario, il tracciamento distribuito fornisce un audit trail che chiarisce il motivo per cui si è verificato un incidente correlando vari dati di telemetria raccolti durante il periodo di una richiesta di servizio. Il tracciamento distribuito può utilizzare la registrazione e altri metodi di raccolta dati per tracciare una richiesta di servizio specifica.
Quali sono le sfide del tracciamento distribuito?
Il tracciamento distribuito ha semplificato gli sforzi degli sviluppatori nella diagnosi, nel debug e nella risoluzione dei problemi software. Nonostante ciò, rimangono le seguenti sfide a cui i team di software devono prestare attenzione quando scelgono gli strumenti di tracciamento.
Strumentazione manuale
Alcuni strumenti di tracciamento richiedono ai team di software di strumentare manualmente i propri codici per generare le tracce necessarie. Quando gli sviluppatori modificano i codici per tracciare le richieste, vi sono rischi di errori di codifica che influiscono sulle release di produzione. Inoltre, la mancanza di automazione complica il tracciamento, con conseguenti ritardi e forse una raccolta di dati imprecisa.
Copertura front-end limitata
Gli sviluppatori potrebbero non essere in grado di ottenere una supervisione completa dei problemi di prestazioni se i loro strumenti di tracciamento sono limitati all'analisi di back-end. In alcuni casi, il sistema di tracciamento distribuito inizia a raccogliere dati solo quando il primo servizio di back-end riceve la richiesta. Ciò significa che gli sviluppatori non possono rilevare e ispezionare i problemi derivanti dai servizi front-end durante la sessione utente corrispondente.
Campionamento casuale
Alcuni strumenti non consentono ai team di software di dare priorità al tracciamento, limitando l'osservabilità alle tracce campionate casualmente. Con dati di esempio limitati, le organizzazioni necessitano di ulteriori approcci di risoluzione dei problemi software per individuare i problemi principali che sfuggono allo strumento di tracciamento.
In che modo AWS può aiutarti con i tuoi requisiti di tracciamento distribuito?
AWS X-Ray è una piattaforma di tracciamento distribuita che aiuta gli sviluppatori di software a tracciare le richieste degli utenti e a identificare i colli di bottiglia nelle loro applicazioni cloud. Le organizzazioni utilizzano X-Ray per visualizzare le metriche delle applicazioni e migliorare la disponibilità dei carichi di lavoro. Con AWS X-Ray puoi:
- Integrarti con le applicazioni in esecuzione in Amazon Elastic Compute Cloud (EC2), Amazon EC2 Container Service (Amazon ECS), AWS Lambda e AWS Elastic Beanstalk.
- Impostare la frequenza di campionamento appropriata per fornire una visibilità completa delle tracce.
- Visualizzare i dati aggregati con una mappa dei servizi, che mostra parametri chiave come latenza e tassi di errore.
Inizia a utilizzare il tracciamento distribuito su AWS creando un account oggi stesso.
Fasi successive su AWS
Ottieni accesso istantaneo al Piano gratuito di AWS.