IoT et NoSQL : Cassandra va permettre à CMA-CGM de suivre ses conteneurs en temps réel
Le 3ᵉ armateur mondial de transport maritime en conteneurs est le premier client de la start-up marseillaise Traxens, dont l’objectif est à terme de suivre trois millions de ces containers. Ce service Big Data dédié au secteur maritime s'appuie sur la distribution DataStax Entreprise de la base NoSQL Apache Cassandra.
Quatre cent mètres de long, 240 000 tonnes à pleine charge et capable de porter près de 18 000 conteneurs, le Bougainville est le fleuron de la flotte de porte-conteneurs de CMA CGM (Compagnie maritime d'affrètement - Compagnie générale maritime). Outre cette capacité hors norme, ce navire innove sur le plan de l'hydrodynamique et de ses faibles émissions de CO². Mais aussi par la traçabilité de chaque conteneur embarqué qui est désormais proposée aux clients de CMA CGM.
Toutes les données des capteurs de température, de vibrations et bien entendu la position géographique du conteneur sont actualisées plusieurs fois par jour. Et derrière cette innovation, une startup basée à Marseille, Traxens.
« Nous voulons proposer notre propre plateforme IoT pour le secteur du transport maritime » explique Alexis Ayach, directeur technique de Traxens. « C'est un domaine très spécifique où l'Internet des Objets n'est pas encore présent. Le besoin est différent de celui d'un industriel qui va remonter des données de capteurs, de même que l'exploitation qui doit être fait des données est très différente de ce qui est pratiqué jusqu'à aujourd'hui. Il ne s'agit pas uniquement de données de capteurs recueillies au niveau du container, mais c'est aussi des données sur le voyage et le parcours du navire. Les plateformes IoT existantes ne nous permettaient pas de réaliser les analyses que nous souhaitions ».
Enjeu : créer une architecture pour suivre 3 millions de conteneurs
Créée en 2012, la startup a commencé par concevoir la Trax-Box, un petit boitier communicant qui vient se fixer au conteneur. Celui-ci peut être doté de plusieurs capteurs, selon la nature du conteneur, mais présente surtout l'originalité de fonctionner sur le principe du réseau maillé. Les boitiers fixés sur les conteneurs placés sur un même navire communiquent entre eux afin de remonter les données de leurs capteurs jusqu'au système de transmission satellite du navire.
Ce maillage permet aux containers placés en fond de cale de pouvoir communiquer en dépit d'être sous plusieurs niveaux de conteneurs métalliques.
« Chaque boitier va générer une vingtaine d'événements par jour » souligne Alexis Ayach. « Notre objectif est d'équiper jusqu'à 3 millions de containers, sachant que pour 1 million de boitiers cela représente déjà 40 connexions à traiter par seconde, chaque connexion contenant les données de l'ensemble des capteurs connectés à une Trax-Box ».
Pour faire face à une telle avalanche de données, la startup avait commencé à développer sa plateforme IoT en s'appuyant sur une base de données relationnelle, PostgreSQL. Mais elle a dû revoir son architecture technique. La signature du contrat avec CMA CGM lui ouvre un marché énorme mais l'informatique doit suivre et la montée en charge s'opérer sans risque de saturation.
En avril 2015, Traxens se tourne alors vers Octo afin d'être conseillé dans son choix d'architecture informatique. Les ingénieurs vont lui recommander Apache Cassandra, une base de données NoSQL déjà retenue dans divers projets IoT.
« Le stockage de données issues de capteurs avec une montée en charge à venir et un besoin de haute disponibilité est le type de projet où Cassandra est bien adapté » explique Victor Coustenoble, avant-vente technique chez DataStax. L'américain est l'éditeur à qui l'on doit 80% du code d'Apache Cassandra et qui commercialise une édition Entreprise de cette base de données NoSQL.
Dans le domaine des objets connectés, Apache Cassandra a été retenu par Edelia, une filiale d'EDF qui consolide les données des compteurs Linky et d'autres sources d'énergies afin de fournir une offre de suivi de la consommation. British Gas a aussi choisi Cassandra pour son service de maintenance prédictive des chaudières connectées, de même que Nest, filiale de Google, dont les données des thermostats connectés sont stockées dans cette même base. « Apache Cassandra est parfaitement adaptée au stockage des séries temporelles issues de l'internet des objets » résume Victor Coustenoble.
Cassandra impose un modèle de donnée bien spécifique
Dès que les fondateurs de Traxens ont porté leur choix sur l'offre Entreprise de DataStax, s’est posée la question du portage du modèle de données précédemment élaboré pour PostgreSQL.
« Les ingénieurs de DataStax sont venus chez nous afin d'étudier notre modèle de donnée et de répondre au mieux à notre besoin. C'est à cette occasion que nous avons réellement pris conscience des capacités de la solution. Nous avons été formés sur les techniques de modélisation de base de données sur Cassandra et la création de notre modèle de données ». La tâche s'avère alors plus complexe que prévu pour l'équipe qui va découvrir le NoSQL.
« Nous pensions conserver le modèle que nous avions mis au point depuis 2014 pour PostgreSQL, mais il s'est avéré que ce n'était pas faisable. Nous avons dû tout recréer afin de nous conformer aux bonnes pratiques du NoSQL et d'Apache Cassandra ». L'équipe de DataStax aide alors les développeurs de Traxens à créer le prototype de son modèle de données ainsi que les principaux modèles de requêtes.
Les développeurs vont notamment mettre à profit l'intégration du moteur Apache Solr qui réalise une indexation en temps réel des données déversées dans la base. « Il faut savoir qu'avec Cassandra seul, on ne peut faire des recherches que sur la clé primaire, il n'est pas possible de faire de recherche sur toutes les données » précise Victor Coustenoble. « Avec Solr, il devient possible de faire de la recherche full-text sur toutes les données, du géospatial, de la recherche à facettes, des recherches multicritères sur les données de Cassandra, soit via l'API Solr soit directement en CQL, le SQL de Cassandra ». Dans l'édition DataStax Entreprise, Solr est déjà totalement intégré à Cassandra, ce qui donne accès très facilement à ces capacités étendues.
Chez Traxens, Solr s'est totalement imposé pour certaines recherches qui ne pouvaient être réalisées avec le CQL Cassandra de base. « Notre modèle économique est plutôt complexe et beaucoup d'acteurs vont devoir réaliser des recherches et des analyses sur les données » souligne Alexis Ayach. « Cela implique un grand nombre de requêtes possibles dont certaines que nous n'imaginions pas réalisables avec du NoSQL. La puissance de Solr était donc très importante pour nous ».
Pour les développements, le directeur technique a privilégié une approche 100 % Java et a opté pour les frameworks Spring et Activiti pour le traitement des processus métier.
Une architecture logicielle 100 % Apache
La nouvelle architecture logicielle aujourd'hui mise en œuvre par Traxens s'appuie sur de nombreuses technologies Apache. La chaîne d'alimentation des données est totalement asynchrone et découpée en microservices. Le serveur d'acquisition des données émises par les Trax-Box est un développement interne. Celui-ci publie les messages sur un bus de données Apache ActiveMQ.
Apache Camel joue ensuite le rôle d'ETL : il récupère les messages sur l'ESB puis les traite et les envoie au framework Activiti où une nouvelle série de traitements sont réalisés avant que les données soient finalement écrites en base de données.
« Les données sont alors indexées par Solr et sont disponibles pour analyse » explique le directeur technique de Traxens qui ajoute : « sur ce plan, nous allons commencer à exploiter Apache Spark afin de mener des analyses plus poussées, notamment calculer des KPI et générer des états ». La startup va alors bénéficier de l'intégration Cassandra / Apache Spark supportée et maintenue par DataStax.
Un datacenter actuellement, trois en 2017
Etonnamment, Traxens n'a pas fait le choix de s'appuyer sur un service Cloud public pour héberger son service. Alexis Ayach s'en explique. « Notre cahier des charges était assez contraignant en termes d'hébergement de la plateforme. Les données sont considérées comme très sensibles et nous ne pouvions pas nous permettre de les stocker sur des serveurs qui ne nous appartiennent pas ».
Le directeur technique a fait le choix d’un hébergeur localisé en France, non loin des bureaux de Traxens, ASP Serveur. La startup dispose de ses serveurs en propre ainsi que de son infrastructure réseau.
Pour l'instant, un seul datacenter a été déployé avec trois nœuds Cassandra en production. Trois nouveaux nœuds devraient s'y ajouter rapidement, pour mettre en production Apache Spark et le volet analytique du service que Traxens souhaite rapidement offrir à ses clients. « Nous ne souhaitons pas avoir les données de production et les données analytiques sur les mêmes nœuds et les volumes de données vont désormais croitre rapidement ».
Plutôt que de simplement ajouter des nœuds à ce premier cluster, comme Cassandra le permet aisément, Traxens va tout d'abord dupliquer ce cluster dans un second datacenter afin de sécuriser son activité. Et d'ici 2017, deux autres datacenters devraient être déployés pour faire face à la montée en puissance du service et tenir l'objectif de 3 millions de boitiers déployés.
Beaucoup de fonctionnalités restent encore à développer sur le service Traxens, mais cette semaine l'accès à cette nouvelle plateforme a été ouvert à un premier client de Traxens, CMA-CGM.