Skip to main content

MD Dynamics vs Kafka

Fonctionnalités

FeatureMD Dynamics LinkApache Kafka
TechnologieJava.Java.
PrincipeStreams (algorithmes distribués). MD Dynamics Link vous permet de créer et d'exploiter des algorithmes distribués appelés "streams" dont chaque étape est une fonction lambda qui peut être distribuée sur le réseau de la plateforme. Vous pouvez ainsi créer des apis, des microservices, services d'analytics sur mesure en affectant des ressources dédiées à chaque lambda de votre algorithme et le déployer en un clic sur tous les nodes associésDistributed commit log. Kafka est taillé pour transporter des messages non transformés entre producteurs et consommateurs en garantissant la transmission de données via des topics distribués
Prise en mainFacile. MD Dynamics Link est une plateforme unifiée pensée pour faciliter le déploiement et l'exploitation de streams: gestion simple du réseau de nodes, déploiement des streams en un clic, supervision intégrée. MD Dynamics Link se déploie en quelques minutesComplexe. Kafka est complexe à mettre en oeure et à gérer d'un point de vue opérationnel du fait de ses nombreux composants : brokers, producteurs, consommateurs et notamment Zookeeper utilisé pour la configuration et la gestion du cluster. La courbe d'apprentissage peut être longue ce qui contraint les entreprises à disposer d'une équipe d'ingénieurs expérimentés pour gérer le cluster; celle-ci souffre rapidement du syndrome de l'expert surchargé de demandes
ArchitectureDynamic Peer-to-Peer. La plateforme MD Dynamics Link est conçue sur une architecture entièrement décentralisée afin d'augmenter la résilience et les performances des streams avec une haute capacité de distribution et de parallélisme. Son architecture repose sur des nodes qui s'interconnectent dynamiquement en fonction des algorithmes à exécuter. Déployer plus de streams sur de nouveaux nodes n'impacte donc pas les performances des streams existants. Deux types de nodes sont à l'oeuvre, les managers gèrent le réseau, les agents exécutent les streams. Le Streams Store offre une vue unifiée pour développer, déployer, superviser et adapter la montée en charge de vos streamsCluster. Kafka repose sur un cluster qui implique que tous ses membres doivent être opérationnels et connectés en même temps (à minima pour respecter le nombre de réplica), ce qui induit une dépendance forte entre les noeuds (brokers) dont l'ajout/retrait peut impacter les performances globales. La gestion des topics devient vite complexe et limite les cas d'usage aux pipelines (échange de données)
Déploiement automatiqueNatif. Un stream (microservice, apis, etc) se déploie en un clic sur tous les nodes sélectionnés, pas besoin d'expert et un gain de temps considérableNon supporté. Pas de déploiement automatique d'un ensemble logique de topics représentant un service donné; les producteurs et consommateurs doivent être déployés manuellement
SupervisionNative. Tous les streams déployés sont automatiquement supervisés avec une QoS (Qualité de service) calculées sur 99.9999% et historisée pour chaque version exécutée (La QoS est calculée à l'heure sur 24 heures et au jour sur le mois). Chaque fonction lambda est supervisée individuellement et ses logs sont consultables sur l'IHM quelque soit le nombre de nodes et d'endpoints d'exécutionNon supporté. L'absence de supervision intégrée fait grimper le coût de setup de Kafka, en délai et en budget
Types de donnéesTous types. MD Dynamics Link supporte tous les types de données brutes (JSON, XML, POJO, binaires) et dispose d'un framework puissant pour développer vos services sans avoir à développer de classes Java spécifiques ce qui accélère considérablement le DevOpsAvro, Text, JSON. Kafka nécessite de dévlopper des clients spécifiques pour interconnecter les applications (producteurs, consommateurs)
Données dynamiquesSupporté. C'est l'essence même de la plateforme MD Dynamics Link (Meta Data Dynamics Link) de pouvoir transporter, analyser, stocker et requêter des données sous forme de messages ou d'événements sans contraintes sur leurs formats. Au sein des streams tout comme en datastores les données sont représentées sous forme de graphes dynamiquesNon Supporté. Kafka ne peut transporter que des données dont le schéma a été préalablement défini, ce qui limite les cas d'usage possibles
DistributionSupporté. La plateforme offre de nombreux patterns de distribution des calculs et du stockage: broadcasting, load-balancing, routage, groupes, etc. Le tout via une simple URL associée à chaque fonction lambda d'un stream. Il n'y a pas de limitation théorique sur le nombre de nodes et d'endpoints associables à une LambdaSupporté. Les données sont stockées sous forme de topics mais la distribution et distribuées via le systèmes de partitions distribuées mais qui peuvent rapidement être complexes à mettre en oeuvre avec l'augmentation et les besoins spécifiques des consommateurs. De plus, il ne peut pas y avoir plus de consommateurs que de partitions pour un topic donné
Gestion de la scalabilitéSupporté. La plateforme est conçue pour adapter dynamiquement sa charge de travail. Il est possible d'ajouter/retirer des nodes et des endpoints sans impacts sur les streams stateless comme statefull. La stratégie adoptée pour les streams statefull est la distribution par scopes plutôt que la redistribution (trop coûteuse en temps, en cpu, mémoire et réseau)Impacte sur les performances. L'ajout/retrait de brokers a un coût sur les performances à cause du protocole de synchronisation du cluster. De plus, Kafka redistribue les données en cas de modifications des partitions ce qui peut avoir un impact conséquent, jusqu'à l'indisponibilité du cluster le temps de la redistribution
Algorithmes distribuésSupporté. MD Dynamics Link permet la création et l'exploitation de vos apis, microservices et analytics sous forme d'algorithmes distribués exécutés sur de nombreux nodes et endpoints en associant chaque fonction lambda à une simple URL. Un microservice métier ne s'exécute pas au sein d'un seul node par exemple, mais exécute chacune de ses fonctions lambda sur un ensemble de nodes que vous sélectionnez pour une montée en charge sur mesureNon supporté. Kafka ne permet pas l'exécution d'algorithmes distribués et les fonctionnalités de transformation de messages restent limités à une logique de pipeline point-à-point
Datastores distribuésSupporté. Les données peuvent être distribuées massivement sur le réseau de nodes, écrites et lues en streaming ou en synchrones selon de nombreux patterns de distribution. Une requête en lecture s'effectue avec le puissant langage de requête sémantique SPARQL et peut s'exécuter sur de nombreux nodes et endpoints en parallèleNon supporté. Les données sont stockées sous forme de topics et distribuées via le systèmes de partitions. Les partitions ne peuvent être lues que séquentiellement et il n'est pas possible de sélectionner des données par requête
Séries temporellesSupporté. Les données peuvent être stockées en timeseries (graphes) avec différents niveaux de granularité (année, mois, jour, heure) dont la limite est l'espace de stockageNon supporté

Patterns

FeatureMD Dynamics LinkApache Kafka
Request/ReplySupporté. La plateforme permet d'implémenter facilement des apis et services synchrones, y compris impliquant des traitements asynchrones avant de retourner une réponseNon supporté
Request/Reply multi-destinatairesSupporté. La plateforme peut via une simple URL (topic) exécuter une requête sur de nombreux nodes et endpoints impliquant plusieurs destinataires. Toutes les réponses sont automatiquement agrégées dans la réponseNon supporté
Point-à-pointSupporté.Supporté
Publish/SubscribeSupporté. Tous les clients abonnés à un stream peuventSupporté

Cas d'usage

FeatureMD Dynamics LinkApache Kafka
Applications DistribuéesSupportéNon Supporté.
MicroservicesSupporté.Non supporté
ApiSupporté. Vous pouvez créer autant d'API que nécessaire sous forme de streams, gérer leur cycles de vie en créant des versions et les publier/retirer dynamiquement. Vos équipes peuvent gérer leurs propres APIs ou collaborer ensemble en partageant du codeNon supporté
Data StreamingSupportéSupporté.
Data MeshSupporté. Vous pouvez créer des streams pour diffuser dynamiquement des données sur requêtes de vos systèmes sourcesNon supporté. Kafka ne peut répondre à cas d'usage puisque le format des données doit être défini préalablement