Les données analytiques ont le pouvoir d’améliorer l’expérience des électromobilistes – sauf quand elles la ruinent en faisant tout planter. Je crois que ça résume bien mon défi de tous les jours en tant que développeur.
Qui dit véhicule électrique, dit véhicule numérique. Chaque fois qu’on se branche à une borne de recharge, on transfère bien plus que des ions. Caractéristiques du véhicule, statut de la batterie, historique de recharge et autres données sont non seulement aisément disponibles mais très utiles pour optimiser l’expérience des conducteurs. Certaines des fonctionnalités les plus appréciées de la plateforme AXSO, comme nos outils de paiement ou notre planificateur de trajet, dépendent entièrement de ces échanges de données à chaque branchement de véhicule.
Le hic, c’est qu’il y a vraiment beaucoup, beaucoup de ces données ; un nombre presque infini. Et nos capacités pour les transférer, les entreposer et les traiter sont bel et bien finies. De plus, le niveau de densité des données n’est pas sagement étalé dans le temps mais suit des pics et des creux presque entièrement imprévisibles. La demande est plus forte à certains moments de la journée, mais à part ces généralités, il n’y a aucune linéarité à laquelle s’accrocher.
Tout ça pour dire que lorsque nous avons voulu ajouter la fonctionnalité des offres commerciales, qui permet aux commerçants et restaurateurs d’envoyer des offres commerciales aux électromobilistes dans leur quartier, il était essentiel de ne pas alourdir encore la charge de la plateforme.
En même temps, il fallait nous assurer que les offres soient suffisamment pertinentes pour permettre aux électromobilistes de passer un bon moment pendant leur recharge. Nous devions effectuer un certain ciblage et faire remonter des métadonnées sur chaque offre : type d’événement, heure, ID de l’offre, ID du commerçant, ID du conducteur, langue, emplacement, distance par rapport au commerçant, etc.
Avec plus 100 000 usagers, on atteignait rapidement les millions d’événements qui venaient s’ajouter aux transferts de données existants, et cela risquait de créer des goulots d’étranglement.
La débrouillardise à la rescousse
Nous ne voulions pas abandonner la fonctionnalité pour autant car, même si elle n’est pas essentielle, elle permet aux gestionnaires de réseaux et aux exploitants de station d'agrémenter un peu plus encore l’expérience de la recharge, et ainsi de se différencier aux yeux des électromobilistes.
Alors comment faire pour ajouter cette nouvelle fonctionnalité sans que ses données analytiques dépassent les capacités de notre plateforme – autrement dit que le système plante ?
C’est là que l’ingénierie a rencontré la débrouillardise.
Notre trouvaille a été de ne pas envoyer immédiatement les données analytiques produites par les offres mais de les empiler dans une file d’attente, de les indexer intelligemment, et de les envoyer ensemble dans un fichier compressé pendant les creux d’activité des services essentiels. Ainsi, on mettait beaucoup moins de pression sur le Back End de la plateforme. Une idée qui semble ajouter de la complexité au système, mais qui en réalité le rend plus léger.
Je suis fier de préciser que tout ceci a été fait maison, à l’exception d’une API externe que nous utilisons pour deviner le sexe des conducteurs à partir de leur prénom ; cette information est utile pour la segmentation et le ciblage des offres, mais nous n’avons pas le droit de la réclamer aux usagers.
Quiconque a déjà contribué au développement de plateformes numériques de grande envergure sait que chaque petit défi est démultiplié, que chaque micro-erreur peut se traduire en plantage épouvantable. Mais grâce à des idées simples et efficaces comme celle-ci, la plateforme AXSO affiche une feuille de route impeccable.