Apache Kafka : définition et cas d’usage — introduction
Le streaming d’événements moderne pour des architectures fiables, scalables et temps réel.
Introduction & Objectifs
Apache Kafka est une plateforme distribuée de streaming d’événements : elle reçoit, stocke et redistribue des flux de messages en temps réel entre applications. Dans un environnement où les systèmes doivent traiter des données massives en temps réel, Kafka s’impose comme la plateforme incontournable du streaming d’événements. Initialement développé chez LinkedIn, il est devenu la référence mondiale pour les architectures distribuées, microservices et pipelines temps réel.
Cette formation vous guide pas à pas, de manière progressive et orientée métier, grâce à un fil rouge concret : la digitalisation d’un système de gestion de commandes e-commerce.
Lexique essentiel
Kafka
Plateforme distribuée de streaming d’événements.
Producteur
Envoie des messages vers Kafka.
Consommateur
Lit les messages d’un topic.
Topic
Canal logique de communication.
Partition
Unité de scalabilité d’un topic.
Broker
Serveur Kafka qui stocke les messages.
KRaft
Gestion des métadonnées intégrée à Kafka (protocole Raft). Seul mode disponible depuis Kafka 4.0 : ZooKeeper a été retiré.
Architecture E-commerce avec Kafka
Comment lire le schéma
- À gauche, les services qui produisent des événements : une commande passée, un paiement accepté, un stock mis à jour.
- Au centre, Kafka range chaque type d’événement dans un topic (jaune). Il les conserve sur disque, il ne les supprime pas après lecture.
- À droite, les services qui consomment. Chaque service lit à son rythme. Les pointillés montrent qu’un même service peut lire plusieurs topics.
- Ajouter un nouveau consommateur (par exemple un service de fraude) ne demande aucune modification des producteurs.
Présentation générale de Kafka dans une architecture e-commerce moderne.
Objectifs pédagogiques
- Comprendre les fondamentaux et l’architecture distribuée de Kafka.
- Installer et configurer un cluster Kafka 4.x de 3 nœuds en mode KRaft (sans ZooKeeper).
- Créer, publier et consommer des messages sur un topic Kafka.
- Maîtriser les partitions, la rétention, les offsets & consumer groups.
- Appliquer Kafka à des cas concrets dans l’e-commerce.
Quiz Introductif
- Q1. Kafka est un système de :
- A. Base de données relationnelle
- B. Gestion de conteneurs
- C. Streaming d’événements
- Q2. Les messages Kafka sont publiés dans :
- A. Un topic
- B. Un cluster
- C. Une file d’attente
Exercice : projection métier
Imaginez une application de livraison de repas :
Quels types d’événements transitent dans Kafka ?
Quels services produisent ? Quels services consomment ?
Bonnes pratiques
- Kafka est pensé pour la haute disponibilité → raisonnez toujours en cluster.
- Identifiez clairement vos producteurs et consommateurs dans votre domaine métier.
Sous le capot : pourquoi Kafka tient le volume
| Mécanisme | Ce qu’il fait | Effet |
|---|---|---|
| Journal en ajout seul | Chaque partition est un fichier où l’on écrit toujours à la fin | Écritures séquentielles, très rapides même sur disque classique |
| Page cache de l’OS | Kafka laisse Linux garder les données récentes en mémoire | Les lecteurs « à jour » lisent depuis la RAM, pas le disque |
Zero-copy (sendfile) | Les données passent du cache disque au réseau sans copie par la JVM | Moins de CPU, plus de débit en lecture |
| Lots + compression | Le producteur regroupe les messages et compresse le lot (lz4, zstd) | Moins de requêtes réseau, 3 à 5 fois moins d’octets |
| Partitions | Un topic est découpé en N journaux indépendants | N producteurs et N consommateurs travaillent en parallèle |
Lab : dimensionner un cluster pour le Black Friday
Avant d’installer quoi que ce soit, un architecte chiffre le besoin. Exemple réel pour une boutique moyenne :
| Donnée | Valeur | Calcul |
|---|---|---|
| Commandes un jour normal | 20 000 | — |
| Pic du Black Friday | × 10 sur 2 heures | 200 000 commandes en 2 h |
| Événements par commande | 8 (création, paiement, stock, expédition…) | 1,6 million d’événements en 2 h |
| Débit de pointe | ≈ 220 messages/s en moyenne, prévoir × 5 pour les rafales | ≈ 1 100 messages/s |
| Taille moyenne d’un message | 1 Ko (JSON) | ≈ 1,1 Mo/s en écriture |
| Stockage pour 7 jours | 1,6 M × 1 Ko × 7 j × 3 répliques (hypothèse prudente : chaque jour au niveau du pic) | ≈ 34 Go (+ 30 % de marge) |
Conclusion : ce volume est modeste pour Kafka. Une VM de lab tient déjà plusieurs dizaines de milliers de messages par seconde. Le vrai sujet n’est pas le débit, c’est la fiabilité : ne perdre aucune commande, et rejouer proprement en cas d’erreur. C’est le fil rouge des labs de cette formation.
Astuce d’expert : dimensionner pour la panne, pas pour la moyenne
- Dimensionnez avec un broker en moins (N-1) : pendant une maintenance ou une panne, les 2 survivants doivent absorber tout le trafic et la re-réplication.
- Gardez les disques sous 60-70 % d’occupation : un disque plein arrête le broker, et la rétention ne libère l’espace qu’au niveau des segments fermés.
- Le nombre de partitions fixe le parallélisme maximal des consommateurs : prévoyez-le pour le pic (ex. 12 partitions), car l’augmenter plus tard casse l’ordre par clé.
À faire
- Refaites le calcul avec vos propres chiffres (ou ceux de votre client).
- Après le Chapitre 1, vérifiez que le cluster tourne (
kafka-lab.sh status), puis mesurez la capacité réelle de votre VM aveckafka-producer-perf-test.sh(Chapitre 3) et comparez avec votre besoin.
Résumé
Kafka permet de construire des systèmes fiables, scalables et capables de traiter de grands flux de données en temps réel. Cette formation vous accompagnera étape par étape avec une approche claire, illustrée et orientée métier.
Suivez votre progression. Créez un compte gratuit pour cocher vos leçons et reprendre là où vous en étiez.
Créer un compte gratuit