Une plateforme de télémétrie frontend en temps réel
Un SDK frontend typé et un pipeline d’événements qui ont donné une visibilité en temps réel aux parcours utilisateur en plusieurs étapes, en ramenant la détection des incidents de plusieurs jours à quelques minutes.
- Stack
- TypeScript · BFF · Event streaming · Columnar storage · Dashboards
Le problème
Certains utilisateurs abandonnaient discrètement un long parcours en plusieurs étapes. Quand une intégration avec un tiers tombait, personne ne le voyait : le diagnostic consistait à lire à la main des logs serveur éparpillés et prenait des jours. Chacun de ces jours, ce sont de vrais utilisateurs qui n’ont pas pu aller au bout.
L’approche
- Un petit SDK typé. Un seul tracker TypeScript collectait les mêmes données d’action utilisateur sur chaque écran et chaque plateforme, pour qu’un événement veuille dire la même chose partout.
- Une limitation de débit avec soupape de sécurité. Le SDK regroupe les événements et les envoie après un court délai ou à une limite de taille, selon ce qui arrive en premier. Une requête par clic épuise les threads réseau du navigateur ; garder les événements plus longtemps risque de les perdre à la fermeture de l’onglet, donc la fermeture de page utilise
navigator.sendBeacon. - Un BFF qui valide. Les lots arrivent dans un Backend for Frontend qui vérifie le schéma par rapport aux définitions TypeScript, contrôle la vraisemblance des horodatages, retire les champs inattendus et les données personnelles, et ajoute des métadonnées de session. Comparer le verdict du backend avec ce que l’interface affichait a révélé des écarts d’état entre les deux.
- Un pipeline de streaming vers un stockage en colonnes. Le streaming absorbe les pics de trafic, et le stockage en colonnes répond à des agrégations sur des ensembles d’événements très volumineux et à forte cardinalité en quelques millisecondes, là où les stockages en lignes rament.
- Une gestion discrète des pannes. Si le pipeline est à l’arrêt, le SDK garde un petit tampon en local et un disjoncteur passif suspend l’envoi. Il ne sollicite pas le serveur pour vérifier son état ; il attend la prochaine réponse réussie.
Le résultat
Le délai de détection d’un incident est passé de plusieurs jours à moins de 5 minutes. Quand une étape cassée signifie de nombreuses tentatives échouées, c’est la différence entre une ligne dans un post-mortem et un correctif le matin même.