Projet final : Pipeline e-commerce complet avec Kafka
Construisez une architecture événementielle complète : commandes, stock, facturation, notifications et archivage. Un pipeline 100% Kafka, scalable et observable.
Contexte
Ce chapitre final consolide tous les concepts étudiés : production, consommation, rebalance, rétention, Streams, Connect, monitoring, sécurité. Vous allez construire un pipeline événementiel e-commerce complet, proche d’une architecture microservices réelle.
L’objectif : démontrer la puissance de Kafka dans un flux métiers cohérent : une commande passe par plusieurs étapes automatisées jusqu’à son archivage.
Le pipeline couvre :
- 📦 Commande client
- 📉 Vérification du stock
- 🧾 Création de facture
- 📤 Archivage en base via Kafka Connect
- 📨 Notification client
Lexique
Suite d’étapes automatisées orchestrées par des topics Kafka.
Microservice réagissant aux événements d’un topic.
Capacité à traiter un événement plusieurs fois sans doublon.
Technique d’émission fiable des événements à partir d’une base métier.
Diagramme du pipeline complet
Architecture événementielle e-commerce : commande → stock → facture → archive → notification.
Pipeline – Étapes techniques détaillées
1. Création des topics
bin/kafka-topics.sh --bootstrap-server localhost:9092 \
--create --topic commandes.ecommerce --partitions 3 --replication-factor 1
bin/kafka-topics.sh --bootstrap-server localhost:9092 \
--create --topic stock.verifie --partitions 3 --replication-factor 1
bin/kafka-topics.sh --bootstrap-server localhost:9092 \
--create --topic factures.ecommerce --partitions 3 --replication-factor 1
bin/kafka-topics.sh --bootstrap-server localhost:9092 \
--create --topic notifications.clients --partitions 3 --replication-factor 1
2. Production d’une commande
bin/kafka-console-producer.sh \
--bootstrap-server localhost:9092 \
--topic commandes.ecommerce \
--property parse.key=true \
--property "key.separator=:"
CLI-991:{"commandeId":991,"client":"LUCAS","montant":120.5,"produit":"PC Gamer"}
3. Consumer Stock
bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic commandes.ecommerce \
--from-beginning \
--property print.key=true \
--property print.value=true \
--group service-stock
Le service stock prend la commande, vérifie le produit, et publie un message
dans stock.verifie.
4. Consumer Facturation
bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic stock.verifie \
--group service-facturation
Chaque commande validée est convertie en facture → publiée dans
factures.ecommerce.
5. Kafka Connect – Sink PostgreSQL
{
"name": "factures-sink",
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
"connection.url": "jdbc:postgresql://localhost:5432/ecommerce",
"connection.user": "postgres",
"connection.password": "postgres",
"topics": "factures.ecommerce",
"auto.create": "true",
"insert.mode": "insert"
}
}
Contenu réservé — connectez-vous.
- Une commande = une clé Kafka → garantit l’ordre des événements client.
- Utiliser Kafka Streams pour détecter les commandes incohérentes.
- Segmenter les topics par domaine :
commandes.*,stock.*,factures.*. - Utiliser un Sink Connector pour éviter d’écrire du code de persistance.
- Tout log métier doit devenir un événement Kafka.
Résultat attendu
Vous obtenez un pipeline complet où chaque commande traverse automatiquement toutes les étapes : réception ➝ stock ➝ facturation ➝ archivage ➝ notifications. Le tout observable en temps réel dans les topics Kafka.
Résumé
Ce projet final démontre la puissance de Kafka comme bus événementiel pour orchestrer les microservices. Vous savez maintenant :
- créer et configurer des topics professionnels,
- développer des producteurs/consommateurs robustes,
- chaîner des services avec Kafka Streams,
- archiver avec Kafka Connect,
- observer et déboguer votre cluster.
Quiz final
- Pourquoi une clé Kafka est-elle essentielle dans ce pipeline ?
- Kafka Streams et Kafka Connect : quelle différence fondamentale ?
- Comment garantir que la facturation ne traite pas deux fois la même commande ?
- Quel est l’intérêt du pattern Outbox dans ce contexte ?
Exercice de clôture
Ajoutez un microservice notification client :
- il lit le topic
factures.ecommerce, - il génère un message de confirmation,
- il publie un message dans
notifications.clients.
Testez l’ensemble du pipeline en envoyant 10 commandes successives.
Ateliers techniques
Atelier 1 – Pipeline end-to-end complet
- Création des 4 services
- Production de 20 commandes
- Analyse des topics et du lag
Atelier 2 – Kafka Streams : détection d’anomalies
- Créer un KStream sur
commandes.ecommerce - Filtrer les commandes incohérentes
- Publier dans un topic
commandes.erreurs
Atelier 3 – Intégration PostgreSQL
- Configurer un Sink Connector JDBC
- Créer la table
factures - Vérifier l’archivage complet
