top of page
Rechercher
  • Photo du rédacteurJocelyn Pichonnat

101 Kafka Connect - Intégrer des systèmes externes sans se fouler les poignets

Votre présence ici est surement due à une des ces trois raisons :

  • vous connaissez un peu Kafka, dans votre entreprise ou par des articles comme les miens

  • vous souhaitez intégrer des systèmes externes comme des bases de données

  • le hasard complet, un clic par erreur... (restez quand même s'il vous plaît !)

Apache Kafka, plateforme de "Streaming événementiel", permet de découpler les systèmes à travers une couche d'intégration de données basée sur le "Pub/Sub". Kafka vient avec son lot d'avantages dont j'ai déjà évoqué dans le passé (par ici les bases). Ici je vous en présente un beau gros avantage : Kafka Connect.


Pour que cela reste accessible, je ne rentrerais pas dans des détails techniques : je veux que même mes amis POs puissent comprendre et pousser l'idée dans leur équipe.


Kafka Connect : quel est le besoin ?


Multiplicité des connections, formats de données variés, couplages forts entre les systèmes, aucune maintenabilité et risque de bris en cas d'évolution : c'est ce qui attend toute compagnie qui n'a pas compris le besoin essentiel d'avoir une couche d'intégration de données qui jouera un rôle de médiateur entre toutes les parties.


Apache Kafka vient donc soulager cette peine et se propose comme intergiciel (middleware) facilitant les échanges à travers des messages envoyés vers des topics.


En général, même si une entreprise utilise Kafka pour gérer ses flux de données événementiels, soyons d'accord qu'elle possède également tout un tas d'autres systèmes externes qui stockent des données : bases de données de tout genre, entrepôts de données, des CRMs, ou des bons vieux fichiers plats.


Malheureusement les données de ces systèmes ne sont pas dans Kafka et il se peut que vous désirez utiliser ses données avec celles de vos topics Kafka ou inversement, ajouter les données des topics Kafka vers vos systèmes de données classiques.


C'est exactement le rôle de Kafka Connect : une des API de Kafka, réutilisable, configurable et indépendante.


Kafka Connect : comment ça marche ?


Kafka Connect désigne deux choses : un système d'intégration de données composé de connectors, des briques applicatives réutilisables, ainsi qu'un client Kafka, qui joue le rôle d'un producteur d'événements (producer) ou d'un consommateur d'événements (consumer). Ce client est indépendant du cluster Kafka lui-même.


Kafka Connect Source est l'application cliente qui utilise un connector agissant comme un producteur d'événements qui pousse des messages dans un topic Kafka.


Kafka Connect Sink est l'application cliente qui utilise un connector agissant comme un consommateur d'événements qui lit les messages depuis des topics Kafka.


Ici de quoi se rafraîchir la mémoire :


Kafka Connect : quels sont les avantages ?


Tout d'abord, Kafka Connect est nativement scalable horizontalement et cela s'inscrit parfaitement dans une stratégie d'utilisation du cloud.


Cela veut dire que Kafka Connect permet de générer soit une seule instance de l'application qui travaillera seule, ou alors en un cluster d'applications accélérant ainsi le traitement des données et maintenant votre niveau ciblé de volume de données.


Faut-il être ingénieur à la NASA pour avoir Kafka Connect en place ? Non : pour lancer un client Kafka Connect, cela prend un connector (un fichier jar) et un simple fichier de configuration avec les informations comme le nom des topics, les identifiants de connections vers le systèmes externes, la sécurité, la gestion d'erreur et d'autres choses encore.


Pour trouver votre connector, cette brique applicative, il vous suffit d'aller sur Confluent Hub (ou de chercher sur Github, Google ou encore le site de votre systèmes externes) et de télécharger le fichier jar à la bonne place. Je vous mets en garde : il y a différentes types de licence, parfois open source, parfois communautaires ou encore commerciales (payantes).


Cependant me diriez-vous : pourquoi utiliser Connect, nos développeurs peuvent faire la même chose, non ? Potentiellement, oui mais ils vont se casser les dents, et comme je l'ai déjà dit, plein de choses viennent nativement (et cela peut être même totalement gratuit en terme de licence !).


Autre avantage de taille : les connectors sont développés par quelqu'un d'autre, déjà testés et utilisés en production : encore un gain de temps (et d'argent) ainsi que des tendinites du poignet en moins. Pourquoi réinventer quelque chose qui existe déjà, fonctionne déjà et qui est gratuit (à quelques connectors près) ? Quelle est la plus-value de votre compagnie de faire cela ?


Réfléchir, c'est payant souvent !
Réfléchir, c'est payant souvent !

Dernier point : et il n'y a pas de connector disponibles ou qui répond à des besoins plus spécifiques ? ConnectAPI fournit des interfaces qui permettent d'écrire ses propres connectors. Donc vous n'êtes jamais laissés sans solution.


Conclusion


Si vous avez déjà Kafka dans votre entreprise (chanceux !), Connect peut vous permettre d'utiliser vos systèmes externes et de les exploiter et enrichir grâce à l'événementiel, avec des clients applicatifs scalables et des connectors souvent déjà écrits (et pour la plupart gratuits).


Si vous n'avez pas encore fait le pas vers Kafka et que, par exemple, vous souhaitez migrer des bases de données, interfacer un CRM avec d'autres systèmes, faire du offloading, Kafka avec Connect est sans doute une solution efficace pour arriver à vos fins.


Dans les deux cas, pensez à vos développeurs et à leurs poignets (et pensez à votre porte monnaie !).


TL;DR : Kafka Connect est une solution, bien adaptée au cloud car scalable horizontalement, venant avec la solution Kafka, pour intégrer des systèmes externes directement avec le cluster Kafka, à moindre coût (voire gratis) et avec pas de développement.

コメント


bottom of page