Améliorez vos applications Kafka avec des schémas

Apache Kafka est un magasin d’événements open source et une plate-forme de traitement de flux bien connu et est devenu le standard de facto pour le streaming de données. Dans cet article, le développeur Michael Burgess donne un aperçu du concept de schémas et de gestion des schémas comme moyen d’ajouter de la valeur à vos applications événementielles sur le service Kafka entièrement géré. IBM Event Streams sur IBM Cloud®.

Qu’est-ce qu’un schéma ?

Un schéma décrit la structure des données.

Par exemple:

Une simple classe Java modélisant une commande d’un produit dans une boutique en ligne peut commencer par des champs tels que :

public class Order{private String productName private String productCode private int quantité

[…]

}

Si des objets de commande étaient créés à l’aide de cette classe et envoyés à un sujet dans Kafka, nous pourrions décrire la structure de ces enregistrements à l’aide d’un schéma tel que ce schéma Avro :

{ « type »: « enregistrement », « nom »: « Commande », « fields »: [
{« name »: « productName », « type »: « string »},
{« name »: « productCode », « type »: « string »},
{« name »: « quantity », « type »: « int »}
]
}

Pourquoi devriez-vous utiliser un schéma ?

Apache Kafka transfère les données sans valider les informations contenues dans les messages. Il n’a aucune visibilité sur le type de données envoyées et reçues, ni sur les types de données qu’elles peuvent contenir. Kafka n’examine pas les métadonnées de vos messages.

L’une des fonctions de Kafka est de découpler les applications consommatrices et productrices, afin qu’elles communiquent via un sujet Kafka plutôt que directement. Cela leur permet de travailler chacun à leur propre rythme, mais ils doivent toujours se mettre d’accord sur la même structure de données ; sinon, les applications consommatrices n’ont aucun moyen de désérialiser les données qu’elles reçoivent en quelque chose qui ait du sens. Les applications doivent toutes partager les mêmes hypothèses sur la structure des données.

Dans le cadre de Kafka, un schéma décrit la structure des données dans un message. Il définit les champs qui doivent être présents dans chaque message et les types de chaque champ.

Cela signifie qu’un schéma forme un contrat bien défini entre une application productrice et une application consommatrice, permettant aux applications consommatrices d’analyser et d’interpréter correctement les données des messages qu’elles reçoivent.

Qu’est-ce qu’un registre de schémas ?

Un registre de schémas prend en charge votre cluster Kafka en fournissant un référentiel pour gérer et valider les schémas au sein de ce cluster. Il agit comme une base de données pour stocker vos schémas et fournit une interface pour gérer le cycle de vie des schémas et récupérer les schémas. Un registre de schémas valide également l’évolution des schémas.

Optimisez votre environnement Kafka à l’aide d’un registre de schémas.

Un registre de schémas est essentiellement un accord sur la structure de vos données au sein de votre environnement Kafka. En disposant d’un stockage cohérent des formats de données dans vos applications, vous évitez les erreurs courantes qui peuvent survenir lors de la création d’applications, telles qu’une mauvaise qualité des données et des incohérences entre vos applications de production et de consommation qui peuvent éventuellement conduire à une corruption des données. Disposer d’un registre de schémas bien géré n’est pas seulement une nécessité technique, mais contribue également aux objectifs stratégiques consistant à traiter les données comme un produit précieux et aide énormément dans votre parcours de données en tant que produit.

L’utilisation d’un registre de schémas augmente la qualité de vos données et garantit leur cohérence, en appliquant des règles d’évolution des schémas. Ainsi, en plus d’assurer la cohérence des données entre les messages produits et consommés, un registre de schémas garantit que vos messages resteront compatibles à mesure que les versions de schéma changent au fil du temps. Au cours de la vie d’une entreprise, il est très probable que le format des messages échangés par les applications qui la supportent devra évoluer. Par exemple, la classe Order dans l’exemple de schéma que nous avons utilisé précédemment pourrait obtenir un nouveau champ de statut : le champ de code produit pourrait être remplacé par une combinaison de numéro de département et de numéro de produit, ou changer quelque chose de similaire. Le résultat est que le schéma des objets dans notre domaine métier évolue continuellement et vous devez donc être en mesure de garantir un accord sur le schéma des messages dans un sujet particulier à tout moment.

Il existe différents modèles d’évolution de schéma :

Compatibilité ascendante : où les applications productrices peuvent être mises à jour vers une nouvelle version du schéma, et toutes les applications consommatrices pourront continuer à consommer des messages en attendant d’être migrées vers la nouvelle version. Compatibilité ascendante : où les applications consommatrices peuvent d’abord être migrées vers une nouvelle version du schéma, et peuvent continuer à consommer les messages produits dans l’ancien format pendant que les applications productrices sont migrées. Compatibilité totale : lorsque les schémas sont à la fois compatibles vers l’avant et vers l’arrière.

Un registre de schémas est capable d’appliquer des règles d’évolution de schéma, vous permettant de garantir une compatibilité ascendante, ascendante ou totale des nouvelles versions de schéma, empêchant ainsi l’introduction de versions de schéma incompatibles.

En fournissant un référentiel des versions des schémas utilisés dans un cluster Kafka, passés et présents, un registre de schémas simplifie le respect des politiques de gouvernance et de qualité des données, car il fournit un moyen pratique de suivre et d’auditer les modifications apportées aux formats de données de votre sujet.

Et après?

En résumé, un registre de schémas joue un rôle crucial dans la gestion de l’évolution des schémas, de la gestion des versions et de la cohérence des données dans les systèmes distribués, favorisant ainsi l’interopérabilité entre les différents composants. Event Streams sur IBM Cloud fournit un registre de schémas dans le cadre de son plan Entreprise. Assurez-vous que votre environnement est optimisé en utilisant cette fonctionnalité sur l’offre Kafka entièrement gérée sur IBM Cloud pour créer des applications intelligentes et réactives qui réagissent aux événements en temps réel.

Mettre à disposition une instance d’Event Streams sur IBM Cloud ici. Découvrez comment utiliser le registre de schémas Event Streams ici. En savoir plus sur Kafka et ses cas d’utilisation ici. Pour tout défi de mise en place, consultez notre Guide de Démarrage et FAQ.

Flux d’événements pour IBM Cloud Engineer

Articles similaires

Leave a Comment