Streaming des données (architecture de streaming des données)
Une architecture de streaming des données ou de données en flux tendu (en anglais, streaming data architecture) est une infrastructure des technologies de l'information qui met l'accent sur le traitement des données en mouvement et considère le traitement par lots de type extraction, transformation et chargement (ETL, Extract, Transform, Load) comme une simple opération dans un flux continu d'événements.
Ce type d'architecture comporte trois composants de base : un agrégateur qui rassemble des flux d'événements et des fichiers par lots provenant de diverses sources de données, un courtier qui met les données à disposition et un moteur analytique qui analyse les données, corrèle les valeurs et fusionne les différents flux.
Le système qui reçoit et envoie les flux de données, et exécute l'application et la logique analytique en temps réel s'appelle le processeur de flux. Comme une architecture de streaming des données reconnaît le concept de sourçage des événements, les développeurs ont moins besoin de créer et tenir à jour des bases de données partagées.
A la place, toutes les modifications de l'état d'une application sont stockées sous la forme d'une suite de déclencheurs événementiels (ESP, Event-Driven Processing) qui peuvent être reconstitués ou interrogés en cas de nécessité. A la réception d'un événement, le processeur de flux réagit en temps réel ou quasi réel et déclenche une action, telle que la mémorisation de l'événement pour référence ultérieure.
Le succès croissant des architectures de streaming des données dénote une évolution dans le développement de produits et services, d'une architecture monolithique à une structure décentralisée formée de microservices. Les architectures de ce type sont généralement plus souples et évolutives qu'une architecture classique d'applications centrées sur les bases de données, car elles font cohabiter le traitement et le stockage des données afin de diminuer les temps de réponse (la latence) des applications et d'améliorer le débit. De plus, une architecture de streaming des données présente l'avantage de prendre en compte l'heure à laquelle se produit un événement, ce qui facilite le partitionnement et la répartition sur plusieurs instances de l'état et du traitement d'une application.
Les architectures de streaming des données permettent aux développeurs d'élaborer des applications mettant en oeuvre de nouvelles utilisations des données liées et non liées.
Par exemple, l'équipe chargée de l'infrastructure de recherche d'Alibaba utilise une architecture de streaming de données reposant sur Apache Flink pour mettre à jour en temps réel les informations sur les produits et les stocks.
Netflix a également recours à Flink pour gérer ses moteurs de recommandation, tandis qu'ING, la banque en ligne basée aux Pays-Bas, utilise l'architecture pour empêcher les usurpations d'identité et renforcer la protection antifraude. Parmi les autres plateformes capables de prendre en charge le traitement en flux et par lots figurent Apache Spark, Apache Storm, Google Cloud Dataflow et AWS Kinesis.