Atelier – Lambda ou Kappa pour notre application de taxis ?
Objectif : assembler batch et streaming dans une architecture, et justifier le choix.
L’énoncé
Section intitulée « L’énoncé »Notre application de taxis a besoin :
- d’un tableau de bord du chiffre d’affaires par zone, rafraîchi toutes les 5 secondes ;
- d’alertes de panne en temps réel (comme au TP 10) ;
- d’une facturation mensuelle exacte aux chauffeurs.
Lambda ou Kappa ? Dessinez l’architecture : sources, journal, traitements, stockages, consommateurs. Pour chaque besoin, indiquez la couche qui le sert et pourquoi.
Vous avez déjà construit les deux couches : le batch du jour 1 (TP 4, écriture Parquet partitionnée) et le streaming du jour 3 (TP 9 à 11), avec la même API.
Rappel des deux modèles
Section intitulée « Rappel des deux modèles »| Lambda | Kappa | |
|---|---|---|
| Chemins | Batch (exact, périodique) + Speed (temps réel) + Service (fusion) | Un seul : journal rejouable → streaming → service |
| Code | 2 versions à maintenir | 1 seul code |
| Recalcul | Batch complet, simple | Rejouer le journal avec le nouveau code |
| Idéal pour | Rapports exacts + temps réel | Événements, temps réel d’abord |
Questions pour guider le groupe
Section intitulée « Questions pour guider le groupe »- Quelle source d’événements ? Un dossier de fichiers comme en TP, ou Kafka ?
- La facturation doit-elle être recalculable des mois plus tard ? Avec quelle tolérance aux retards ?
- Un watermark de 2 minutes convient-il aux alertes ? À la facturation ?
- Où archiver les événements bruts ? Parquet, Delta, le journal Kafka lui-même ?
- Si le code change, comment recalculer le passé ?
- Combien de codes différents votre équipe peut-elle maintenir ?
Restitution
Section intitulée « Restitution »Un groupe présente son schéma en 2 minutes ; les autres complètent ou contestent. Si le TP 11 a débordé : une seule restitution.
Une correction possible
Section intitulée « Une correction possible »🏗️ À consulter après la restitution : Schéma d'architecture et justification besoin par besoin
┌──────────────────────────────┐ Courses, logs ──► Kafka│ journal rejouable │ (événements) └───────┬──────────────┬───────┘ │ │ Structured Streaming Archivage brut fenêtres, watermark court Parquet / Delta partitionné par jour │ │ │ Tableau de bord Alertes Job batch mensuel CA par zone, 5 s /payment facturation exacte (availableNow ou spark.read)- Tableau de bord (5 s) et alertes
/payment: Kappa. Kafka → Structured Streaming, avec un watermark court (2 minutes) pour privilégier la réactivité opérationnelle. - Facturation mensuelle exacte aux chauffeurs : un job batch sur les données archivées (Parquet ou Delta Lake), pour garantir l’exactitude comptable au centime près et inclure les courses arrivées avec 24 h de retard (terminal hors réseau dans un tunnel). C’est la couche batch de Lambda, mais écrite avec la même API DataFrame que le flux !
| Besoin métier | Latence cible | Tolérance aux retards | Couche choisie |
|---|---|---|---|
| 1. Tableau de bord CA par zone | 5 secondes | Faible (si une course arrive 1 h après, ce n’est pas grave pour la carte météo du trafic) | Speed / Streaming (outputMode="update", watermark 2 min) |
2. Alertes de panne /payment | < 1 minute | Faible (on veut biper l’astreinte tout de suite) | Speed / Streaming (fenêtre glissante 1 min / 30 s) |
| 3. Facturation mensuelle chauffeurs | Mensuelle (J+2) | Zéro perte tolérée (obligation légale et comptable) | Batch sur archive Delta / Parquet (ou trigger(availableNow=True)) |
Une architecture hybride (Lakehouse) est très fréquente en pratique. Il n’y a pas une seule bonne réponse : valorisez la justification. Avec Spark, la frontière entre les deux modèles s’estompe : availableNow permet de lancer un « streaming » comme un batch planifié, et un seul code peut servir les deux couches.
À retenir
Section intitulée « À retenir »- Choisir par besoin (fraîcheur, exactitude, recalcul), pas par mode.
- Le watermark arbitre réactivité et exhaustivité : court pour alerter, long ou batch pour facturer.
- Une seule API pour le batch, le ML et le streaming : c’est le fil des 3 jours.
Dépôt des participants : formations2026/formation-spark-ml (branche participants)
Contenu pédagogique © Ambient IT · 140 Avenue Jean Lolive, 93500 Pantin · formation@ambient-it.net · +33 (0)1 48 10 09 46
Organisme de formation enregistré sous le numéro 11 75 54743 75. Cet enregistrement ne vaut pas agrément de l'État.