Qu'est-ce que Apache Kafka ?

Apache Kafka est une plate-forme de streaming d'événements couramment utilisée pour collecter, traiter et stocker des flux continus de données d'événements ou des données qui n'ont pas précisément de début ni de fin. Kafka permet l'émergence de nouvelles applications distribuées capables d'évoluer pour gérer des milliards d'événements diffusés par minute.

Jusqu'à l'apparition de systèmes de streaming d'événements comme Apache Kafka et Google Cloud Pub/Sub, le traitement des données était le plus souvent géré par des tâches par lot périodiques, où les données brutes sont d'abord stockées, puis traitées à des intervalles arbitraires. Par exemple, une société de télécommunications pourrait attendre la fin de la journée, de la semaine ou du mois pour analyser les millions d'enregistrements d'appels et calculer les frais accumulés.

L'une des limitations du traitement par lot est qu'il ne se fait pas en temps réel. Or, les organisations veulent de plus en plus analyser les données en temps réel afin de pouvoir prendre des décisions commerciales éclairées et réagir dès qu'il se passe quelque chose d'intéressant. Par exemple, la société de télécommunications mentionnée précédemment pourrait avoir intérêt à tenir les clients informés des frais en temps réel afin d'améliorer l'expérience utilisateur globale.

C'est là que le streaming d'événements entre en jeu. Le streaming d'événements est le processus qui consiste à traiter des flux infinis d'événements au fur et à mesure qu'ils sont créés, afin de capturer la valeur temporelle des données et de créer des applications en mode Push qui entrent en action dès qu'il se passe quelque chose d'intéressant. Le streaming d'événements inclut, par exemple, l'analyse en continu des fichiers journaux générés par des applications Web destinées aux clients, la surveillance des comportements des utilisateurs qui visitent des sites Web d'e-commerce afin d'agir en conséquence, l'étude continue des sentiments des clients par l'analyse des changements au niveau des flux de clics générés par les réseaux sociaux, ou encore la collecte et la gestion des données de télémétrie provenant des appareils IoT (Internet des objets).

Découvrez Confluent Cloud, l'offre intégrée et entièrement gérée d'Apache Kafka sur Google Cloud.

Présentation d'Apache Kafka

Kafka collecte les flux de données et enregistre exactement ce qui s'est passé et quand. Cet enregistrement porte le nom de journal de commit immuable. Il est immuable, car on peut y ajouter des données, mais pas le modifier. À partir de là, vous pouvez vous abonner au journal (accéder aux données) ou l'éditer (y ajouter des données) depuis un certain nombre d'applications de streaming en temps réel, ainsi que d'autres systèmes.

Par exemple, vous pouvez utiliser Kafka pour collecter tous les flux de données de transaction de votre site Web afin d'alimenter une application chargée de suivre les ventes de produits en temps réel et de les comparer aux quantités en stock pour permettre un réapprovisionnement en temps voulu.

Quels sont les avantages de Kafka ?

Kafka est Open Source

Cela signifie que le code source est disponible gratuitement pour tous et qu'il peut être extrait, modifié et distribué sous une version propre et à toutes fins. Il n'y a aucuns frais de licence ni autres restrictions. Kafka compte également sur une communauté mondiale de développeurs qui collaborent à son amélioration. Kafka peut ainsi proposer toute une gamme de connecteurs, plug-ins, outils de surveillance et outils de configuration, fruits d'un écosystème en pleine croissance.

Évolutivité et rapidité

Non seulement Kafka s'adapte aux volumes croissants de données, mais il fournit également ces données en temps réel au sein de l'entreprise. Autre point positif important, Kafka est une plate-forme distribuée. En effet, le traitement est réparti sur plusieurs machines, (physiques ou virtuelles), ce qui présente deux avantages : d'une part, Kafka est capable, avec quelques ajustements, d'effectuer un scaling horizontal (pour ajouter des machines si une puissance de traitement supérieure ou un stockage supplémentaire sont nécessaires). Et d'autre part, il est fiable, car la plate-forme fonctionne en permanence, même si des machines tombent en panne. Cette fonctionnalité de Kafka peut toutefois s'avérer difficile à gérer à grande échelle.

Kafka en tant que service géré

Malgré tous les avantages de Kafka, sa technologie est compliquée à déployer. Les clusters Kafka sur site sont difficiles à configurer, mettre à l'échelle et gérer en production. Lors de la mise en place de l'infrastructure sur site pour exécuter Kafka, vous devez provisionner les machines et configurer la plate-forme. Vous devez également concevoir le cluster de machines distribuées de manière à garantir la disponibilité, vous assurer que les données sont stockées et protégées, configurer la surveillance et effectuer correctement le scaling des données pour pouvoir gérer les variations de charge. Vous devez ensuite entretenir l'infrastructure, en remplaçant les machines qui tombent en panne et en appliquant régulièrement des correctifs et mises à jour.

Une autre approche consiste à utiliser Kafka en tant que service géré dans le cloud. Un fournisseur tiers se charge du provisionnement, de la mise en place et de la maintenance de l'infrastructure Kafka. Vous vous chargez simplement de créer et d'exécuter les applications. Le déploiement de Kafka s'en trouve simplifié, car vous n'avez pas à être un expert en gestion de l'infrastructure Kafka. Vous passez moins de temps à gérer l'infrastructure et plus à créer de la valeur pour votre entreprise.

Comment fonctionne Kafka ?

Kafka permet de traiter des événements en streaming à l'aide de cinq fonctions principales :

Publier

Une source de données peut publier ou placer un flux d'événements de données dans un ou plusieurs sujets Kafka, ou dans des regroupements d'événements de données similaires. Par exemple, vous pouvez collecter des flux de données provenant d'un appareil IoT (prenons l'exemple d'un routeur réseau) et les publier dans une application qui effectue une maintenance prédictive pour calculer quand le routeur risque de tomber en panne.

Utiliser

Une application peut s'abonner à/collecter des données d'un ou de plusieurs sujets Kafka et traiter le flux de données résultant. Par exemple, une application peut collecter des données à partir de flux de réseaux sociaux multiples et les analyser pour déterminer la teneur des conversations en ligne sur une marque.

Traiter

L'API Streams de Kafka peut jouer le rôle d'un processeur de flux qui utilise les flux de données entrants d'un ou de plusieurs sujets et produit un flux de données sortant vers un ou plusieurs sujets.

Associer

Vous pouvez établir des connexions producteur ou consommateur réutilisables qui associent des sujets Kafka à des applications existantes. Il existe des centaines de connecteurs déjà disponibles, tels que des connecteurs vers des services clés comme Dataproc, BigQuery et bien d'autres encore.

Stocker

Apache Kafka fournit un stockage durable. Kafka peut jouer le rôle d'une "source fiable", car il est capable de distribuer les données sur des nœuds multiples pour un déploiement de haute disponibilité dans un centre de données unique ou dans plusieurs zones de disponibilité.