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
localStoragee 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.