Par Maxime Jumelle
CTO & Co-Founder
Publié le 15 avr. 2022
Catégorie Data Engineering
Confluent Platform est une plateforme de données spécialisée dans l'ingestion, la distribution et le traitement de données en temps réel. Basé sur la plateforme Apache Kafka et développée par les mêmes créateurs que cette dernière, elle est devenue incontournable pour beaucoup d'équipes et de Data Engineer, car elle vient compléter Apache Kafka avec de nombreuses fonctionnalités. Confluent Platform est aujourd'hui un incontournable pour les entreprises qui souhaitent déployer et exécuter des plateformes Data en temps réel dans des environnements de production.
Dans cet article, nous allons étudier les principales différences entre Apache Kafka et Confluent Platform, et décrire quels sont les améliorations de cette dernière.
Apache Kafka est une plateforme open source d'agents de messages (brokers) en temps réel. Cette plateforme permet à la fois de diffuser des données à grande échelle (event streaming) et d'effectuer des traitements sur ces données en temps réel (stream processing). Depuis plusieurs années, Kafka s'impose comme la référence pour diffuser et traiter des centaines de Go de données à grande échelle, tout en assurant une haute disponibilité de services.
Un sujet essentiel sous Kafka est la notion de topic. Un topic est une catégorie où des messages (appelés records ou enregistrements) sont produits, similaire à une messagerie où chaque mail arriverait par ordre d'envoi. Chaque message contient une donnée envoyée sur Kafka, et peut être vu comme une unité atomique par rapport à un contexte, comme
Les applications qui vont agir sur les topics sont les producers (produceurs) et les consumers (consommateurs), codés principalement en Java ou en Python. Cette représentation se base sur le modèle publish-subscribe : des applications vont envoyer des données sur des topics (publish), et d'autres vont consommer ces données depuis des topics (subscribe), sans avoir de couplage direct de part et d'autre.
Initialement, Apache Kafka avait été développé par LinkedIn qui avait des besoins spécifiques en terme d'agent de messages hautement scalable. L'équipe ayant développé Kafka a ouvert le code source en 2011, repris ensuite en 2012 par la fondation Apache.
À lire aussi : découvrez notre formation Data Engineer
De plus en plus d'entreprises utilisent Kafka, et connectent différents services avec. Les auteurs de Kafka ont alors crée, en 2014, Confluent, qui propose des services autour de Kafka, et notamment Confluent Platform, qui est une plateforme de streaming dont Kafka est le composant principal. Mais le gros atout de cette plateforme est qu'elle dispose également de nombreuses fonctionnalités supplémentaires qui viennent apporter une bien meilleure utilisation de Kafka dans les systèmes en production.
Confluent dispose d'une version gratuite (Community) et d'une version commerciale. La version gratuite dispose uniquement des fonctionnalités essentielles (fichiers binaires Apache Kafka et outils de développement et connectivité) et ne permet d'exécuter qu'une seule instance Confluent. Si l'on souhaite avoir à disposition plus de fonctionnalités ou exécuter Confluent dans un cluster (recommandé pour la production), alors on préférera utiliser la version commerciale.
Voyons quelles sont les fonctionnalités essentielles de Confluent, accessibles sous toutes les versions.
Sous Kafka, les connecteurs permettent d'effectuer des migrations entre des bases de données/systèmes de stockage de fichiers et Kafka. Cela est donc particulièrement utile lorsque l'on souhaite faire des migrations de données sans mobiliser des ressource supplémentaires en créant un consumer. Nous retrouvons principalement deux types de connecteurs.
Le principale avantage des connecteur est d'éviter de développer soi-même un consumer qui irait transférer des données entre un système de stockage et Kafka. Ici, le connecteur va gérer toute cette complexité à notre place.
Pour cela, Confluent propose une panoplie de connecteurs déjà développés et prêts à l'emploi, mis à disposition sur Confluent Hub, une plateforme qui recense tous les connecteurs (officiels ou ceux développés par la communauté).
En utilisant Kafka, on remarque rapidement qu'il n'y a aucune nomenclature sur la façon dont les messages sont envoyés et inscrits dans les topics. Pire, il pourrait y avoir plusieurs typologies de messages arrivant sur un même topic. Comment pouvons-nous faire en sorte que les messages sur les topics respectent certaines formes ?
Le registre de schémas (SchemaRegistry) est une application qui permet d'homogénéiser la communication de messages entre les producers/consumers et Kafka dans le but de structurer les messages entrants et sortants sur les topics. Confluent va justement embarquer un registre de schéma, permettant d'ajouter une certaine homogénéité aux topics.
Les formats de données évoluent constamment, surtout dans les infrastructures Big Data. Les schémas permettent de garder une cohérence sur la structure des données tout au long de l'utilisation du broker. Non seulement le format des données va évoluer, mais également la manière dont elles sont produites et qui va les utiliser.
Le registre de schéma défini un environnement de plusieurs versions de schémas comme étant un sujet. Dans un sujet, on retrouve alors plusieurs versions de schémas qui permet donc d'identifier le même topic par exemple, mais avec des versions de schémas différentes. Le nom d'un sujet va dépendre d'une stratégie qui défini la manière dont Kafka doit appréhender ces différents schémas.
mytopic
, alors le sujet devra commencer par mytopic-...
.Pour résumer, la stratégie TopicNameStrategy
est utilisée lorsque tous les messages d'un topic possèdent la même structure. Dans le cas échéant, on s'orientera vers l'une des deux stratégies restantes, lorsque par exemple il y a plusieurs schémas possibles dans un seul topic ou qu'un schéma se retrouve dans des messages sur plusieurs topics.
À lire aussi : découvrez notre formation Data Engineer
Si l'on regarde de plus près la stratégie par défaut, nous devons adopter une certaine convention sur le nommage des sujets.
<topic>-value
, alors les messages du topic topic
pourront être sérialisés et désérialisés par le schéma correspondant.<topic>-key
, le principe s'opère mais pour les clés des messages.Comment fonctionne un schéma ? En réalité, la définition d'un schéma est assez simple : il s'agit d'un format JSON dans lequel nous allons définir les différents champs avec leurs types associés, leur valeur par défaut et d'autres informations.
C'est au moment de la sérialisation (transformation au format binaire) ou de la désérialisation que le schéma est utilisé pour vérifier que les données respectent la structure imposée.
Nous avons alors besoin d'utiliser un système de sérialisation de données comme Apache Avro.
Avro est un système de sérialisation de données, au même titre que Protobuf ou Thrift. Sous un format binaire, Avro permet de stocker les données ainsi que leurs schémas au même endroit : il s'intègre donc facilement sous la plupart des langages.
Pour définir un schéma, Avro utilise le format JSON pour ensuite sérialiser au format binaire. Nous retrouvons la plupart des types élémentaires (null, int, float, string, ...) mais également des types plus complexes (record, enum, array, ...).
Prenons le schéma suivant :
{ "type": "record", "name": "schema", "namespace": "org.blent.data_engineer.schema", "fields": [ { "name": "fname", "type": "string" }, { "name": "lname", "type": "string" }, { "name": "age", "type": ["int", "null"] } ] }
En regardant le champ fields
, il y a trois champs enregistrés par le schéma.
fname
, de type string.lname
, de type string.name
, de type int mais qui peut être manquant.Tout message qui se conforme aux exigences précédentes pourra être envoyé sur le topic Kafka associé avec ce schéma. Dans le cas échéant, ce dernier sera refusé.
Si l'on souhaite sérialiser au format binaire tout en s'assurant que la structure des données respecte un schéma, il nous faut utiliser un producer qui supporte Avro. Il y a alors deux cas de figures.
Sous une configuration classique, l'utilisation d'un schéma avec une sérialisation Avro s'effectue en plusieurs étapes.
Cette structure permet de faire en sorte que les producers enregistrent eux-mêmes les schémas (bien qu'ils peuvent également les récupérer directement depuis le registre) si besoin, puisqu'ils sont les créateurs de ces données.
De manière générale, nous pouvons mettre en place deux actions en tant que consumer sur ce topic : faire de la migration de données (transfert vers BigQuery, S3, PostgreSQL, etc) et de l'analyse de données. Cette dernière action est intéressante car elle permettrait de connaître sur des fenêtres temporelles de plusieurs secondes/minutes la situation en temps réel des trajets. Avec une source de données comme Kafka, nous avons plusieurs possibilités.
À lire aussi : découvrez notre formation Data Engineer
Cette dernière possibilité est la plus simple à mettre en place dans notre situation, car d'une part ksqlDB est déjà installé avec Confluent, mais d'autre part car l'utilisation de tables SQL est beaucoup plus facile à utiliser.
De manière générale, Confluent Platform peut être un bon choix dès lors qu'Apache Kafka pourrait être utilisée, c'est-à-dire dans les situations où il faut gérer et/ou traiter des données en temps réel. Cependant, pour certains cas, il serait préférable d'utiliser la version commerciale de Confluent Platform.
En bref, utiliser Confluent se révèle très pratique pour satisfaire un niveau d'exigence et de disponibilité d'application élevée, tout en bénéficiant d'un large éventail d'outils et de fonctionnalités très pratiques.
Vous souhaitez vous former au Data Engineering ?
Articles similaires
7 févr. 2024
Pendant de nombreuses années, le rôle des Data Engineers était de récupérer des données issues de différentes sources, systèmes de stockage et applications tierces et de les centraliser dans un Data Warehouse, dans le but de pouvoir obtenir une vision complète et organisée des données disponibles.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
4 déc. 2023
Pour de nombreuses entreprises, la mise en place et la maintenant de pipelines de données est une étape cruciale pour avoir à disposition d'une vue d'ensemble nette de toutes les données à disposition. Un des challenges quotidien pour les Data Analysts et Data Engineers consiste à s'assurer que ces pipelines de données puissent répondre aux besoins de toutes les équipes d'une entreprise.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
14 nov. 2023
Pour améliorer les opérations commerciales et maintenir la compétitivité, il est essentiel de gérer efficacement les données en entreprise. Cependant, la diversité des sources de données, leur complexité croissante et la façon dont elles sont stockées peuvent rapidement devenir un problème important.
Maxime Jumelle
CTO & Co-Founder
Lire l'article
60 rue François 1er
75008 Paris
Blent est une plateforme 100% en ligne pour se former aux métiers Tech & Data.
Organisme de formation n°11755985075.
Data Engineering
IA Générative
MLOps
Cloud & DevOps
À propos
Gestion des cookies
© 2025 Blent.ai | Tous droits réservés