Vai al contenuto
Clinford Jordano Valencia
Tutti i progetti
PiattaformaWebMobile

Signal, una piattaforma di telemetria in tempo reale

Un SDK frontend tipizzato e una pipeline di eventi che hanno dato ai funnel KYC globali di Binance una visibilità in tempo reale, riducendo la diagnosi degli incidenti da giorni a minuti.

Ruolo
Senior Frontend Engineer
Periodo
2025–oggi
Stack
TypeScript · Mini Program · BFF · Kafka · Flink · ClickHouse · Grafana

Il problema

Milioni di persone in oltre 100 paesi passavano dalla verifica dell’identità, e alcune abbandonavano senza che nessuno se ne accorgesse. Quando un’integrazione con un fornitore si rompeva, nessuno lo vedeva: leggevamo a mano log del server frammentati e una diagnosi richiedeva da uno a tre giorni. Ognuno di quei giorni significava utenti reali che non riuscivano a completare la registrazione.

L’approccio

  • Un SDK piccolo e tipizzato. Un unico tracker in TypeScript raccoglieva gli stessi dati sulle azioni degli utenti in ogni schermata, su web, mobile e Mini Program, così gli eventi avevano lo stesso significato ovunque.
  • Limitazione con valvola di sicurezza. L’SDK mette gli eventi in coda e li invia ogni 3 secondi o al decimo evento, a seconda di cosa arriva prima. Una richiesta per ogni clic esaurisce i thread di rete del browser; trattenere gli eventi troppo a lungo rischia di perderli alla chiusura della scheda. Quando si lascia la pagina usa navigator.sendBeacon.
  • Un BFF che convalida. I batch arrivano a un Backend for Frontend che controlla lo schema rispetto alle definizioni TypeScript, verifica la coerenza dei timestamp, rimuove campi inattesi e dati personali (PII) e aggiunge i metadati della sessione e il verdetto del backend (superato, rifiutato, in attesa di revisione). Confrontare quel verdetto con ciò che mostrava l’interfaccia ha fatto emergere le discrepanze di stato tra interfaccia e backend.
  • Kafka, Flink, ClickHouse, Grafana. Kafka assorbe i picchi di traffico globali, Flink elabora gli eventi in tempo reale, ClickHouse li archivia (l’archiviazione a colonne risponde in millisecondi ad aggregazioni su miliardi di eventi ad alta cardinalità, dove quella a righe arranca) e Grafana mostra i funnel.
  • Gestione silenziosa dei guasti. Se la pipeline è giù, l’SDK conserva fino a 100 eventi in localStorage e un circuit breaker passivo sospende l’invio. Non interroga il server per verificarne lo stato; aspetta la successiva risposta andata a buon fine.

Il risultato

Il tempo per rilevare un incidente è sceso da 24–72 ore a meno di 5 minuti. Per un funnel in cui un passaggio rotto di un fornitore significa migliaia di registrazioni fallite, è la differenza tra una nota nel postmortem e una correzione la mattina stessa.