Avant d’approfondir les différentes technologies de support, créons une base de référence sur les schémas et les courtiers de messages ou la communication serveur-serveur asynchrone.
Schéma = Structure.
La forme et le format d’un « message » sont construits et livrés entre différentes applications/services/entités électroniques.
Les schémas peuvent être trouvés dans les bases de données SQL et No SQL, sous différentes formes de données que la base de données s’attend à recevoir (par exemple, first_name:string
, first.name
etc..).
Un schéma inconnu ou non conforme entraînera une suppression et la base de données ne sauvegardera pas l’enregistrement. Les schémas peuvent également être trouvés lorsque deux entités logiques communiquent, par exemple, deux microservices.
Imaginer: A écrit un message à B, qui attend un format spécifique (comme Protobuf), et sa logique ou son code attend également des clés et des types de valeur spécifiques, par exemple, une faute de frappe dans le nom de la colonne. Un schéma inattendu ou des formats différents entraîneront un consommateur.
Les schémas sont manuels ou ont un contrat automatique pour une communication stable qui dicte comment deux entités doivent communiquer. Les technologies comparées suivantes vous aideront à maintenir et à appliquer des schémas entre les services lorsque les données circulent d’un service à l’autre.
Qu’est-ce qu’AWS Glue ?
AWS Glue est un service d’intégration de données sans serveur qui facilite la découverte, la préparation, le déplacement et l’intégration de données provenant de plusieurs sources pour l’analyse, l’apprentissage automatique (ML) et le développement d’applications.
Capacités
- Moteur d’intégration de données
- ETL événementiel
- Tâches ETL sans code
- Préparation des données
Les principaux composants d’AWS Glue sont le catalogue de données, qui stocke les métadonnées, et un moteur ETL qui peut générer automatiquement du code Scala ou Python. Les sources de données courantes seraient Amazon S3, RDS et Aurora.
Qu’est-ce que le registre de schémas Confluent ?
Confluent Schema Registry fournit une couche de service pour vos métadonnées.
Il fournit une interface RESTful pour stocker et récupérer vos schémas Avro®, JSON Schema et Protobuf.
Il stocke un historique versionné de tous les schémas en fonction d’une stratégie de nom de sujet spécifiée, fournit plusieurs paramètres de compatibilité et permet l’évolution des schémas en fonction des paramètres de compatibilité configurés et de la prise en charge étendue de ces types de schémas.
Il fournit des sérialiseurs qui se connectent aux clients Apache Kafka® qui gèrent le stockage et la récupération de schéma pour les messages Kafka qui sont envoyés dans l’un des formats pris en charge.
Schema Registry vit en dehors et séparément de vos courtiers Kafka. Vos producteurs et consommateurs parlent toujours à Kafka pour publier et lire des données (messages) sur des sujets.
Parallèlement, ils peuvent également communiquer avec Schema Registry pour envoyer et récupérer des schémas décrivant les modèles de données des messages.
Qu’est-ce que Memphis.dev Schemaverse ?
Memphis Schemaverse fournit un magasin de schémas robuste et une couche de gestion de schémas au-dessus du courtier Memphis sans unité de calcul autonome ni ressources dédiées.
Avec une interface utilisateur unique et moderne et une approche programmatique, les utilisateurs techniques et non techniques peuvent créer et définir différents schémas, attacher le schéma à plusieurs stations et choisir si le schéma doit être appliqué ou non.
L’approche low-code de Memphis supprime la partie de sérialisation car elle est intégrée dans la bibliothèque du producteur.
Schemaverse prend en charge la gestion des versions, les méthodologies GitOps et l’évolution des schémas.
L’objectif principal de Schemaverse est d’agir comme un gardien automatique et d’assurer le format et la structure des messages ingérés vers une station Memphis et de réduire les plantages des consommateurs, comme cela arrive souvent si certains producteurs produisent un événement avec un schéma inconnu.
Cas d’utilisation courants de la version actuelle
- Application du schéma entre les microservices.
- Contrats de données
- Convertir le format des événements
- Créer un standard d’organisation autour des différents consommateurs et producteurs.
Comparaison
Colle AWS | Registre de schéma | Schemavers | |
Formats de données | Schéma JSON, Avro, Protobuf | Avro, Schéma JSON, Protobuf | Schéma JSON, Protobuf, GraphQL |
Validation et application | Oui | Oui | Oui |
Sérialisation | Nécessite une mise en œuvre | Nécessite une mise en œuvre | Transparent |
Désérialisation | Nécessite une mise en œuvre | Nécessite une mise en œuvre | Transparent |
Interface de gestion | Interface graphique, CLI, SDK | REST, SDK, interface graphique | SDK, interface graphique, CLI |
Langues prises en charge | Scala | Java, .NET, Python | Go, Node.js, Python, REST, TypeScript, NestJS, Java, .NET, Kotlin |
Le mode de compatibilité | en arrière ou en avant | en arrière ou en avant | en arrière ou en avant |
Création de schéma | Manuel/Auto | Manuel/Auto | Manuel |
Tarification | 1,00 $ pour 100 000 objets stockés au-dessus de 1 million, par mois + 1,00 $ par million de requêtes au-dessus de 1 million en un mois | Licence Confluent Community/ Confluent Enterprise | Open source/gratuit |
Validation et application
Lorsque les applications de streaming de données sont intégrées à la gestion des schémas, les schémas utilisés pour la production de données sont validés par rapport aux schémas au sein d’un registre central, ce qui vous permet de contrôler de manière centralisée la qualité des données.
AWS Glue offre une application et une validation à l’aide du registre de schéma Glue pour les applications basées sur Java utilisant Apache Kafka, AWS MSK, Amazon Kinesis Data Streams, Apache Flink, Amazon Kinesis Data Analytics pour Apache Flink et AWS Lambda.
Registre de schéma valide et applique les schémas de message côté client et côté serveur. La validation aura lieu côté client en effectuant une sérialisation sur les données sur le point d’être produites en récupérant le schéma du registre de schémas. Confluent fournit des fonctions de sérialisation prêtes à l’emploi qui peuvent être utilisées.
Les mises à jour et l’évolution du schéma nécessiteront le démarrage du client et la récupération des mises à jour pour modifier le schéma au niveau du registre. Il faut d’abord basculer dans un certain mode (avant/arrière), effectuer le changement, puis revenir à la valeur par défaut.
Schemavers valide et applique également le schéma au niveau du client sans avoir besoin d’extraire manuellement le schéma et prend en charge l’évolution de l’exécution, ce qui signifie que les clients n’ont pas besoin d’un redémarrage pour appliquer de nouvelles modifications de schéma, y compris différents formats de données.
Schemaverse rend également la sérialisation/désérialisation transparente pour le client et l’intègre dans le SDK en fonction du format de données requis.
Sérialisation/Désérialisation
Lors de l’envoi de données sur le réseau, elles doivent être préalablement codées en octets. AWS Glue et Schema Registry fonctionnent de la même manière. Chaque schéma créé a un ID.
Lorsque l’application produisant des données a enregistré son schéma, le sérialiseur Schema Registry valide que l’enregistrement produit par l’application est structuré avec les champs et les types de données correspondant à un schéma enregistré.
La désérialisation aura lieu par un processus similaire en récupérant le schéma nécessaire en fonction de l’ID donné dans le message.
Dans AWS Glue et Schema Registry, il incombe au client de mettre en œuvre et de gérer la sérialisation. Dans Schemaverse, c’est totalement transparent, et tout ce dont le client a besoin est de produire un message conforme à la structure requise.
Conclusion
À présent, vous devriez avoir une meilleure compréhension des trois principaux outils de gestion de schéma, AWS Glue, Confluent Schema Registry et Memphis.dev Schemaverse. J’espère que vous emporterez des informations percutantes qui vous aideront à décider quel outil de gestion de schéma fonctionne le mieux pour vous et vos besoins.