Qu’est-ce qu’Apache Kafka ?

Jeune étudiante et femme adulte travaillant sur le même bureau

Auteurs

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Qu’est-ce qu’Apache Kafka ?

Apache Kafka est une plateforme de transmission d’événements en continu open source et distribuée, qui traite les données en temps réel. Kafka excelle dans la prise en charge des applications axées sur les événements et la création de pipelines de données fiables, offrant une faible latence et une distribution des données à haut débit.

Aujourd’hui, des milliards de sources de données produisent en permanence des flux d’informations, souvent sous la forme d’événements, des structures de données fondamentales qui enregistrent toute occurrence dans le système ou l’environnement. 

En règle générale, un événement est une action qui génère une autre action dans le cadre d’un processus. Parmi les exemples d’événements, citons celui d’un client qui passe une commande, qui choisit son siège à bord d’un avion ou qui soumet un formulaire d’inscription. Tout événement n’implique pas nécessairement une personne. Par exemple, un thermostat connecté indiquant la température à un moment donné constitue également un événement.

La transmission d’événements en continu permet aux applications de réagir instantanément aux nouvelles informations. Les plateformes de données en continu comme Apache Kafka permettent aux développeurs de créer des systèmes qui consomment, traitent et exploitent les données au fur et à mesure qu’elles arrivent, tout en garantissant l’ordre et la fiabilité de chaque événement.

Kafka a évolué pour devenir la plateforme de transmission d’événements en continu la plus utilisée, capable d’ingérer et de traiter des milliers de milliards d’enregistrements par jour, et ce sans aucun retard de performance perceptible, afin de prendre en charge les volumes évolutifs. Plus de 80 % des entreprises Fortune 500 utilisent Kafka, notamment Target, Microsoft, AirBnB et Netflix, pour offrir en temps réel une expérience client axée sur les données.

L’origine d’Apache Kafka

En 2011, pour répondre à son besoin croissant, LinkedIn a développé Apache Kafka, un système à haut débit et à faible latence capable de traiter d’immenses volumes de données d’événements en temps réel. Développée avec Java et Scala, la plateforme Kafka a ensuite été proposée en open source et donnée à l’Apache Software Foundation.

Alors que les entreprises prenaient déjà en charge ou utilisaient les systèmes de file d’attente de messages traditionnels (par exemple, Amazon SQS d’AWS), Kafka venait proposer une architecture de système de messagerie fondamentalement différente.

Contrairement aux files d’attente de messages classiques, qui suppriment les messages après consommation, Kafka conserve les messages pendant une durée configurable, permettant à plusieurs consommateurs de lire les mêmes données indépendamment. Grâce à cette fonctionnalité, la solution Kafka répond parfaitement aux besoins de messagerie et de sourcing d’événements, de traitement des flux et de création de pipelines de données en temps réel.

Aujourd’hui, Kafka est le standard en matière de transmission d’événements en continu. Les secteurs qui utilisent Kafka sont notamment la finance, l’e-commerce, les télécommunications et le transport, qui requièrent un traitement rapide et fiable de leurs grands volumes de données.

Comment fonctionne Apache Kafka

Kafka est une plateforme distribuée, qui fonctionne comme un cluster tolérant aux pannes et hautement disponible, capable de couvrir plusieurs serveurs, voire plusieurs centres de données.

Kafka possède trois capacités principales :

  1. Elle permet aux applications de publier des flux de données ou d’événements, ou encore de s’y abonner.
  2. Elle enregistre les données dans l’ordre, alliant précision, tolérance aux pannes et stockage durable.
  3. Elle traite les enregistrements en temps réel, au fur et à mesure qu'ils se produisent.

Les producteurs (applications ou rubriques) écrivent les enregistrements dans des rubriques nommées journaux, qui les stockent dans l’ordre dans lequel ils se sont produits les uns par rapport aux autres. Les rubriques sont ensuite divisées en partitions et distribuées sur un cluster de courtiers Kafka (serveurs).

Dans chaque partition, Kafka conserve l’ordre des enregistrements et les stocke durablement sur disque (période de conservation configurable). Si l’ordre est garanti au sein de chaque partition, il ne l’est pas d’une partition à l’autre. Selon les besoins de l’application, les consommateurs peuvent lire ces partitions indépendamment, en temps réel, ou à partir d’un décalage donné.

Kafka garantit la fiabilité grâce à la réplication des partitions. Chaque partition possède un leader (sur un courtier), et un ou plusieurs suiveurs (répliques) sur d’autres courtiers. Cette réplication permet de tolérer la défaillance des nœuds sans perte de données.

Kafka s’appuyait traditionnellement sur Apache ZooKeeper, un service de coordination centralisé pour les courtiers distribués. ZooKeeper veillait à ce que les courtiers Kafka restent synchronisés, même si certains venaient à échouer. En 2011, Kafka a lancé le mode Kraft (Kafka Raft Protocol), qui consolidait ces tâches dans les courtiers Kafka pour rendre ZooKeeper caduque. Ce changement réduit les dépendances externes, simplifie l’architecture et rend les clusters Kafka plus tolérants aux pannes, plus faciles à gérer et à faire évoluer.

Vue aérienne d’autoroutes

Gardez la tête dans le cloud 


Recevez la newsletter hebdomadaire Think pour obtenir des conseils d’experts sur l’optimisation des paramètres multicloud à l’ère de l’IA.

API Apache Kafka

Les développeurs peuvent tirer parti des fonctionnalités Kafka grâce à quatre principales interfaces de programmation d’applications (API) :

  1. API Producer
  2. API client
  3. API Streams
  4. API Connector
API Producer

L’API Producer permet aux applications de publier des flux dans les rubriques Kafka. Une fois écrit dans une rubrique, l’enregistrement ne peut être ni modifié ni supprimé. Il y reste pendant une durée préconfigurée, à savoir pendant deux jours, ou jusqu’à ce que l’espace de stockage soit épuisé.

API client

L’API Consumer permet aux applications de s’abonner à une ou à plusieurs rubriques pour ingérer et traiter le flux qui y est stocké. Il peut s’agir des enregistrements de la rubrique en temps réel, ou d’enregistrements antérieurs que l’API se charge d’ingérer et de traiter.

API Streams

S’appuyant sur les API Producer et Consumer, cette API propose des capacités de traitement complexes, qui permettent aux applications d’assurer un traitement continu, en amont et en aval. Plus précisément, dans le cas de l’API Streams, il s’agit de consommer des enregistrements provenant d’une ou plusieurs rubriques, de les analyser, les agréger ou les transformer selon les besoins, et de publier les flux ainsi obtenus sur dans les mêmes rubriques ou dans d’autres rubriques.

Alors que les API Producer et Consumer sont utilisées pour un traitement simple des flux, l’API Streams permet de développer des applications plus avancées de transmission de données et d’événements en continu.

API Connector

Cette API permet aux développeurs de créer des connecteurs, qui sont des producteurs ou des consommateurs réutilisables, conçus pour simplifier et automatiser l’intégration des sources de données dans les clusters Kafka.

Cas d’utilisation d’Apache Kafka

Les développeurs utilisent Kafka principalement pour créer deux types d’applications :

  • Pipelines de données en streaming en temps réel
  • Applications de diffusion en temps réel

Pipelines de données en streaming en temps réel

Applications conçues pour déplacer des millions de données ou d’enregistrements d’événements entre les systèmes d’entreprise, à l’échelle et en temps réel. Les applications doivent les déplacer de manière fiable, sans aucun risque (corruption, duplication des données out tout autre problème susceptible de survenir lors du déplacement de tels volumes de données à grande vitesse).

Par exemple, les institutions financières utilisent Kafka pour diffuser des milliers de transactions par seconde vers les passerelles de paiement, les services de détection des fraudes et les systèmes comptables, garantissant un flux de données précis et en temps réel, sans duplication ni perte.

Applications de diffusion en temps réel

Applications qui sont pilotées par les flux d’enregistrements ou d’événements, et qui génèrent leurs propres flux. Dans le monde numérique, nous rencontrons ces applications tous les jours.

Parmi les exemples, citons les sites de commerce électronique qui modifient la disponibilité des produits en temps réel, ou encore les plateformes qui proposent des contenus et des publicités personnalisés en fonction de l’activité des utilisateurs. Kafka pilote ces expériences en diffusant les interactions des utilisateurs directement dans les moteurs d’analyse et de recommandation.

Autres cas d’utilisation d’Apache Kafka

  • Microservices : Kafka facilite la communication entre les microservices en permettant une messagerie asynchrone, pilotée par les événements. Cette fonctionnalité, qui permet aux services de déclencher des actions sur d’autres services sans être étroitement couplés, prend en charge les architectures système évolutives et découplées.
  • Environnements cloud natifs conteneurisés : Kafka s’intègre parfaitement aux plateformes cloud natives à l’aide de Docker pour la conteneurisation, et de Kubernetes pour l’orchestration des conteneurs. Cette configuration permet une communication évolutive, tolérante aux pannes et pilotée par les événements, tout en réduisant le besoin de gérer manuellement l’infrastructure. Kafka peut automatiquement évoluer et récupérer en cas de défaillance au sein de Kubernetes, ce qui en fait une solution parfaitement adaptée aux environnements de cloud computing dynamiques, qui exécutent diverses workloads d’applications.
  • Data lakes et entreposage de données : Kafka agit comme un pipeline de données en temps réel entre les sources de données et les plateformes de stockage telles que les data lakes et les entrepôts de données. Cette fonctionnalité permet de diffuser de gros volumes de données pour assurer une ingestion et une analyse rapides, essentielles aux workflows modernes d’analyse et de Business Intelligence.
  • Traitement des données IdO (Internet des objets) : Kafka permet de traiter les flux de données continus provenant des appareils IdO, permettant un routage en temps réel des données à haut débit et à faible latence vers des destinations telles que les bases de données, les moteurs d’analyse et les outils de surveillance. Cette fonctionnalité répond aux besoins des applications sensibles au facteur temps, dans des secteurs tels que la fabrication et la santé.
webMethods Hybrid Integration

Repenser l’intégration pour l’ère de l’IA

IBM webMethods Hybrid Integration montre comment les entreprises peuvent connecter de façon fluide les applications cloud et sur site, permettant une transformation numérique agile et évolutive. 

L’écosystème Apache Kafka

Kafka s’intègre à plusieurs autres technologies, dont beaucoup font partie de l’Apache Software Foundation (ASF). Les entreprises allient généralement ces technologies aux grandes architectures axées sur le événements, au traitement des flux ou encore aux solutions d’analyse des big data.

Certaines de ces technologies sont open source, tandis que Confluent, une plateforme construite autour de Kafka, propose des fonctionnalités professionnelles et des services gérés pour assurer le traitement de données en temps réel et à l’échelle. Des entreprises comme IBM et Amazon Web Services proposent des solutions basées sur Kafka (par exemple, IBM Event Streams, Amazon Kinesis), qui s’y intègrent pour offrir une transmission d’événements en continu évolutive.

L’écosystème Apache Kafka comprend les éléments suivants :

  • Apache Spark
  • Apache NiFi
  • Apache Flink
  • Apache Hadoop
  • Apache Camel
  • Apache Cassandra

Apache Spark

Apache Spark est un moteur d’analyse conçu pour le traitement de données à grande échelle. Vous pouvez utiliser Spark pour analyser les flux fournis par Apache Kafka et produire des applications de traitement des flux en temps réel, telles que l’analyse des flux de clics.

Apache NiFi

Apache NiFi est un système de gestion des flux de données doté d’une interface visuelle de type glisser-déposer. Exécutable en tant que producteur et consommateur Kafka, cet outil idéal est parfaitement capable de relever les défis liés aux flux de données que Kafka ne peut pas résoudre.

Apache Flink

Alliant vitesse constante et faible latence, Apache Flink est un moteur qui permet de réaliser des calculs à grande échelle sur les flux d’événements. Flink peut ingérer des flux en tant que consommateur Kafka pour effectuer des opérations en temps réel et publier les résultats pour Kafka ou une autre application.

Apache Hadoop

Apache Hadoop est un cadre logiciel distribué qui permet de stocker d’immenses quantités de données dans un cluster d’ordinateurs à des fins diverses : analyse des big data, machine learning, exploration de données et d’autres applications qui traitent des données structurées et non structurées. On utilise souvent Kafka pour créer des pipelines de données en continu vers des clusters Hadoop.

Apache Camel

Apache Camel est un cadre d’intégration doté d’un moteur de routage et de médiation basé sur des règles. Il prend en charge Kafka en tant que composant, ce qui permet d’intégrer facilement les données à d’autres systèmes (par exemple, bases de données et files d’attente de messagerie), et d’inclure Kafka dans des architectures axées sur les événements de taille plus importante.

Apache Cassandra

Apache Cassandra est une base de données NoSQL hautement évolutive, conçue pour gérer de grandes quantités de données sur de nombreux serveurs standard, sans point de défaillance unique.

La plateforme Kafka est couramment utilisée pour diffuser des données vers Cassandra afin d’assurer une ingestion des données en temps réel et de créer des applications évolutives, tolérantes aux pannes.

Kafka et RabbitMQ

RabbitMQ est un courtier de messages open source très utilisé, qui permet aux applications, aux systèmes et aux services de communiquer en traduisant les protocoles de messagerie. Sachant que Kafka a débuté comme courtier de messages (et peut toujours être utilisé comme tel) et que RabbitMQ prend en charge un modèle de messagerie de type publication/abonnement (entre autres), les deux sont souvent considérés comme des alternatives. Cependant, leur rôle est différent, au même titre que leurs cas d’utilisation.Par exemple, les rubriques Kafka peuvent avoir plusieurs abonnés, alors que chaque message RabbitMQ ne peut en avoir qu’un seul. Par ailleurs, les rubriques Kafka sont durables, tandis que les messages RabbitMQ sont supprimés une fois consommés.

Pour faire votre choix, il convient de prendre en compte les besoins spécifiques de votre application tels que le débit, la durabilité des messages et la latence. Kafka permet d’assurer une transmission d’événements en continu à grande échelle, tandis que RabbitMQ excelle dans les scénarios nécessitant un routage flexible des messages et un traitement à faible latence.

Apache Kafka et IA open source

L’intégration d’Apache Kafka et de l’IA open source transforme la façon dont les entreprises gèrent les données en temps réel et l’intelligence artificielle. Associée à des outils d’IA open source, la plateforme Kafka permet d’appliquer les modèles d’IA pré-entraînés aux données en direct, pour favoriser prise de décision en temps réel et automatisation.

L’open source rend l’intelligence artificielle plus accessible, et Kafka fournit l’infrastructure nécessaire pour traiter les données en temps réel. Cette configuration rend le traitement par lots non nécessaire et permet aux entreprises d’exploiter les données immédiatement, au fur et à mesure de leur production.

Par exemple, une entreprise d’e-commerce peut utiliser Kafka pour diffuser les interactions clients telles que les clics ou les vues enregistrés par les produits, au fur et à mesure qu’elles se produisent. Les modèles d’IA pré-entraînés traitent ensuite ces données en temps réel, afin de fournir des recommandations personnalisées ou des offres ciblées. Kafka gère le flux de données, tandis que les modèles d’IA s'adaptent en fonction des données entrantes pour améliorer l’engagement client.

Associant traitement des données en temps réel et modèles d’IA, les entreprises peuvent prendre des décisions plus rapides en matière de détection des fraudes, de maintenance prédictive ou de tarification dynamique, et garantir des systèmes plus réactifs et plus efficaces.

Avantages d’Apache Kafka

  • Traitement de données en temps réel : Kafka favorise les pipelines de données en temps réel et les applications de diffusion. Il permet aux systèmes de publier les flux d’enregistrements, de s’y abonner et de les traiter au fur et à mesure qu’ils se produisent, avec des cas d’utilisation tels que la surveillance, les alertes et l’analytique.
  • Haute performance et évolutivité : les rubriques Kafka sont partitionnées et répliquées pour évoluer et servir simultanément un nombre important de consommateurs, et ce sans baisse de performance.
  •  Sécurité et conformité : Apache Kafka prend en charge le chiffrement des données en transit et au repos, ainsi que les contrôles d'accès configurables. Ces fonctionnalités permettent aux entreprises de protéger les données sensibles et de se conformer aux exigences de conformité sectorielles.
  • Haute disponibilité : Kafka garantit une haute disponibilité grâce à la réplication des données sur plusieurs courtiers. Les messages restent disponibles même en cas de défaillance d’un nœud, et le système continue de fonctionner sans perte de données ni temps d’arrêt.
  •  Gestion simplifiée : Kafka propose des outils de surveillance, de configuration et d’automatisation pour réduire la charge opérationnelle. La solution s’intègre parfaitement aux plateformes d’orchestration et de gestion pour faciliter le déploiement et la mise à l’échelle. Kafka affiche également des indicateurs de performance et d’état détaillés grâce à JMX (Java Management Extensions). Les équipes peuvent ainsi suivre le débit, la latence, l’état des courtiers et le décalage des consommateurs, qui sont essentiels pour assurer une surveillance et une planification des capacités efficaces.
  • Intégration étendue : grâce à un large éventail de connecteurs et d’API client, Kafka s’intègre facilement aux bases de données, aux systèmes de fichiers et aux services cloud. Par exemple, Kafka Connect facilite le transfert des données entre les systèmes, tandis que Kafka Streams permet un traitement des flux en temps réel, améliorant davantage les capacités d’intégration.
Solutions connexes
IBM Event Streams

IBM® Event Streams est un logiciel de transmission d’événements en continu basé sur la plateforme open source Apache Kafka. Il est disponible en tant que service entièrement géré sur IBM® Cloud ou en auto-hébergement.

Découvrir Event Streams
Logiciels et solutions d’intégration

Libérez le potentiel de votre entreprise avec les solutions d’intégration IBM qui connectent les applications et les systèmes pour fournir un accès rapide et sécurisé aux données critiques.

Découvrir les solutions d’intégration
Services de conseil en cloud

Déverrouillez de nouvelles capacités et stimulez l’agilité métier grâce aux services de conseils cloud d’IBM.

Découvrir les services de conseil cloud
Passez à l’étape suivante

IBM® Event Streams est un logiciel de transmission d’événements en continu basé sur la plateforme open source Apache Kafka. Il est disponible en tant que service entièrement géré sur IBM® Cloud ou en auto-hébergement.

Découvrir Event Streams Obtenir plus d'informations