Comment intégrer les traitements en temps réel dans des systèmes existants?
Mais qu’appelle-ton temps réel ?
Dans le domaine de la donnée, le principe du temps réel est de pouvoir récupérer, extraire et restituer de l’information en temps réel sur des flux continus de données.
La difficulté étant d’effectuer des transformations et des calculs dans un temps très court.
Exemple :
- Affichage du Chiffre d’affaire en temps réel
- Classification et scoring des clients en temps réel, etc….
Qu’est ce que sont les traitements en mode ‘Batch’ ?
Au contraire du temps réel, le mode ‘Batch’ va englober tous les traitements de données nécessitant un temps de calculs plus conséquents (de quelques minutes à plusieurs heures). Ceci est principalement dû à des calculs nécessitants des mises en forme complexes et/ou l’utilisation des données historiques. Les résultats qui en sont issus seront donc ‘froids’ au moment de l’analyse (Vs. ‘chaud’ pour le temps réel).
Qu’est ce qu’une architecture lambda ?
Le principe de l’architecture lambda consiste à avoir au sein du même système d’analyse de données, deux processus :
- Un processus qui va permettre le traitement des données en mode batch
- Un processus pour analyser les données en temps réel
- Données d’entrée: Les données en entrée peuvent venir de plusieurs sources différentes. En termes de technologies, on peut notamment utiliser Kafka qui va permettre de stocker les données (de quelques secondes à quelques heures) et de les envoyer dans un espace de stockage permanent pour le côté ‘Batch’, ou directement vers un moteur d’analytics ‘temps réel’ tel que Spark streaming ou Storm pour le côté temps réel.
- Batch layer: Le rôle du Batch layer est de pré-processer les données qui seront envoyées dans la base de stockage finale. Cette étape peut être assez longue (plusieurs heures) en fonction des traitements effectués. Les données en entrée peuvent être stockées dans un système tel que HDFS ou une base de données puis pré-processsées par un moteur analytics tel que spark, hive, SQL, etc.
L’avantage d’utiliser un système de stockage fichiers en entrée (tel que HDFS) est de pouvoir stocker tous types de données dans leurs formats natifs (vidéo, image, fichier xml, json, etc.).
Les résultats étant souvent structurés, ils seront ensuite poussés dans une base relationnelle ou NoSQL (serving db) .
- Speed layer: En parallèle du Batch layer peut être effectué une étape appelé ‘speed layer’. Le principe est d’analyser et de fournir une première vue des données en temps réel qui sera complétée par la suite par les résultats du batch layer. Les types de traitements effectués sont limités par rapport à ce que l’on peut faire dans le mode batch, pour ne pas augmenter les temps de calcul (exemple: on évite d’analyser tout l’historique lors de cette étape). Des outils tels que spark streaming, storm ou bien flink sont très performants. Les résultats sont souvent stockés dans des bases NoSql telles que Elasticsearch ou Cassandra.
- Serving layer : Les données issues du batch et du speed layer étant principalement structurées, elles seront souvent stockées dans une ou plusieurs bases NoSQL, MPP ou NewSQL afin d’être mises à disposition des utilisateurs ou d’applications en fournissant un temps de réponse très court.
Voici un exemple de ce que cela pourrait donner technologiquement parlant, avec les nouvelles technologies dites de Big Data :
Conclusion
Le temps réel est un des grands sujets du moment dans le monde de la data. Nous espérons que cet article vous aura permis de comprendre les grands principes de l’architecture Lambda.
Pour en savoir plus : http://lambda-architecture.net/
Article écrit par Anne-Sophie LAUGIER et Louis-Baptiste FRANCE