Un Nuovo Approccio alla Visualizzazione delle Prestazioni dei Microservizi
Presentiamo un nuovo metodo per analizzare meglio le prestazioni dei microservizi su più richieste.
― 7 leggere min
Indice
Analizzare le performance dei Microservizi può essere complicato. Quando un utente invia una richiesta, spesso ci sono diverse chiamate a vari servizi e computer. Per questo motivo, molti professionisti usano strumenti che tracciano come queste Richieste si muovono nel sistema. Questi strumenti permettono agli utenti di seguire i passaggi di una richiesta e vedere quanto tempo ci mette ogni parte. Tuttavia, anche se questi strumenti sono fantastici per guardare richieste singole, non offrono un quadro chiaro su come sta funzionando l'intero sistema.
In questo articolo, parleremo di un nuovo modo per visualizzare le performance dei microservizi che permette di capire meglio le performance su più richieste contemporaneamente. Questo nuovo metodo si basa su tecniche esistenti e ha l'obiettivo di fornire agli ingegneri le informazioni di cui hanno bisogno per analizzare le performance in modo più efficace.
Microservizi e le loro sfide
I microservizi sono un modo moderno di costruire software, scomponendolo in piccoli pezzi indipendenti. Questo approccio rende più facile testare e rilasciare nuove funzionalità velocemente, cosa fondamentale nel mercato del software di oggi. Tuttavia, ci sono delle sfide quando si lavora con i microservizi, specialmente riguardo le performance.
Uno dei problemi principali è che può essere difficile garantire che il software funzioni senza intoppi a causa della sua complessità. Con molti servizi diversi che interagiscono tra loro, i problemi di performance possono sorgere in modo inaspettato. Inoltre, i microservizi spesso subiscono molte aggiornamenti in un giorno, il che può influenzare le loro performance a seconda dei cambiamenti nei modelli di utilizzo.
Per affrontare queste sfide, gli sviluppatori software spesso si affidano a strumenti di tracciamento distribuito, che li aiutano a monitorare come funzionano i microservizi in tempo reale. Questi strumenti catturano il flusso delle richieste e possono visualizzare i passaggi eseguiti per completare una richiesta. Tuttavia, le attuali visualizzazioni tendono a concentrarsi su richieste singole, rendendo difficile analizzare le performance complessive su molte richieste.
La necessità di una Visualizzazione migliore
Gli attuali strumenti che tracciano le performance, come Jaeger o Dapper, utilizzano visualizzazioni chiamate diagrammi a corsie. Questi diagrammi possono mostrare come ogni parte di una richiesta contribuisce al tempo di risposta complessivo, aiutando a identificare eventuali parti lente. Tuttavia, queste visualizzazioni hanno dei limiti. Spesso, le performance di ogni richiesta non possono essere comprese appieno senza confrontarle con altre richieste.
Gli ingegneri di solito vogliono vedere le tendenze delle performance su molte richieste piuttosto che guardare solo a una singola richiesta. Questo significa che a volte devono passare tra diversi strumenti e visualizzazioni, il che può essere un processo noioso.
Per affrontare questi problemi, proponiamo un nuovo metodo di visualizzazione che rende più semplice analizzare le performance di più richieste contemporaneamente. Il nostro obiettivo è creare un modo chiaro e semplice per mostrare la relazione tra le diverse caratteristiche delle richieste e i loro tempi di risposta.
Il nostro approccio alla visualizzazione innovativa
Il nostro metodo proposto consiste in una dashboard con due parti chiave: un albero interattivo e un istogramma. L'albero mostra i flussi di lavoro delle richieste in termini di percorsi di esecuzione, mentre l'istogramma mostra la distribuzione dei tempi di risposta per quelle richieste. Questa visualizzazione combinata consente agli utenti di analizzare vari aspetti delle richieste contemporaneamente.
La componente ad albero della nostra visualizzazione si basa su strumenti esistenti che confrontano i percorsi di due richieste. Tuttavia, estendiamo questo metodo per analizzare interi gruppi di richieste. Ogni parte dell'albero rappresenta una chiamata di servizio specifica e il layout mostra come le richieste si muovono attraverso i diversi servizi.
Per aiutare gli utenti a individuare facilmente i modelli nelle richieste, utilizziamo colori per evidenziare le differenze all'interno di un gruppo. Se una chiamata di servizio appare lo stesso numero di volte in tutte le richieste, sarà colorata di bianco. Se il numero di volte che è stata chiamata varia molto, sarà rappresentata in rosso. Questa codifica dei colori attira rapidamente l'attenzione su chiamate di servizio che si comportano in modo diverso e necessitano di ulteriori indagini.
Quando gli utenti cliccano su una chiamata di servizio specifica, possono vedere informazioni più dettagliate sulle sue caratteristiche, il che può aiutarli a capire come impatta sui tempi di risposta.
Indagare sui modelli nelle performance
Diversi tipi di richiesta possono comportarsi in modo diverso in termini di performance. Guardando all'istogramma, gli ingegneri possono identificare comportamenti diversi nei tempi di risposta, o "modi". Per esempio, considera una situazione in cui il caricamento di un sito web richiede tempi diversi a seconda delle chiamate specifiche ai servizi. Se una chiamata di servizio particolare aumenta sempre il tempo di risposta, gli ingegneri possono facilmente individuarla utilizzando i nostri nuovi strumenti.
Prevediamo anche di permettere agli utenti di cercare diverse caratteristiche cambiando il modo in cui codifichiamo le informazioni nell'albero. Ad esempio, potrebbero esaminare come la durata delle chiamate di servizio influisce sui tempi di risposta complessivi o come diversi valori di intestazione impattano sulle performance.
Per facilitare la comprensione, gli utenti possono iniziare la loro analisi dall'albero o dall'istogramma. Se scelgono di partire dall'istogramma, possono selezionare un intervallo di tempo di risposta particolare, il che aggiornerà poi la codifica dei colori dell'albero per riflettere come quelle richieste differiscono dal resto.
Sfide nello sviluppo
Sebbene siamo entusiasti di questo nuovo approccio alla visualizzazione, riconosciamo che ci sono alcune sfide davanti a noi. Una sfida è gestire grandi quantità di dati. Il tracciamento distribuito può generare enormi quantità di dati ogni giorno, il che può rendere difficile generare visualizzazioni rapidamente.
Per affrontare questo, pianifichiamo di organizzare e preprocessare i dati raccolti in modo che le visualizzazioni possano essere create in modo più efficiente.
Un'altra sfida è garantire una buona esperienza utente. Quando troppe informazioni vengono presentate tutte insieme, può sopraffare gli utenti. Per ridurre questo rischio, puntiamo a mantenere la nostra dashboard semplice e user-friendly. Se alcuni tipi di richiesta generano alberi complessi, permetteremo agli utenti di nascondere sezioni dell'albero per rendere la navigazione più facile.
Progresso attuale e obiettivi futuri
Attualmente stiamo costruendo un prototipo del nostro metodo di visualizzazione. Per i nostri test, stiamo usando un insieme di dati di uno studio precedente. Questi dati simulano un ambiente di microservizi così possiamo vedere come funziona la nostra visualizzazione nella pratica.
Per ora, abbiamo sviluppato l'interfaccia utente di base del nostro prototipo, compresi i componenti dell'albero e dell'istogramma. Tuttavia, stiamo ancora lavorando per affinare il motore di elaborazione dati e i sistemi backend che supportano la dashboard. Anche se non possiamo fornire uno screenshot completo del prototipo funzionante proprio ancora, abbiamo creato un mock-up per mostrare l'aspetto finale previsto.
Nelle prossime fasi del nostro sviluppo, intendiamo ampliare le capacità del nostro prototipo per analizzare ulteriori caratteristiche delle richieste e consentire analisi più interattive. Il nostro obiettivo a lungo termine è abilitare l'analisi simultanea di molteplici fattori che influenzano le performance.
Inoltre, continueremo a valutare il nostro approccio usando casi studio rilevanti e cercheremo dati reali da grandi sistemi di microservizi per garantire che il nostro metodo possa essere applicato in modo efficace oltre i nostri test iniziali.
Ricerca correlata
Studi precedenti hanno esplorato modi per visualizzare sistemi distribuiti, ma molti si concentrano su richieste singole o confronti tra solo due richieste. Strumenti come ShiViz e Jaeger hanno fatto progressi nella visualizzazione delle performance delle singole richieste, eppure mancano ancora di capacità robuste per analizzare modelli su molte richieste contemporaneamente.
Altri strumenti commerciali hanno cominciato a colmare questa lacuna incorporando funzionalità di analisi delle performance aggregate. Tuttavia, pochi di questi strumenti collegano specificamente le caratteristiche delle richieste al comportamento delle performance complessive.
Il nostro lavoro mira a colmare questa lacuna fornendo un approccio alla visualizzazione che si concentra sulla comprensione di come diverse caratteristiche delle richieste si relazionano alle loro performance.
Conclusione
In questo articolo, abbiamo introdotto un nuovo metodo di visualizzazione per analizzare le performance dei microservizi. Il nostro approccio mira a fornire una visione più chiara di come si comportano le diverse richieste e come le loro caratteristiche influenzano i tempi di risposta. Utilizzando strumenti interattivi come un albero e un istogramma, speriamo di rendere il processo di analisi delle performance dei microservizi più efficiente e utile per gli ingegneri. Mentre continuiamo a sviluppare il nostro prototipo e affinare i nostri metodi, non vediamo l'ora di possibili miglioramenti nelle pratiche di analisi delle performance nell'industria del software.
Titolo: Enhancing Trace Visualizations for Microservices Performance Analysis
Estratto: Performance analysis of microservices can be a challenging task, as a typical request to these systems involves multiple Remote Procedure Calls (RPC) spanning across independent services and machines. Practitioners primarily rely on distributed tracing tools to closely monitor microservices performance. These tools enable practitioners to trace, collect, and visualize RPC workflows and associated events in the context of individual end-to-end requests. While effective for analyzing individual end-to-end requests, current distributed tracing visualizations often fall short in providing a comprehensive understanding of the system's overall performance. To address this limitation, we propose a novel visualization approach that enables aggregate performance analysis of multiple end-to-end requests. Our approach builds on a previously developed technique for comparing structural differences of request pairs and extends it for aggregate performance analysis of sets of requests. This paper presents our proposal and discusses our preliminary ongoing progress in developing this innovative approach.
Autori: Jessica Leone, Luca Traini
Ultimo aggiornamento: 2023-02-24 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2302.12734
Fonte PDF: https://arxiv.org/pdf/2302.12734
Licenza: https://creativecommons.org/licenses/by/4.0/
Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.
Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.