La sfida del debug dei dati in flussi di elaborazione complessi
Il mondo utilizza la nozione di Workflows per definire scenari di elaborazione complessi. Una delle caratteristiche di tali Workflows è che possono essere molto complessi poiché contengono molti passaggi (processi) che sono interconnessi in base a varie condizioni.
I dati attraversano questi Workflows, attivano azioni e vengono spinti ulteriormente in base al loro contenuto e stato, tra le altre cose. Più un Workflow e i dati che lo attraversano sono complessi, più è difficile individuare problemi all'interno del Workflow e dei dati, il che può portare a risultati indesiderati.
Praticamente tutti questi sistemi sono scatole nere nel modo in cui elaborano le informazioni. Puoi guardare l'input, vedere cosa esce dall'altra parte e cercare di capire cosa è successo nel mezzo. Potresti anche essere in grado di aggiungere dichiarazioni di debug-output nel codice per catturare istantanee di dati al fine di arrivare al fondo delle cose, o scaricare tutti i dati in un registro e poi cercare di sfogliarlo e collegare i punti.
Tutto questo è solo un grande dolore, frustrante e molto dispendioso in termini di tempo. Deve esserci un modo migliore.
Sniffing dei dati nei Workflows di layline.io
Invece di far emettere al Workflow informazioni di debug, un approccio più intelligente sarebbe trattare il Workflow più come una rete di computer. Monitorare i dati nelle reti di computer è non invasivo in quanto i dati vengono sondati ("sniffed") mentre attraversano la rete. In altre parole: viaggiano liberamente, ma vengono raccolti in punti di interesse, per ulteriori analisi senza disturbare il flusso.
layline.io funziona allo stesso modo. Supporta il sondaggio di singoli workflows per i dati mentre eseguono completamente i loro compiti. Di seguito spiegheremo come funziona e daremo un'occhiata ai vantaggi.
Avviare una Sessione Sniffer
Le sonde vengono avviate e i loro risultati visualizzati tramite il Configuration Center basato sul web. Le sonde possono essere avviate su qualsiasi Workflow in esecuzione. Per farlo, vai su "/Operations —> Audit Trail/". Vedrai una scheda che dice "Sniffer Sessions", che è ciò che useremo:

Le Sniffer Sessions - come suggerisce il nome - aprono una sessione che raccoglie dati e poi la chiude dopo un volume e/o tempo predefinito. I risultati della sessione vengono conservati e puoi prenderti il tuo tempo per analizzare i risultati.
Per avviare una nuova sessione sniffer, devi cliccare sul piccolo pulsante a forma di occhio a destra. Questo farà apparire una finestra di dialogo che ti aiuta a definire una nuova sessione sniffer:

Seleziona Workflow
A sinistra possiamo scegliere un Workflow tra tutti quelli in esecuzione. Le scelte sono:
- Generalmente: Sondare il Workflow indipendentemente da dove è in esecuzione
- Livello nodo: Sondare il Workflow in esecuzione su un nodo specifico
- Livello istanza: Sondare un'istanza specifica del Workflow in esecuzione su un nodo specifico
Questo ci dà un controllo granulare su dove esattamente vogliamo sniff i dati. Immagina di eseguire un Workflow specifico su più nodi e istanze, ma solo una di queste istanze sembra avere problemi. Qui puoi specificare che vuoi sniff i dati solo da quella particolare istanza invece che da qualsiasi istanza del Workflow.
Parametri
A destra abbiamo i Parametri della Sessione. Possiamo aggiungere parametri come un nome individuale per la sessione, impostare il numero massimo di messaggi per cui vogliamo sondare, nonché impostare un limite di tempo per quanto tempo vogliamo ascoltare i dati in secondi.
Trigger
Infine possiamo definire quando lo sniffing deve essere avviato. Puoi iniziare immediatamente con sniffing qualsiasi messaggio che passa, o iniziare solo quando inizia un nuovo stream, o dalla prima istanza che risponde, ecc.
Esecuzione dello Sniffer
Una volta che premi "OK" nella finestra di dialogo, lo sniffing inizierà. Verrà creata una sessione sniffer aperta, in attesa di dati. A seconda delle impostazioni precedenti, la sessione rimarrà aperta fino a quando non sarà stato sondato il numero desiderato di messaggi o sarà stato raggiunto il limite massimo di durata.


Man mano che i messaggi arrivano, i loro metadati vengono elencati sul lato destro della finestra Sniffer con il più recente in cima. Questo contiene informazioni come l'ora, il tipo di messaggi, dove è stato sniffed (istanza), il nome dello stream e, molto importante, dove nel workflow è stato sondato (posizione).

Potresti chiederti da dove nel Workflow vengono presi i messaggi. Come possiamo immaginare, il contenuto del messaggio è soggetto a modifiche mentre attraversa i processori del Workflow. Quindi, qual è il posto migliore per sondare i dati? All'inizio, alla fine, da qualche parte nel mezzo? La risposta è, su ogni "linea" di connessione in un Workflow. Questo è ancora una volta analogo al network sniffing, dove non si sniff nei computer, ma piuttosto "sul filo" tra i computer.
layline.io allo stesso modo sniff lo stesso messaggio su tutti i fili di connessione di un Workflow, il che ti consente di seguire un messaggio dall'inizio alla fine mentre passa attraverso il Workflow.
Analisi
Quando selezioni un messaggio dall'elenco dei risultati, la sua posizione da cui è stato sniffed verrà visualizzata nel grafico del Workflow nella sezione inferiore della finestra. Basta controllare la linea tratteggiata arancione. Selezionando lo stesso messaggio in altre posizioni nell'elenco, verrà mostrato in altre posizioni nel grafico del Workflow. Questo ti consente di controllare effettivamente un messaggio in tutte le sue fasi o elaborazioni e confrontare i potenziali cambiamenti allo stesso messaggio.
Infine, vorremmo sapere cosa c'è dentro il messaggio. A tal fine, fai clic sul segno "+" all'inizio del messaggio per espandere la struttura del messaggio e vedere tutti i dati contenuti.

Nota che i dati di sondaggio sono conservati. Questo è davvero comodo nel caso in cui stai eseguendo un numero di sonde sullo stesso Workflow e vuoi confrontare i risultati tra più sessioni sniffer.
Sommario
Un compito solitamente complicato di debug e sondaggio dei dati da milioni di messaggi è reso super semplice con layline.io. Come in una linea di produzione per il carbone, puoi semplicemente afferrare un po' dal nastro trasportatore mentre passa, e analizzarlo senza disturbare il processo di produzione.
Abbastanza interessante.
Risorse
- Leggi di più su layline.io qui.
- Contattaci a hello@layline.io.


