tadata
Retour à l'accueil

Streaming vs Batch : Compromis d'Architecture

#data-engineering#streaming#batch#kafka#architecture

Tous les pipelines de données n'ont pas besoin d'être temps réel. Le choix entre streaming et batch — ou leur combinaison — dépend des exigences de latence, des contraintes de coût et de la tolérance à la complexité opérationnelle.

Vue d'Ensemble

DimensionBatchStreaming
LatenceMinutes à heuresMillisecondes à secondes
Modèle de traitementDatasets bornés (fichiers, partitions)Flux d'événements non bornés
ComplexitéPlus faible — plus facile à déboguer, rejouer, testerPlus élevée — ordonnancement, exactly-once, backpressure
CoûtPaiement par job (start/stop)Infrastructure toujours active
Récupération d'erreursRetraiter le batchComplexe (replay depuis l'offset, dead letter queues)
Outils typiquesSpark, dbt, AirflowKafka, Flink, Kafka Streams, Kinesis

Quand le Batch Suffit

  • Reporting quotidien/horaire — dashboards rafraîchis sur un planning
  • Chargement d'entrepôt — pipelines ELT nocturnes
  • Entraînement de modèles ML — entraînement sur données historiques
  • Charges sensibles au coût — batch Spark sur instances spot 5–10x moins cher que Flink toujours actif

Quand le Streaming Est Nécessaire

  • Détection de fraude — décisions en millisecondes
  • Personnalisation temps réel — recommandations pendant la session utilisateur
  • Monitoring opérationnel — alertes sur les métriques live
  • Microservices événementiels — services réagissant aux événements du domaine
  • IoT — traitement continu des données capteurs

Patterns d'Architecture

Architecture Lambda

Exécuter les deux pipelines batch et streaming. Batch pour la précision (retraitement), streaming pour la vitesse. Fusionner dans une couche de service. Inconvénient : maintenir deux codebases pour la même logique.

Architecture Kappa

Streaming uniquement. Retraiter en rejouant le journal d'événements (rétention Kafka). Plus simple à maintenir mais nécessite une infrastructure robuste de traitement de flux.

Medallion avec Streaming

Bronze (événements bruts) → Silver (nettoyés, dédupliqués) → Gold (agrégés). Peut être implémenté en streaming (Flink/Spark Structured Streaming) ou batch (dbt) à chaque couche.

Paysage d'Outils

OutilTypeForces
Apache KafkaPlateforme de streamingJournal durable, écosystème (Connect, Streams, ksqlDB)
Apache FlinkProcesseur de fluxVrai streaming, exactly-once, traitement d'événements complexes
Spark Structured StreamingStreaming micro-batchAPI unifiée batch+stream, large adoption
Kafka StreamsBibliothèque légère de streamingPas de cluster séparé, natif Java/Kotlin
AWS KinesisStreaming managéNatif AWS, option serverless (Data Firehose)
GCP DataflowRunner Beam managéAuto-scaling, batch+stream unifié
Apache BeamModèle de programmation unifiéÉcrire une fois, exécuter sur Flink/Spark/Dataflow

Matrice de Décision

Votre besoinApproche recommandée
Latence > 1 heure acceptableBatch
Latence 1–15 minutesMicro-batch (Spark Structured Streaming)
Latence < 1 secondeVrai streaming (Flink, Kafka Streams)
Analyse historique et liveLambda ou Kappa
Budget contraintBatch d'abord, streaming uniquement où nécessaire

Ressources

:::

Nous utilisons des cookies analytiques pour améliorer votre expérience. Aucune donnée personnelle n'est collectée.