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

Pipeline événementiel

Suite d’étapes automatisées orchestrées par des topics Kafka.

Service orchestré

Microservice réagissant aux événements d’un topic.

Idempotence

Capacité à traiter un événement plusieurs fois sans doublon.

Outbox pattern

Technique d’émission fiable des événements à partir d’une base métier.

Diagramme du pipeline complet

Pipeline e-commerce Kafka

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.

Bonnes pratiques :
  • 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

Navigation

Review My Order

0

Subtotal