L’une des forces de Kafka c’est le découplage entre les producers et les consumers. Ce découplage permet d’atteindre des niveaux de scalabilité très importants. 

Grâce à la combinaison de ce découplage aux fonctionnalités transactionnelles (ACID, garanties de sémantique), Kafka possède aujourd’hui toutes les caractéristiques pour être utilisé comme un Hub de données transactionnel (Transactional Data Hub), c’est-à-dire un hub dans lequel on peut gérer des cas d’usage streaming opérationnels, et pas seulement des cas d’usage  décisionnels.

Il est possible aujourd’hui d’implémenter dans Kafka des cas d’usages où chaque opération doit respecter des contraintes sémantiques et référentielles définies par les business analysts pour être validées par le système. C’était pour cette raison qu’on utilisait et qu’on utilise encore les SGBDR.

Kafka a toutes les caractéristiques aujourd’hui pour agir comme un SGBDR à large échelle pour des cas d’usage streaming métiers ou opérationnels. D’où l’intérêt de Kafka Streams. 

Kafka Streams est une API streaming transactionnelle. Elle permet de traiter les données unitairement, une à la fois directement depuis les topics Kafka.  

Kafka Streams comble parfaitement les limites d’un consumer classique. Là où un consumer ne sait que lire la donnée  sans pouvoir y effectuer des traitements réutilisables (par exemple : récupérer les données d’un topic, tester la validité des données, et publier les valides dans un autre topics, et les non-valides dans un autre), avec Kafka Streams, on peut appliquer des règles de validation à chaque donnée, et même effectuer des opérations complexes tels que les agrégations, les jointures, ou encore la gestion des cas complexes. 

Kafka Streams comble également les limites des « consumers décisionnels » tels que Spark Streaming ou Apache Flink. Là où ceux-ci sont obligés d’effectuer des traitements de données sur des micro-batch, avec Kafka Streams on effectue des traitements unitaires par défaut, et on a le choix entre ce mode de traitement et le traitement groupé. 

Là où la mise en œuvre de Storm demande la mise en place d’une architecture lambda complexe, l’utilisation de Kafka Streams nécessite juste un PC, car elle est une API très légère qui repose sur un cluster Kafka. Kafka Streams s’y connecte simplement comme client. 

C’est important de noter que même si Kafka Streams traite directement les topics sur Kafka, il ne tourne pas sur le cluster Kafka. Il tourne sur une machine standalone différente et le cluster Kafka le voit juste comme un Consumer qui s’est abonné à l’un de ses topics. 

 La légèreté de l’API Kafka Streams a un autre avantage : la scalabilité du déploiement. Lorsqu’on travaille avec Spark Streaming ou tout autre technologie streaming distribué, déployer à l’échelle est quasiment impossible à cause du cluster. On peut déployer Kafka Streams sur des containers, des VM, des PC, des images Dockers, comme app de micro-service, etc. Bref, on a beaucoup de flexibilité dans le déploiement. 

D’un point de vue purement technique, Kafka Streams : 

  • est une bibliothèque Java. Rien de plus, rien de moins ! On n’a donc pas besoin d’un cluster
  • s’inspire d’Apache Samza, mais en plus léger
  • est une bibliothèque de transformation et de traitement de données qui tourne sur Kafka
  • est une bibliothèque de traitement de données transactionnelle (traitement unitaire de données avec mécanismes de garantie de sémantique, et de cohérence ACID)

Vous retrouverez quasiment toujours Kafka Streams en entreprise dans les cas d’usage suivants :

  • traitement des transactions financières et des paiements bancaires en temps réel (CB, bourse, banques, assurances, détection de fraude, etc…)
  • monitoring logistique en temps réel (tracking de véhicule, avions, flottes, parcs automobiles, industries, etc..).
  • traitement des objets connectés et tous les cas d’usage impliquant l’usage des capteurs.
  • monitoring en temps réel de patients dans les hôpitaux.
  • gestion des notifications en temps réel dans les applications mobiles
  • gestion des programmes de fidélité, campagnes marketing, processus opérationnels (réservation commandes en e-commerce et en grande distribution, hôtels, etc.)

Mais son domaine de prédilection aujourd’hui reste le traitement des transactions financières et les paiements bancaires en temps réel. Ainsi, si vous travaillez dans le secteur bancaire en tant qu’ingénieur Big Data ou Product Owner Data, vous tomberez certainement sur Kafka Streams. 

Cette formation vous apprendra à développer des applications transactionnelles en Kafka Streams et de monter d’un cran votre niveau en Big Data.  

Cliquez sur le bouton suivant pour en savoir plus

>