Pipeline de traitement des données et des événements

Paul JULIEN, Mewen LE RESTE et Guillaume VERNERET sont trois développeurs stagiaires chez Epitech Innovation Lab de vente-privee. Ce stage est destiné à contribuer à leur cycle universitaire à Epitech Paris. Ils ont travaillé ensemble sur une plate-forme Web destinée à faciliter les tests dans les équipes de vente-privee. »

Le terme big data est de plus en plus utilisé par les entreprises. Nombre d'entre eux souhaitent mettre en place des infrastructures pour créer un environnement efficace. Lorsque vous ne savez pas exactement ce que vous faites, il est très difficile de trouver des technologies qui correspondent vraiment à notre demande. Le monde du Big Data peut souvent sembler très opaque, nous allons essayer de le clarifier dans cet article.

Qu'est-ce que le Big Data?

Le terme Big Data est utilisé depuis 1998, grâce à John Mashey, scientifique en chef chez Silicon Graphics, dans le document «Big Data… et la prochaine vague d’InfraStress». Le big data est associé à trois V: volume, variété et vélocité. Le volume correspond à peu près à la quantité de données, mesurée en gigaoctets en yottaoctets (1⁰²⁴ octets). La vélocité est le moment où les données peuvent être traitées, on parle aujourd'hui de temps réel. Enfin, la variété est la structure, elle peut être non structurée, mais il peut aussi s'agir de données photo, audio ou vidéo. Il existe de nombreux types de données.

Big Data 3V

Pour résumer en quelques chiffres, chaque minute, plus de 31 millions de messages sont envoyés par les utilisateurs de Facebook, et plus de 2 millions de vidéos. Il y a plus de 3 milliards de recherches sur Google chaque jour. En 2020, le volume cumulé de mégadonnées atteindra 44 000 milliards de Go (selon Newgenapps et Domo).

J'ai des tonnes de données, que puis-je faire avec elles?

Les entreprises sont de plus en plus intéressées par la problématique des mégadonnées, car elles ont de réels intérêts économiques. Par exemple, pour un média Web, vous pouvez effectuer certaines analyses sur le flux de clics de votre application, ajouter un ciblage des annonces et effectuer des prévisions sur le nombre moyen d'utilisateurs au cours d'une période. Des thèmes tels que la machine à apprendre ou la science des données sont essentiels aujourd'hui. Voici un schéma d'un pipeline de traitement d'événements simplifié:

Pipeline de traitement des événements

L’objectif est d’optimiser le traitement des données (événements) dans différentes parties:

· Courtier: stockage de données brutes.

· Flux: traitement des données.

· Base de données: stockage de données traitées.

· Visualizer: données visuelles.

L'univers du Big Data répond aux questions que beaucoup de gens se sont déjà posés. Malgré tout, il y a quelques problèmes liés au Big Data. Premièrement, le stockage de vos données doit être optimisé pour réduire les coûts. Ensuite, la confidentialité des données est essentielle, comme on peut le constater, de grandes sociétés comme Facebook ou Google sont aux prises avec des problèmes de confidentialité (voir l’affaire Cambridge Analytica). Le problème que nous allons étudier est lié au choix de la technologie.

Comment choisir les bonnes technologies?

Les technologies du Big Data sont nombreuses, il est parfois difficile de s'y retrouver. Apache est un acteur majeur du big data. Kafka, Hadoop ou Spark font partie de leurs technologies les plus connues. Pour certains, ils excellent dans leur domaine, par exemple Hadoop, qui permet un stockage optimisé avec un algorithme avancé implémenté par Google: MapReduce, ou Kafka, utilisé comme courtier de messages. Il est très puissant lorsque vous souhaitez distribuer beaucoup de données dans différents flux.

Pour le traitement de flux, il existe de nombreuses technologies. Si vous étudiez différents cas d’utilisation existants, il est plus simple de trouver votre chemin. Prenons l’exemple du traitement des flux de données. Il existe aujourd’hui de nombreuses technologies dans ce domaine qui ont toutes des avantages et des inconvénients. Quelques sociétés telles que Google (Cloud DataFlow, devenu Apache Beam) ou Spotify (SCIO) ont mis au point leur propre technologie pour résoudre leur problème. Si nous prenons le cas d'utilisation de Vente-Privee, de nombreuses données sont collectées avec une API qui les pousse dans un Kafka. La problématique était d'agréger les données en temps réel ou avec un historique, avec la même technologie pour être le plus simple possible à mettre en œuvre. Voici le cas d'utilisation simplifié que nous avons présenté.

Cas d'utilisation rapide

Le cas est très simple: nous avons beaucoup de données (certains événements) dans Kafka, nous devons générer des indicateurs de performance clés (KPI) et pousser les données agrégées dans une base de données. Nous devons maintenant trouver les bonnes technologies, d’abord pour mettre en œuvre le traitement du flux. Pour cela, quelques technologies sont à notre disposition:

Ce sont des cadres qui faciliteront l’agrégation des données, la plupart d’entre eux utilisant le langage java.

Nous avons fait une référence rapide pour simplifier notre choix, les exigences étaient simples:

· Documentation: qualité du support.

· Compatibilité: Il est compatible avec les technologies mises en œuvre.

· Mise en route: il est temps d'avoir une preuve de concept.

· Déploiement: exécutable et déployable avec Docker.

· Optimisation: qualité de la technologie lorsque vous allez plus loin.

La méthodologie pour déterminer les critères était simple, nous testions un point. Si ce n’était pas négatif et bloquant, nous passions à la technologie suivante.

Dans ce cas, Beam est le plus approprié. En détail, il inclut de nombreuses technologies Big Data telles que la lecture de Kafka, les entrées / sorties Cassandra et bien d’autres. La façon de gérer les flux de données avec un système de pipelines est très optimisée. Cette façon de courir est également très pratique, vous avez le choix de courir «de première main» ou avec des coureurs spécifiques tels que Spark ou Flink. Ce qui apporte au gros point positif d'Apache Beam, l'évolutivité. Lorsque vous avez une grande quantité de données à traiter, vous devez exécuter plusieurs agrégateurs en même temps. Vous aurez besoin d’une technologie évolutive, telle que Beam, pour éviter les goulots d’étranglement. Il y a quelques points négatifs, mais pas de blocage, comme la sortie des bases de données chronologiques. Dans notre cas, nous utilisons simplement la base de données Scylla (superposition C ++ Cassandra) comme série chronologique, avec son visualiseur de données officiel, Apache Zeppelin. De plus, Apache Beam étant une technologie jeune, il existe un grand manque de communauté et il est très compliqué, si vous n’êtes pas pratique avec le langage Java, de comprendre comment cela fonctionne.

Après avoir choisi un ensemble de technologies, vous devrez les implémenter, les déployer et les tester. Un environnement Big Data grandit très rapidement et il est important de pouvoir le maîtriser. Assurez-vous que toutes les technologies peuvent être testées et déployées (Gitlab CI est très pratique pour cela). De nombreux développeurs travaillent sur le Big Data, mais la communauté est toujours très faible, il est également essentiel de contribuer à cela.

Voici quelques liens pour aller plus loin:

https://www.mongodb.com/big-data-explained

https://data-artisans.com/what-is-stream-processing

https://kafka.apache.org/

https://beam.apache.org/

https://www.scylladb.com/

https://zeppelin.apache.org/

Auteurs: Paul Julien, Guillaume VERNERET, Mewen LE RESTE