Registre de services : définition
Un registre de services est une base de données qui sert au stockage des structures de données utilisées pour la communication entre applications. C'est un point central où les développeurs peuvent enregistrer et trouver des schémas utiles pour créer des applications spécifiques.
Utilisation d'un registre de services avec Apache Kafka
Voyons comment fonctionne un registre de services, en particulier avec Apache Kafka. Le registre de services est idéal dans ce cas d'utilisation précis. En effet, Kafka ne fournit pas automatiquement la structure des données aux consommateurs et ne propose pas de fonction de vérification des données. Le système Kafka n'analyse pas les données, il ne les lit même pas. Par conséquent, il n'utilise pas de ressources vitales, ce qui lui permet de distribuer les données aux consommateurs de façon directe et très rapide. S'il prenait le temps de vérifier les données, il serait bien moins performant. L'absence de gouvernance des données n'est donc pas gênante, bien au contraire. C'est un gage de performances élevées, l'un des avantages majeurs de Kafka.
Par contre, il est important de mettre en place des règles de gouvernance pour la structure des données afin que les applications consommatrices puissent utiliser les données de façon correcte. Le registre de services est idéal, car il établit des règles et les applique.
Consommateurs et producteurs échangent des données via Kafka et, grâce au registre de services, ils documentent, partagent et valident ensemble les métadonnées de trafic dès le départ, pour éviter plus tard toute erreur liée aux données. Ces métadonnées se présentent sous la forme de schémas stockés dans le registre de services.
Le développeur de l'application productrice enregistre le schéma dans le registre de services, lequel s'assure alors que le producteur respecte bien les caractéristiques de son schéma. Le registre peut même aller jusqu'à rejeter les données qui ne sont pas conformes au schéma enregistré.
Les schémas peuvent être enregistrés par le développeur d'une application productrice, comme dans l'exemple précédent, ou par une entreprise pour un usage général par l'ensemble des membres de l'équipe de développement. Dans ce cas, le registre de services fonctionne comme une bibliothèque pour les applications productrices et consommatrices.
Les développeurs d'applications consommatrices se servent eux aussi du registre de services comme d'une bibliothèque. Ils y récupèrent les schémas nécessaires pour la création des applications qui consommeront les données. En cas de changements apportés au schéma, le registre de services fournit le schéma mis à jour aux consommateurs.
Les avantages d'un registre de services
Le registre de services apporte plusieurs avantages aux équipes de développement et métier :
Dissociation de la structure des données et des applications
Il est possible d'utiliser un registre de services pour dissocier la structure des données des applications, puis partager et gérer ces structures et descriptions d'API lors de l'exécution, via une interface REST.
Amélioration de la qualité des données
Le registre de services permet de valider le schéma et de détecter les erreurs potentielles liées aux données afin de garantir leur intégrité. Il peut inclure des règles pour vérifier que le contenu importé est correct sur le plan syntaxique et sémantique et compatible avec les autres versions, antérieures et postérieures. Ainsi, si les données ne respectent pas le schéma, le registre de services empêche le producteur de les envoyer.
Source de vérité unique et documentée
Le registre de services représente une source unique de vérité qui a été vérifiée et validée par toutes les parties concernées.
Amélioration de la productivité des développeurs
Le registre de services permet la réutilisation cohérente des schémas et conceptions d'API, ce qui accélère la création des applications productrices et consommatrices.
Économies
La détection des erreurs liées aux données au début du cycle de développement, plutôt que lors de l'exécution, permet de faire des économies, car elle évite aux développeurs de passer des heures à corriger ces erreurs en aval.