Qu'est-ce que le streaming de donnees ?
Le streaming de donnees est un paradigme de traitement ou les donnees sont traitees de maniere continue au fur et a mesure de leur arrivee, plutot que par lots (batch). Contrairement au traitement batch qui attend d'avoir toutes les donnees avant de les traiter, le streaming traite chaque evenement ou message immediatement. Ce paradigme est essentiel pour les applications temps reel : detection de fraude, monitoring, analytics en direct, et systemes IoT.
Apache Kafka
Apache Kafka est la plateforme de streaming la plus utilisee. C'est un systeme de messagerie distribue base sur un log d'evenements persistant et ordonne. Concepts cles : les topics organisent les messages par categorie, les partitions permettent la parallelisation et la scalabilite, les producers publient des messages, les consumers (organises en consumer groups) lisent les messages. Kafka garantit l'ordre dans une partition et la durabilite 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'etat (stateful processing), garanties exactly-once, et traitement d'evenements complexes (CEP). Apache Spark Structured Streaming etend Spark au streaming avec un modele micro-batch. AWS Kinesis est le service de streaming manage d'Amazon. Le choix depend des besoins : Flink pour le temps reel strict, Spark Streaming pour l'integration avec l'ecosysteme Spark, Kinesis pour la simplicite AWS.
Patterns de streaming
Event Sourcing : stocker les evenements plutot que l'etat final. L'etat est reconstruit en rejouant les evenements. Ideal pour l'audit, le debugging et le replay. CQRS : separer les modeles de lecture et d'ecriture, alimentes par des evenements. Change Data Capture (CDC) : capturer les changements de base de donnees et les streamer vers d'autres systemes (Debezium lit le WAL PostgreSQL/MySQL). Materialized Views : tables derivees mises a jour en temps reel par les evenements.
Streaming dans le developpement web
Au-dela 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 reponses progressives (streaming de LLM comme ChatGPT). React Server Components et Suspense utilisent le streaming HTML pour envoyer la page progressivement.