Apache Storm contre SAP Smart Data Streaming
![[shutterstock.com:294081374, Sergey Nivens]](https://e3mag.com/wp-content/uploads/2017/07/Sergey-Nivens_294081374.jpg)

Les données déterminent le pouls des entreprises. Plus le flux de données est lent et faible, moins il est possible, par exemple, de fidéliser les clients, d'optimiser la commande des machines ou de réagir aux urgences. En effet, sans flux de données, l'analyse en temps réel, qui permet d'optimiser, de faire des recommandations et de prendre des décisions, reste lettre morte.
Architectures des adversaires
L'une des principales solutions de streaming est la solution conçue par Nathan Marz et transformée entre-temps en projet Apache sous le nom de Storm. Celle-ci permet un traitement garanti, robuste, distribué et tolérant aux pannes de données en temps réel dans des topologies pouvant être définies de manière dynamique.
La base de cette plate-forme est constituée de ressources matérielles dédiées pour un cluster Zookeeper, le Nimbus et les superviseurs. Le cluster Zookeeper s'occupe de la configuration distribuée des différents systèmes et fait désormais partie intégrante et solide de nombreux projets open source, comme Apache Hadoop.
Le Nimbus s'occupe de la répartition des différentes topologies au sein du cluster et donc de la mise à disposition du code du projet et des ressources nécessaires.
Une topologie orchestre différents objets sources de données (spouts) et les objets traitant les données (bolts) à travers un graphe de flux orienté. Le Nimbus lui-même est sans état et peut être redémarré sans problème.
Les superviseurs hébergent les différents workers. Chaque worker peut exécuter un ou plusieurs executors d'une topologie dans une JVM. Les superviseurs peuvent être ajoutés ou supprimés à tout moment lors de l'exécution de la plateforme.
Dans la version 1.0 d'Apache Storm, il est désormais possible de définir un serveur Pacemaker, afin de ne pas surcharger le cluster Zookeeper et de limiter volontairement la communication réseau.
Pour ne devoir déployer une topologie qu'une seule fois, il est possible d'utiliser un cache distribué. Cela permet par exemple d'adapter les fichiers de configuration au moment de l'exécution sans avoir à redémarrer la topologie.
Les données de flux peuvent être calculées à l'aide de fenêtres (Windows) dont la longueur et l'intervalle peuvent être définis. Cela permet par exemple de calculer des scénarios de flux classiques, comme les principales tendances des actualités sociales.
Au niveau le plus bas de l'architecture, le SAP Smart Data Streaming se compose du Streaming Server et d'un Streaming Cluster. Chacun des composants doit être installé sur un matériel dédié.
Un cluster de streaming se compose d'un ou de plusieurs nœuds (clients) qui constituent l'environnement d'exécution des projets de streaming. D'autres nœuds peuvent être ajoutés à volonté pendant l'exécution. Une fois le cluster installé et configuré, un projet peut être créé et exécuté au sein d'un espace de travail.
Un ou plusieurs espaces de travail peuvent être exploités sur un cluster, par exemple pour garantir une séparation du contenu des projets. En effet, un workspace définit un espace de noms dans le projet en cours et permet également de définir les droits d'accès.
Il en résulte automatiquement différents espaces de travail en raison des différents droits d'accès. Les projets sont la plus petite unité qui peut être exécutée sur le cluster et qui permet de définir la logique commerciale. Cela se fait dans un projet via les composants Stream, Window et Adapter.
Les trois composants sont utilisables en un seul ou en plusieurs exemplaires. Le flux et la fenêtre sont les unités de traitement des données entrantes. Les données qui entrent dans le système peuvent être transformées, enrichies ou agrégées à l'aide des flux sans état ou des fenêtres avec état.
Afin d'avoir l'état à disposition à tout moment, Windows utilise un stockage de base de données basé sur des stratégies. Les stratégies permettent de définir un nombre maximal de lignes ou une limite de temps pour garder les données à disposition.
Par exemple, les données qui entrent dans le système pendant cinq minutes peuvent être enregistrées, ce qui permet par exemple d'identifier une anomalie dans les températures de fonctionnement ou la pression d'une machine.
La réalisation du cache est définie par défaut comme une fenêtre glissante. Il est toutefois possible de transformer cette fenêtre en une fenêtre flottante à l'aide d'un mot-clé. Cela aurait pour conséquence que les données seraient automatiquement effacées après l'intervalle de temps ou de ligne défini et ne seraient plus écrasées en continu par roulement.
Les adaptateurs au sein d'un projet relient les flux et les Windows aux sources et aux points finaux de données. Les adaptateurs peuvent ainsi accepter des informations provenant d'événements sans effectuer d'autre opération ou effectuer l'une des actions suivantes : insert, update, delete, upset, safedelete.
Cela permet de connecter les sources et les points finaux de données les plus divers dans différents modes de fonctionnement. Il convient de noter que les flux, de par leur définition, ne peuvent pas modifier les ensembles de données précédents.
Compétences linguistiques
Apache Storm est basé sur Java et Python et offre un accès natif à l'ensemble des langages de Java. Il est également possible d'exécuter du code dans n'importe quel autre langage à l'aide de Distributed RPC. Un exemple populaire d'intégration d'autres langages dans le développement Java pur est l'utilisation de Python, par exemple lorsqu'il s'agit d'utiliser des bibliothèques dans le domaine de l'apprentissage automatique.
Dans ce cas, le programme Python est appelé directement à partir du code source Java et les données sont transmises directement. L'application Python effectue alors les calculs et renvoie le résultat au programme Java appelant, ce qui permet de ne pas interrompre le flux de la topologie.
SAP Smart Data Streaming utilise son propre langage pour programmer l'application de streaming. Le Continuous Computation Language (CCL) basé sur les événements est basé sur une syntaxe SQL et peut être étendu à l'aide de scripts CCL.
Pour rester dans l'analogie avec SQL, on peut se représenter CCL comme une exécution répétée à l'infini et dynamique de requêtes SQL, l'exécution étant stimulée par les événements des flux de données. Les scripts CCL permettent aux développeurs d'écrire des fonctions et des opérateurs personnalisés.
La syntaxe des scripts est alors similaire à celle du langage de programmation C. Tous les projets de streaming sont écrits en CCL, puis compilés et déposés dans le serveur de streaming sous forme de fichiers CCX exécutables.
Un exemple classique d'utilisation des scripts CCL est la définition d'opérateurs flexibles. Ceux-ci permettent de créer des dictionnaires personnalisés. Il serait alors possible, par exemple, de déterminer l'intervalle de temps entre deux événements définis par l'utilisateur.
Une belle fonctionnalité est la possibilité de débogage, qui permet de jouer des données de test contrôlées dans le système, d'une date à des flux individuels mis en cache.
Définition des projets
La génération de la topologie dans Apache Storm est basée sur une classe Java qui rassemble les composants nécessaires à l'aide de différents groupages (variations de routage). Ces regroupements régulent le flux des données et préservent les informations pendant les étapes de traitement.
Avec SAP Smart Data Streaming, les projets sont créés visuellement et les différents éléments sont enrichis par la logique. L'essentiel de la modélisation du projet de streaming dans le cadre de SAP Smart Data Streaming s'effectue à l'aide d'une syntaxe similaire à celle de SQL.
Liberté et lien : les écosystèmes
Le streaming de données ne constitue pas à lui seul une application. C'est pourquoi une plateforme de streaming vit aussi de son écosystème. Dans le cas d'Apache Storm, il s'agit de tout le zoo de la famille Apache et de tout ce qui peut être abordé d'une manière ou d'une autre avec Java. La flexibilité est donc très élevée et la capacité d'intégration est également immense.
Chez l'adversaire de SAP, la situation semble en principe un peu plus limitée, car la plate-forme vise en premier lieu l'écosystème propre à SAP. Toutefois, avec SAP Smart Data Streaming Lite, SAP Hana et par exemple Siemens MindSphere, de nombreux domaines d'application d'une entreprise sont déjà couverts.
La version SAP Smart Data Streaming Lite est intéressante, car elle permet d'externaliser le prétraitement des données sur un appareil embarqué. SAP étend ainsi de manière proactive sa plateforme de streaming à l'environnement IoT.
Aptitude à l'environnement d'entreprise
Les deux représentants de la plateforme de streaming sont adaptés à une utilisation dans un environnement d'entreprise. Les deux représentants maîtrisent sans problème toutes les questions relatives à la sécurité, à l'évolutivité et à la gestion des ressources, au support, à l'état de développement du projet ("open source"), aux accords sur les niveaux de service, à la capacité d'intégration avec les systèmes existants et à la maintenabilité.
SAP connaît parfaitement l'environnement des entreprises et son expérience lui permet de couvrir de nombreux scénarios et besoins. Pour Apache Storm, c'est exactement l'inverse. Le logiciel est issu de l'environnement open source et s'est développé dans l'environnement d'entreprise.
Avec la récente version 1.0, le projet a également atteint la maturité nécessaire. Avec le support de Kerberos, rien ne s'oppose non plus à une utilisation sécurisée dans le contexte de l'entreprise.
Même le point faible souvent évoqué du nimbus en tant que point unique de défaillance peut être résolu par une stratégie appropriée (exemple : Blog Hortonworks) peut être contournée.
Vue et recommandation
Les entreprises qui souhaitent mettre en œuvre une solution de streaming en interne, par exemple dans les domaines de l'industrie 4.0, de la télématique, de la santé ou du commerce électronique, peuvent miser aussi bien sur SAP Smart Data Streaming que sur Apache Storm. Les deux technologies peuvent remplir des tâches de streaming.
Dans le cas de la solution SAP, les points négatifs sont la nécessité d'un matériel dédié, la nécessité d'un système de fichiers distribué, les coûts supplémentaires pour les licences, le fait que la plateforme soit jusqu'à présent uniquement orientée vers l'écosystème SAP, la nécessité d'une courbe d'apprentissage supplémentaire pour CCL et l'absence d'une grande communauté de développeurs.
En revanche, Apache Storm souffre d'un manque de support natif pour la surveillance, qui est atténué par le vaste écosystème. On peut donc dire que SAP a mis en place une bonne solution, qui semble très complexe au début, mais qui peut être apprise. La variante open source est toutefois plus ouverte, plus flexible et moins chère.