Qu'est-ce que le streaming de données ?
Le streaming de données est un paradigme de traitement ou les données sont traitées de manière continue au fur et à mesure de leur arrivee, plutôt que par lots (batch). Contrairement au traitement batch qui attend d'avoir toutes les données avant de les traiter, le streaming traite chaque événement ou message immédiatement. Ce paradigme est essentiel pour les applications temps réel : détection de fraude, monitoring, analytics en direct, et systèmes IoT.
Apache Kafka
Apache Kafka est la plateforme de streaming la plus utilisee. C'est un système de messagerie distribue base sur un log d'événements persistant et ordonne. Concepts clés : les topics organisent les messages par catégorie, les partitions permettent la parallelisation et la scalabilité, les producers publient des messages, les consumers (organisés en consumer groups) lisent les messages. Kafka garantit l'ordre dans une partition et la durabilité des messages (repliques sur plusieurs brokers). Kafka Streams et ksqlDB permettent le traitement de flux directement sur Kafka.
Traitement de flux
Apache Flink est le moteur de traitement de flux le plus avance : fennetrage temporel (tumbling, sliding, session windows), gestion de l'état (stateful processing), garanties exactly-once, et traitement d'événements complexes (CEP). Apache Spark Structured Streaming étend Spark au streaming avec un modèle micro-batch. AWS Kinesis est le service de streaming manage d'Amazon. Le choix dépend des besoins : Flink pour le temps réel strict, Spark Streaming pour l'intégration avec l'écosystème Spark, Kinesis pour la simplicité AWS.
Patterns de streaming
Event Sourcing : stocker les événements plutôt que l'état final. L'état est reconstruit en rejouant les événements. Idéal pour l'audit, le debugging et le replay. CQRS : séparer les modèles de lecture et d'écriture, alimentes par des événements. Change Data Capture (CDC) : capturer les changements de base de données et les streamer vers d'autres systèmes (Debezium lit le WAL PostgreSQL/MySQL). Materialized Views : tables dérivées mises à jour en temps réel par les événements.
Streaming dans le développement web
Au-delà du Big Data, le streaming s'applique au web : Server-Sent Events (SSE) pour le push unidirectionnel serveur vers client (notifications, feeds live). WebSocket pour la communication bidirectionnelle (chat, collaboration). HTTP Streaming (chunked transfer) pour les réponses progressives (streaming de LLM comme ChatGPT). React Server Components et Suspense utilisent le streaming HTML pour envoyer la page progressivement.