Jump to section

Un registre de services, qu'est-ce que c'est ?

Copier l'URL

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.

Les logiciels modernes sont composés de microservices distribués et faiblement couplés qui échangent des données via des interfaces de programmation d'application (API).

L'échange de données entre applications est essentiel pour les grandes entreprises. En effet, chaque seconde, les applications s'envoient des données afin d'assurer le bon fonctionnement de l'entreprise. Par conséquent, il est crucial de maintenir l'intégrité des données. L'autre enjeu consiste à s'assurer que les différentes applications pourront effectivement « consommer » ces données essentielles. Le registre de services offre justement une solution.

Les systèmes de messagerie qui transportent les données, tels que Apache Kafka, n'incluent pas de fonction de vérification des données. Que se passe-t-il alors si un producteur envoie des données non consommables, par exemple s'il change leur format ou ajoute ou supprime un champ ? Si le consommateur n'est pas informé, il ne peut pas traiter correctement les données. Dans le pire des cas, le système tout entier se bloque.

Avant tout échange de données, le consommateur doit savoir quelle structure de données (ou schéma) le producteur utilise, et si celui-ci modifie le schéma, il doit en avertir le consommateur. Il est important en effet que les données puissent évoluer sans perturber le système de messagerie.

Le producteur peut envoyer manuellement le schéma aux consommateurs sous la forme d'une pièce jointe dans un e-mail, par exemple. Malheureusement, ce processus manuel, comme beaucoup d'autres, peut s'avérer compliqué et induire des erreurs, en plus de complexifier les audits. Les services risquent ainsi fort d'être interrompus sans que l'on puisse déterminer la cause de la défaillance.

Un registre de services est capable de fournir ces informations via une plateforme facile d'accès. C'est un point central où les développeurs d'applications productrices peuvent enregistrer les schémas qu'ils utilisent pour créer ces applications. Les développeurs d'applications consommatrices peuvent ensuite y chercher le schéma nécessaire pour consommer les données de l'application productrice. Un registre de services accepte généralement plusieurs types de schémas, dont Apache Avro, JSON Schema et Google Protocol Buffers.

En plus des schémas, le registre de services peut stocker des artefacts, par exemple les caractéristiques des API pour la communication synchrone au niveau des applications. Il est d'autant plus utile que les services se multiplient et se complexifient.

Apparu il y a plusieurs années, le concept de registre de services connaît un regain d'intérêt depuis peu, car il convient particulièrement bien à l'univers des microservices. Le registre de services fournit une source unique de vérité sur la structure des données d'une application, qui a été approuvée par les développeurs des applications productrices et consommatrices. Il est donc compatible avec une approche de type « contract-first », qui donne la priorité au contrat avant le code. Au lieu de développer d'abord l'application et de proposer ensuite un contrat qui permettra à d'autres applications ou entreprises de communiquer avec cette application, avec un registre de services, les termes du contrat (les entrées/sorties, les charges, voire les règles de validation) sont définis en amont. Tout est clairement énoncé et il ne reste aucune ambiguïté sur les interactions.

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.

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.

Keep reading

Article

L'intégration, qu'est-ce que c'est ?

Vous souhaitez savoir en quoi consiste l'intégration ? Découvrez ce que c'est, comment l'adopter et pourquoi elle est plus efficace avec des solutions Open Source.

Article

Apache Kafka, qu'est-ce que c'est ?

Apache Kafka est une plateforme distribuée de diffusion de données en continu, capable de publier des flux d'enregistrement en temps réel, de les stocker, de les traiter et d'y souscrire.

Article

Une API, qu'est-ce que c'est ?

Une API, ou interface de programmation d'application, est un ensemble de définitions et de protocoles qui facilite la création et l'intégration de logiciels d'applications.

En savoir plus sur l'intégration

Produits

Ensemble complet de technologies d'intégration et de messagerie.

Un ensemble de produits, d'outils et de composants qui facilitent le développement et la maintenance des applications cloud-native.

Un ensemble de produits pour automatiser les décisions et processus métiers de manière intelligente. Comprend Red Hat Decision Manager, Red Hat Process Automation Manager et Red Hat Runtimes.

Services gérés et hébergés de plateforme, d'applications et de données qui rationalisent l'expérience dans le cloud hybride, réduisant ainsi les coûts d'exploitation et la complexité liés à la distribution des applications cloud-native.

Ressources

Livre numérique

Créer une infrastructure agile et renforcer la capacité d'adaptation de l'entreprise

Formations

Cours gratuit

L'intégration agile avec Red Hat : présentation technique