Formula E
La Formule E diffuse ses données avec Riak
Le championnat du monde de monoplaces électriques est suivi par des millions de fans à la TV, sur les réseaux sociaux et sur applications mobiles. C’est le français Intellicore qui assure la diffusion des informations sur la course, en temps réel, grâce à une infrastructure qui s’appuie sur la base NoSQL Riak TS et sur des développements en Erlang.
C’est au terme d’une course épique que Sébastien Buemi remportait dimanche dernier le titre de champion du monde de Formule E. Un coup double pour son équipe Renault e.dams qui gagnait pour sa part le titre constructeur. La dernière course qui s’est tenue dans le « Battersea Park » de Londres fut un final en apothéose pour cette nouvelle discipline 100% électrique qui dépoussière la compétition automobile.
Car, outre son mode de propulsion sans rejet de CO2, la Formule E bouscule les grandes disciplines des sports mécaniques, notamment en faisant courir ses monoplaces au cœur des grandes métropoles mondiale. Elle bouscule aussi les pratiques habituelles dans sa manière de communiquer avec ses fans, notamment via l’exploitation des réseaux sociaux et du mobile. Un fan peut ainsi voter pour son pilote préféré afin de lui fournir un peu plus de puissance électrique lors de la course : c’est le "Fanboost".
Développées par le français Intellicore, des applications mobiles gratuites donnent accès aux flux vidéo des courses et à de nombreuses informations « live » sur le déroulement de la course. C’est un outil précieux pour les spectateurs qui assistent aux ePrix en bordure de piste, mais aussi pour les téléspectateurs et les internautes.
Objectif : constituer une plateforme « data » dédiée au sport
Intellicore développe des applications mobiles et tablettes, mais se positionne désormais comme fournisseur de données dans le monde du sport. Outre la Formule E, le niçois collecte les données de la NRL (National Rugby League, la ligue de rugby australienne) ou de la FIBA (Fédération internationale de Basket). Pour la Formule E, la plateforme stocke de nombreuses données sur la course ainsi que la télémétrie de chaque voiture tout au long de la compétition.
Afin de se positionner comme fournisseur de « data », Intellicore vient de rénover son infrastructure informatique. « J’ai été embauché il y a un an environ pour transformer l’Intellicore Data Platform en produit » confirme Annard Brouwer, Senior Software Architect chez Intellicore Services.
Face aux volumes de données en jeu et au besoin de délivrer les informations en temps réel, tout au long des événements sportifs, l’architecte à souhaité mettre en place une base de données NoSQL, non pas pour remplacer la base Oracle relationnelle déjà exploitée, mais en parallèle.
« Pour tenir nos objectifs, il nous est apparu que nous avions besoin de deux types de stockage. Une base de données SQL classique est parfaitement adaptée pour stocker les données sur les équipes, les matchs. Mais les bases relationnelles nous imposaient bien trop de contraintes pour stocker des données de télémétrie. Nous sommes allés chercher une solution du côté des bases NoSQL. »
Outre les volumes de données et la performance, un critère clé pour un service de mise à disposition d’informations pour les équipes ou les médias a été la disponibilité. Il est en effet impensable qu’un tel service soit indisponible en plein événement, même si collecter des données sur un événement tel qu’un week-end de course de Formula-E présente déjà de nombreux enjeux techniques, notamment sur le plan réseau.
L’infrastructure devait donc faire preuve d’une fiabilité totale, même sous une forte charge, et même lorsque le flux de donnée est interrompu ou perturbé. « Fort de l’expérience de notre PDG, Christian Trotobas, nous avons fait le choix d’une technologie sur laquelle nous n’avions alors aucune expérience, mais dont nous pensions qu’elle nous apportera un véritable avantage compétitif » ajoute Annard Brouwer. Intellicore fait alors le choix de la base Open Source Riak, une base de données NoSQL développée en langage Erlang.
Riak TS une solution fiable et autonome
Manu Marchal, directeur général EMEA de Basho Technologies l’éditeur de la solution détaille la solution choisie par Intellicore. « Riak TS, pour Time Series est la dernière version de Riak. Elle a été conçue spécifiquement pour stocker de la donnée temporelle. C’est une donnée qui peut être structurée et ce qui nous a permis d’offrir un requêtage SQL ».
Autre atout qui va plaider en faveur de Riak TS par rapport aux autres bases NoSQL évaluées, Riak est écrit en langage Erlang. Manu Marchal explique « Erlang offre tous les avantages d’un langage crée pour les systèmes distribués, conçu pour être tolérant aux pannes et qui est exploité par 40% des opérateurs de télécom du monde entier. »
Un élément décisif pour Annard Brouwer et l’équipe dirigeante d’Intellicore. « Le fait que Riak ait été développé en langage Erlang était clairement un atout pour nous. Il s’agissait de la seconde génération de la base de données, une solution open source ce qui nous permettait de démarrer le projet simplement. Il y avait de nombreux autres avantages à aller vers Riak mais la principale difficulté pour nous était de passer du modèle relationnel à une base NoSQL. »
Manu Marchal ajoute : « Intellicore a fait le choix de Riak TS car il s’agit d’une petite structure et ils ont recherché une plus grande capacité à monter en charge, ce que ne pouvait leur offrir leur base de données Oracle. Ils voulaient aussi se libérer du besoin d’un administrateur de base de données. Riak est si simple en termes d’administration que l’on peut se passer de DBA. Si un nœud tombe, il redémarre automatiquement. »
Intellicore a fait le choix de déployer sa plateforme de production sur Amazon AWS, une solution Cloud qui va permettre au niçois de monter en puissance simplement en ajoutant plus de puissance et plus de mémoire au fur et à mesure que de nouveaux sports viendront rejoindre sa plateforme.
« Actuellement, nous avons 5 nœuds Riak en production » explique Annard Brouwer. « Pour chaque course, nous collectons environ 6 Go de données. Ce n’est pas énorme, mais cela grossira rapidement avec l’arrivée de nouveaux sports, comme le football. Nous avons bâtit notre infrastructure pour qu’elle grossisse et ne pas avoir à nous soucier de sa capacité à monter en charge. C’est ce qui nous permet aujourd’hui de nous concentrer sur le développement de nouvelles fonctionnalités. »
Erlang, un atout dans la recherche de la haute disponibilité
Outre ce choix de Riak, l’équipe dirigeante d’Intellicore a fait le pari de réaliser ses nouveaux développements en langage Erlang, une plateforme dont Annard Brouwer est un fervent militant.
« Il s’agit de l’un des meilleurs systèmes existants actuellement ! » s’enthousiasme l’architecte. « Conçu par Ericsson pour ses autocommutateurs, c’est une solution scalable, tolérante aux pannes, et relativement simple à prendre en main pour développer. Nous avons estimé que cette solution nous aidera à assurer notre montée en charge. »
L’architecte s’appuie sur l’exemple de WhatsApp dont la plateforme fonctionne sur Erlang et qui compte 1,5 milliard d’utilisateurs avec quelques dizaines d’ingénieurs seulement. « Cela pouvait sembler être un gros risque d’aller vers une technologie sur laquelle nous n’avions pas de compétences, mais nous avons l’expérience de la création de grands systèmes complexes et donc des problèmes que cela entraine. C’est ce qui nous a poussés à faire ce choix. »
Annard Brouwer a fait le choix d’une variation du langage baptisée Elixir. « Il s’agit d’un langage bâtit sur Erlang par des experts venu du monde Ruby and Rails, or j’ai beaucoup d’expérience sur Ruby and Rails et j’aime énormément beaucoup des concepts qu’ils ont mis dans Elixir. » Elixir présente l’avantage d’être compatible avec Erlang si bien qu’il est possible de mélanger du code Erlang et Elixir dans une même application.
Une transition vers Riak progressive mais rapide
« Migrer vers la plateforme Erlang n’a pas été simple pour notre équipe » reconnait néanmoins Annard Brouwer, « il ne s’agit pas seulement d’aller vers une nouvelle technologie mais véritablement prendre une nouvelle approche du développement. »
Pour faciliter ce changement interne, Intellicore a fait le choix de migrer progressivement. « Nous avons commencé par le volet télémétrie, tout simplement en stockant dans Riak les données dans des blob (Binary Large OBjects), ce que nous avons rapidement implémenté.»
Après cette première phase transitoire, Annard Brouwer a pu constater le bon fonctionnement de la plateforme. Les données de télémétrie des Formules E ont ensuite été chargées sous forme de séries temporelles dans Riak TS. « Cela va nous donner un gros avantage pour la prochaine saison. Désormais nous pouvons interroger la base pendant une course pour par exemple comparer la vitesse moyenne d’un pilote sur le circuit par rapport à l’année dernière. Ce type de requête est très simple à écrire pour Riak TS et nous pouvons aujourd’hui réaliser des calculs que nous ne pouvions pas faire l’année dernière. »
La normalisation des données, un enjeu clé pour Intellicore
La Formula E est actuellement le sport qui consomme le plus de puissance de calcul sur la plateforme Intellicore - comparé au rugby ou au basket par exemple - car pour les autres sports les données de position des joueurs lors des parties ne sont pas encore disponibles.
Outre le stockage des informations générées par les monoplaces, un défi pour les développeurs d’Intellicore réside dans la normalisation des données, une étape qu’ils doivent réaliser afin de les rendre exploitable par les applications mobiles et les clients du service Data.
« Nous devons transformer les données afin d’avoir des formats uniformes, quel que soit le sport et le fournisseur de la donnée. Cette normalisation permet de simplifier le code de nos applications car nous pouvons garantir la cohérence des données stockées, même s’il y a eu une erreur de transmission. Cette garantie permet d’éviter d’avoir à multiplier les vérifications au niveau des applications elles-mêmes. »
Ces traitements sur la donnée sont réalisés avec des outils développés en interne car ces outils sont considérés comme un avantage concurrentiel pour Intellicore. Manu Marchal précise : « Intellicore normalise la donnée notamment afin de corriger les données absentes ou aberrantes, puis stocke cette donnée sur Riak TS. Par exemple, ils calculent la position de la voiture sur le circuit en terme de % du tour accomplis, ce qui facilite la comparaison des données de télémétrie d’un tour par rapport à un autre. Cette donnée est ensuite diffusée en temps réel. »
Actuellement, Intellicore diffuse ses informations à ses clients via un réseau de type CDN pour délivrer la donnée sous la forme d’un fichier exploitable via un SDK.
L’éditeur souhaite néanmoins faire évoluer ce modèle et aller vers la fourniture d’API via lesquelles les clients d’Intellicore viendront puiser les données en exécutant leurs requêtes directement dans Riak TS. Sûr de son architecture, Annard Brouwer se prépare à cette évolution même si les clients d’Intellicore sont très répartis géographiquement. La réplication multi-cluster de Riak permettra à Intellicore de répliquer son cluster européen aux Etats-Unis ou en Asie de manière fiable.
Autre évolution à venir, la fourniture de services analytiques avancés et notamment du prédictif sur les données de performance. Intellicore pourra notamment exploiter l’intégration entre Riak et Apache Spark, une intégration d’ores et déjà effective.