Tisséo
Tisséo est la régie des transports publics de la métropole de Toulouse. Elle gère un réseau comprenant des lignes de bus, deux lignes de métro automatique (bientôt trois), ainsi qu’une ligne de tramway. Les métiers chez Tisséo sont variés et couvrent plusieurs domaines pour assurer le bon fonctionnement du réseau de transport. En plus des conducteurs de bus, métro et tramway, qui représentent une grande partie de l’effectif, les agents de maintenance, responsables de l’entretien des véhicules et des infrastructures (rails, stations, etc.), comptent pour environ 10 % des collaborateurs. La maintenance est un enjeu crucial pour l’entreprise, qui ne peut pas se permettre de sous-traiter cette activité. Pour soutenir ces processus métiers, le département IT doit proposer et maintenir des applications modernes et performantes. C’est dans ce contexte que nous sommes intervenus.
Besoin
Pour optimiser la gestion des pannes sur ses lignes de métro, qu’il s’agisse d’interventions réactives ou anticipées, Tisséo s’appuie sur un réseau de capteurs. Ceux-ci fournissent quotidiennement plus d’un million de données variées à une fréquence élevée. Le système, tel que conçu par le constructeur des rames, stocke ces informations dans un serveur Oracle (SQL) classique. Cependant, ce type de base de données n’est pas idéal pour exploiter efficacement ce volume de données sur des cas d’usage tels que la détection précoce des pannes, l’analyse statistique sur plusieurs années ou encore la maintenance prédictive.
C’est pourquoi il était nécessaire de concevoir un pipeline de traitement des données, permettant de migrer les informations depuis la base SQL vers plusieurs indexes OpenSearch, mieux adaptés à ces usages spécifiques.
Solution
Nous avons développé une solution basée sur Kafka, articulée autour d’un cluster Kafka Connect. Ce cluster intervient aux deux extrémités de la chaîne de traitement. D’une part, un connecteur JDBC de type source ingère les données dans Kafka. D’autre part, un connecteur de type sink récupère les données d’un topic Kafka pour alimenter les index OpenSearch.
Au milieu de cette chaîne, des scripts Python filtrent, enrichissent et transforment les données afin de les préparer pour la suite du pipeline. Grâce à un paramétrage précis de Kafka et de Kafka Connect, les performances du système peuvent être optimisées, notamment en tirant parti des capacités de parallélisation de Kafka.