La traccia non è “solo registrazione”!

Ho già abbastanza registrazione, la traccia è semplicemente ridondante
#CowboyDeveloper

La registrazione funziona – oh sì, sì – ma solo fino a un certo punto. Nel momento in cui inizi a gestire le interazioni che abbracciano sistemi e servizi, si scatena l’inferno. La causalità diventa sempre più difficile da rintracciare ( quale richiesta ha causato questa risposta? ), E le relazioni ” prima-dopo ” sono solo una PITA. Con la traccia, puoi – banalmente – isolare il servizio e la relativa portata, permettendoti di approfondire il comportamento del tuo sistema senza preoccuparti di altre richieste simultanee che ingombrano la tua analisi.
(E no, non iniziare con i timestamp. Questi sono sistemi distribuiti di cui stiamo parlando!)

Inserisci OpenTracing , con il quale puoi tracciare il viaggio intrapreso dalla richiesta mentre rimbalza attraverso il tuo servizio sempre più elaborato. L’idea generale è iniziata con il progetto Dapper di Google, che ha ispirato OSS Zipkin , e si è conclusa con l’ adesione al CNCF .

La parte difficile della traccia distribuita è che richiede molto lavoro – devi strumentare tutto – i servizi che scrivi, i componenti OSS che usi in questi servizi, la logica aziendale di livello superiore, tutto . È fattibile, ma è un ridicolo mal di testa da mantenimento, e storicamente ne vale la pena solo se il tuo sistema era abbastanza grande / complesso da giustificarlo.

OpenTracing modifica questa equazione, separando la strumentazione dall’implementazione. Gli autori possono strumentare il proprio codice in base a questo standard (e sì, la maggior parte delle persone lo sta facendo!) E non devono necessariamente collegarsi a un fornitore specifico, con l’utente finale che sceglie quali strumenti utilizzare per eseguire effettivamente la traccia!

Un’implementazione piuttosto interessante è Uber’s Jaeger , con un’eccellente demo / procedura dettagliata qui.

L’unico motivo per non utilizzare la traccia nella traccia distribuita è che non sapevi che esistesse – e ora lo fai.
Non essere un #CowboyDeveloper. Non reinventare la ruota (o peggio, ignora completamente la ruota!)

( Questo articolo appare anche sul mio blog )