Data Insider

Qu’est-ce que le traitement de flux ?

Le traitement de flux collecte, manipule, analyse et fournit des données pendant qu’elles sont encore en mouvement.

Les données sont rarement statiques et se déplacent constamment d’une source à une autre. Cela peut être très avantageux pour l’entreprise, en apportant des informations en temps réel sur la santé d’un système. Plutôt que de parcourir les données de log, les données de flux donnent à voir le moment présent immédiat.

Le traitement de flux est conçu pour le traitement instantané des données et l’analyse en temps réel. L’objectif est de fournir des informations actualisées à la milliseconde sur les événements qui se produisent dans un système et de vous aider à réagir aux événements critiques dès qu’ils se produisent.

Dans la suite de cet article, nous allons aborder le traitement de flux en détail, son fonctionnement et les scénarios d’utilisation dans lesquels les différents types de traitement de flux sont les plus utiles.

Comment fonctionne le traitement de flux ?

Le traitement de flux est un moyen à faible latence de capturer des informations sur les événements pendant leur transit, en traitant les données à la volée. Un flux de données, ou flux d’événements, peut inclure tout type d’informations ou presque : données de parcours de navigation sur les réseaux sociaux ou sur le Web, données de production d’usine et autres données de processus, détails de transactions boursières ou financières, données de patients dans un hôpital, données de système d’apprentissage automatique, état des dispositifs IoT (Internet des objets) et d’autres données IoT sont autant d’exemples d’informations constamment retransmises à l’entreprise.

D’un point de vue architectural, le traitement de flux implique la présence d’un cadre de logiciels de traitement de données entre la source de données (les producteurs) et les utilisateurs de ces données (les consommateurs). Ce cadre de traitement de flux permet au service IT de déterminer quels sont les flux d’événements de données importants et comment utiliser ces données dans la conception de nouvelles applications de streaming au service d’un objectif particulier.

Le traitement de flux est particulièrement utile dans les cas nécessitant l’analyse de données produites en continu et évoluant au fil du temps. L’un des principaux objectifs du traitement de flux est de superviser le flux de données à la recherche d’anomalies et de valeurs aberrantes, et d’avertir la direction informatique en cas de problème. Pour prendre un exemple dans l’Internet des objets, des centaines de capteurs de ventilateurs industriels peuvent fournir en permanence leur température et leur vitesse de rotation à une base de données de journalisation. Le système de traitement de flux peut alors capturer ces données en flux au fil de leur transmission, avant qu’elles ne soient stockées dans la base de données, et ainsi émettre une alerte immédiate si l’un de ces ventilateurs montre des signes de défaillance.

 

Quelle est la différence entre le traitement de flux et le traitement par lots ?

Le traitement de flux implique l’analyse en temps réel des nouvelles données en mouvement, tandis que le traitement par lots consiste à analyser périodiquement des informations statiques.

Dans le traitement par lots, les données produites dans le passé et conservées dans un fichier (comme une base de données SQL) sont parcourues, manipulées et présentées sous forme de rapport au moment où l’analyste initie l’opération. Les informations traitées sont généralement appelées « données au repos », car elles ne changent pas et ne se déplacent pas activement pendant l’analyse.

En revanche, le traitement de flux implique l’analyse en temps réel de données en mouvement. Au lieu d’être stockés dans un fichier statique, les flux de données sont traités à la volée au fur et à mesure qu’ils sont générés. En raison de son immédiateté, le traitement de flux génère une image plus rapide et actuelle d’un appareil ou d’un service.

Imaginons par exemple une base de données recevant régulièrement des fichiers de log produits par une matrice de capteurs supervisant la ligne de production et d’autres systèmes dans une usine. Dans un système de traitement par lots, la base de données serait interrogée fréquemment, ce qui générerait des rapports réguliers sur l’état global des capteurs et toute anomalie pouvant indiquer un problème. Pour les analystes des opérations et les administrateurs, ces informations ne peuvent être plus récentes que l’horodatage du rapport en cours d’exécution, lui-même tributaire de la mise à jour la plus récente de la base de données. Si le rapport est exécuté toutes les heures, les données peuvent être anciennes ou obsolètes au moment de leur réception.

Dans un système de traitement de flux, les données sont capturées et traitées en vol, offrant aux professionnels des opérations un aperçu en temps réel de la situation de l’usine. Au lieu d’attendre une heure pour découvrir qu’une machine est défaillante, ils reçoivent cette information instantanément, ce qui leur permet de réagir de manière proactive.

Et comme le traitement de flux ne repose pas sur des données stockées dans une base de données, il peut être mis en œuvre sans exigences de stockage spécifiques. Dans cette solution à faible latence, seules les informations les plus pertinentes du flux de données sont sélectionnées et stockées de manière permanente, tandis que les données sans utilité immédiate sont stockées pour d’éventuels recherches, événements de sécurité ou audits à venir.

Qu’est-ce que le traitement de flux avec état ?

Le traitement de flux avec état implique un type d’informations dans lequel les données passées (comprenant « l’état » des données) peuvent influencer les nouvelles données et les données futures. Lorsqu’une session de navigation Internet est enregistrée, chaque lien ouvert dépend du lien précédent, celui qui a amené l’internaute à la page en cours. Pour analyser en continu l’intégralité du flux de données d’un utilisateur, il faut garder à l’esprit l’état de l’intégralité de sa session, du début à la fin. Une transaction par carte de crédit, par exemple, implique généralement des flux de données avec état, car il faut conserver en mémoire des informations détaillées sur l’achat jusqu’à ce que la transaction soit terminée et que la détection de fraude ait établi la légitimité de la transaction.

Le traitement de flux avec état ajoute une importante couche de complexité, car les informations d’état doivent être gérées simultanément pour des flux multiples ou distribués. Si un processeur de flux est chargé de superviser les utilisateurs d’un site web très fréquenté, le système de traitement des données peut avoir à superviser l’état de milliers de sessions utilisateur à la fois. Cela augmente considérablement les besoins en ressources du système de supervision du réseau et soumet les algorithmes utilisés à des exigences nouvelles et complexes. Par exemple, si une application de traitement de flux avec état subit une interruption de service, il faut prévoir un mécanisme pour assurer la préservation des informations d’état.

Quelle est la différence entre le traitement de flux avec et sans état ?

Si le traitement de flux avec état s’intéresse à l’état global des données (comme on l’a vu dans la section précédente), ce n’est pas le cas du traitement de flux sans état.

Dans un environnement de traitement de flux avec état, les informations sur les événements passés sont mises au service de l’analyse des événements actuels. Par exemple, les relevés de température d’une machine industrielle sont plus utiles s’ils sont pris en compte globalement et dans le temps, permettant de détecter les tendances au fil de leur apparition.

Dans le traitement de flux sans état, les données sont analysées uniquement au fil de leur arrivée, sans tenir compte de leur état ou des informations précédentes. Si vous voulez simplement connaître en temps réel la température ambiante, sans tenir compte de son évolution, un système de traitement de flux sans état fera le travail. Cependant, si vous souhaitez prévoir les températures futures en fonction de l’évolution de la température au fil du temps, vous devrez opter pour un système de traitement des flux avec état.

Le traitement de flux avec état est considérablement plus complexe à coder, à exploiter et à faire évoluer. L’augmentation du nombre de flux gérés et du volume de données qu’ils génèrent a un impact sur la complexité du système de traitement de flux avec état et sur les ressources qu’il consomme. Mais comme le traitement de flux avec état génère des informations beaucoup plus utiles que le traitement de flux sans état, il représente aujourd’hui la forme dominante de traitement de flux dans l’entreprise.

 
Qu’est-ce qu’un cadre de traitement de flux ?

Un cadre de traitement de flux est un système de traitement de bout en bout, mettant en place un pipeline qui reçoit les entrées de flux en vue de leur traitement et génère des analyses utiles en temps réel. Ces cadres sont conçus pour simplifier le développement de logiciels de traitement de flux et de flux d’événements utilisés pour le streaming de données (abordé ci-dessous). Avec un cadre de traitement de flux en place, un développeur peut rapidement inclure des fonctions à partir d’une bibliothèque d’outils existante, ce qui lui évite d’avoir à développer intégralement un système de traitement de flux complet.

Différents frameworks peuvent être utilisés en fonction de l’environnement d’entreprise et du scénario d’utilisation. Plusieurs de ces frameworks, aussi bien commerciaux qu’open source, sont actuellement utilisés dans le monde de l’entreprise. Et si divers frameworks de traitement de flux à usage spécifique ont été développés, les frameworks généralistes tendent à être les plus populaires.

Quels que soient les moteurs de traitement de flux utilisés, la tâche de l’infrastructure de traitement de flux consiste à accepter un pipeline de données en tant qu’entrée, à traiter ces données et à envoyer les résultats à une file d’attente de sortie, généralement appelée collecteur. Le cadre de traitement de flux inclut également son propre modèle de programmation, un système de traitement qui définit l’interaction avec les données et leur segmentation, ainsi que la gestion des états des données, les contrôles de gestion des erreurs et d’autres paramètres.

 

Qu’est-ce qu’un logiciel de traitement de flux ?

Si le cadre de traitement de flux fournit l’épine dorsale de vos analyses, le logiciel (ou l’application) de traitement de flux qui repose dessus est chargé de l’analyse proprement dite. L’utilisation d’un framework de traitement de flux permet de réduire le temps et les efforts nécessaires au développement de diverses applications de streaming.

Parmi les scénarios d’utilisation courants des logiciels de traitement de flux, citons :

  • la collecte de données, notamment l’intégration multicloud et les données métier de flux et de messages ;
  • la livraison à l’échelle de l’entreprise, y compris la distribution des données ainsi que la supervision et la détection des dérives de données ;
  • la détection des anomalies en cours de flux ;
  • l’agrégation sur le flux ;
  • l’enrichissement sur le flux et la détection basée sur des règles ;
  • la conformité des données ;
  • la détection des fraudes financières et le repérage des activités criminelles en temps réel ;
  • la supervision du système, grâce à l’analyse en temps réel et à la maintenance prédictive des serveurs physiques, du réseau, des applications ou des équipements industriels ;
  • l’échange de titres algorithmique à haute vitesse ;
  • le suivi et la gestion de la chaîne logistique ;
  • la détection d’intrusions sur le réseau ;
  • l’analyse de campagnes marketing et publicitaires, le suivi de l’activité des clients en temps réel ;
  • la supervision et la réduction de la circulation des véhicules.
 
Qu’est-ce que le streaming dans le big data ?

Le traitement de flux dans un écosystème big data fonctionne essentiellement de la même manière que dans tout autre environnement, mais il offre des avantages spécifiques. Parmi ceux-ci, mentionnons la capacité du traitement de flux à effectuer des analyses sans avoir à accéder à l’intégralité du magasin de données. Le big data impliquant par définition des bases massives de données non structurées, le traitement par lots d’un important dépôt de big data s’avère bien souvent d’une lenteur pénible. Le traitement de flux offre une solution de contournement pratique, capable de produire des informations en temps réel à partir de données volumineuses, généralement en quelques millisecondes. De plus, comme ces données changent constamment, les processus par lot ne traitent jamais des ensembles exhaustifs de données. Une fois le traitement par lots commencé, les données sous-jacentes continuent de changer, si bien que tout rapport de traitement par lot est nécessairement obsolète une fois terminé. Le traitement de flux offre une solution intelligente à ce problème et permet d’autres traitements d’événements complexes.

Le traitement par lots est toujours utile dans un scénario big data, en particulier lorsqu’on cherche à obtenir des informations détaillées sur une longue période, qui ne peuvent être acquises que par une analyse complète de l’ensemble du magasin de données. Lorsque des analyses plus rapides et plus ponctuelles sont indispensables, le traitement de flux est la meilleure solution.

 
Qu’est-ce que Pulsar ?

Pulsar est un système de messagerie de publication et d’abonnement distribué qui offre une très faible latence de publication et de bout en bout, garantit la livraison des messages, empêche toute perte de données et permet la conservation illimitée des données grâce à un stockage hiérarchisé.

Il a été développé pour la première fois chez Yahoo en 2013 pour servir de plateforme de messagerie à des applications critiques telles que Yahoo Finance, Yahoo Mail et Flickr. Il a été ajouté à la Fondation Apache en 2016 et a rapidement acquis le statut de projet de haut niveau, fort d’une communauté dynamique en expansion.

Les systèmes de messagerie traditionnels tels que Kafka ont adopté l’approche de colocation du traitement et du stockage de données sur le même nœud. Bien que cette conception monolithique offre certains avantages en termes de performances pour la diffusion de données à partir d’un disque local, elle a également un impact négatif sur l’évolutivité et la résilience.

Le modèle de programmation servant de base aux fonctions Pulsar est très simple. Les fonctions Pulsar reçoivent des messages d’une ou plusieurs rubriques d’entrée. Chaque fois qu’un message est publié dans la rubrique, le code de fonction est exécuté. Lors de son déclenchement, le code de fonction applique sa logique de traitement au message entrant et inscrit le résultat dans une rubrique de sortie. La rubrique de sortie d’une fonction Pulsar peut être la rubrique d’entrée d’une autre, ce qui nous permet de créer efficacement un graphique orienté acyclique (DAG) de fonctions Pulsar.

 
Que sont les fonctions de Pulsar ?

Les fonctions Pulsar sont des processus de calcul légers qui consomment les messages d’une ou plusieurs rubriques Pulsar, appliquent une fonction (logique de traitement) fournie par l’utilisateur à chaque message entrant et publient les résultats dans une ou plusieurs rubriques Pulsar.

Le modèle de programmation servant de base aux fonctions Pulsar est très simple. Les fonctions Pulsar reçoivent des messages d’une ou plusieurs rubriques d’entrée. Chaque fois qu’un message est publié dans la rubrique, le code de fonction est exécuté. Lors de son déclenchement, le code de fonction applique sa logique de traitement au message entrant et inscrit le résultat dans une rubrique de sortie. La rubrique de sortie d’une fonction Pulsar peut être la rubrique d’entrée d’une autre, ce qui nous permet de créer efficacement un graphique orienté acyclique (DAG) de fonctions Pulsar.

 

 

Comment prendre un bon départ avec le traitement de flux ?

L’entreprise commence en général par évaluer les différents frameworks de traitement de flux disponibles, en accordant une attention particulière à la façon dont ils s’intègrent dans un environnement spécifique et à leur usage dans divers scénarios. Il existe des cadres open source et commerciaux, ce qui peut être un critère selon le niveau de support requis par votre entreprise.

Au cours de l’évaluation, vous allez sans doute vous poser les questions suivantes :

  • Voulez-vous un cadre de traitement de données qui inclut à la fois des capacités de traitement par lots et en flux ?
  • Le framework prend-il en charge les langages de programmation dans lesquels votre personnel est déjà compétent ?
  • Le cadre global est-il évolutif ? Permet-il une approche en cluster pour s’adapter à la croissance de l’entreprise ?
  • Le traitement de flux avec état est-il pris en charge et dans quelle mesure son implémentation de la gestion d’état est-elle évolutive ?
  • Quelles sont les approches du framework en matière de tolérance aux interruptions de service ? Peut-il rapidement se rétablir après des défaillances ou des interruptions ?
  • Quelle est la complexité de la plateforme de développement ? Sera-t-il difficile pour les développeurs de se former et d’écrire activement du code pour le framework ?
  • Le système est-il agnostique en ce qui concerne les sources de données ? Est-ce que des fournisseurs de services cloud sont pris en charge ?
  • Quels sont les outils de supervision du système et du réseau disponibles ?
  • La plateforme est-elle activement maintenue et développée ? À quelle vitesse les bugs sont-ils corrigés ?
 
Pour résumer : le traitement de flux peut résoudre certains problèmes dans les environnements de données volumineux (ou non)

Il offre aux responsables IT un nouveau moyen passionnant d’analyser les informations sans avoir à interroger directement une base de données ou un dépôt. Ce concept crée des opportunités extraordinaires pour l’analyse des données, notamment l’analyse en temps réel des applications, bien plus performante qu’un regard obsolète sur le passé. Par nature, le traitement de flux s’exécute presque instantanément, ce qui vous permet d’éviter les longs délais associés à l’exécution d’un rapport sur une vaste base de données.

Plus vos flux de données sont volumineux et complexes, plus il est probable que le traitement des flux profite à votre entreprise. Cela dit, toute entreprise ayant besoin d’analyser en temps réel un flux d’informations, qu’il s’agisse de données provenant d’un capteur d’usine, d’un flux de transactions par carte de crédit ou autre, peut certainement tirer parti d’un système de traitement de flux.