Openinterconnect par exemple).
Ces patterns nous font clairement apparaître une architecture réactive au sens du « Réactive Manifesto ».
Il s’agit de :
Ces services sont de première importance car ils aident à soulager la logistique des objets et réduisent les coûts de fonctionnement. Certaines plates-formes sont même dédiées exclusivement à ces services.
DDS…) et les délivre aux traitements dans un protocole pivot. Ce dernier est en général un protocole publish and suscribe permettant aux traitements de recevoir les messages qui les concernent. Certaines plates-formes sont spécialisées sur ce service.
En général trois aspects principaux sont à traiter :
Le cœur des traitements temps réel se situe dans ce service. Il s’agit de fonctions de Complex Event Processing (voir la partie 1 de cet article), mais également de l’intégration d’un Business Process Manager dont l’état évolue avec l’occurrence d’événements reçus ou engendrées par le CEP. Le type d’usage étant, par exemple, de déclencher un processus de maintenance sur un équipement qui a envoyé un message de défaillance. Voire de constater différents faits successifs et d’en déduire une défaillance imminente, et de la signaler.
Le service de publication de canaux offre la possibilité de restituer un flux d’information engendré vers des consommateurs externes (envoi de message ou flux de données (syndication et API)).
On distingue généralement trois types de stockages de données :
Les technologies de stockage disposant de capacité élevée d'ingestion de données et de gestion du multi-schéma sont généralement utilisées dans les plates-formes à haute performance.
On distingue deux types de services (voir partie 1 se l'article) :
Du coté de la BI, les services peuvent adresser toutes les données, quelles soient chaudes, tièdes ou froides. Les requêtes effectuées sont de nature statistique (plutôt dans le froid) ou opérationnelles (conduite d’une flotte d’objets ou de leur environnement en temps réel ou légèrement différé). Il apparaît cependant de plus en plus d’usage où il est pertinent de mélanger froid, tiède et chaud pour obtenir des décisions de meilleure qualité. Les Lambda architectures sont souvent présentes dans les plates-formes IoT. Elles présentent une caractéristique extrêmement structurante des stockages et de leur interrogation.
Sur le pan du machine learning, les plates-formes se contentent de fournir des hooks vers du code spécialisé à construire en marge de la plate-forme. L'exemple emblématique de cette approche est celle de AWS IoT avec les services Lambda.
Les données présentes dans la plate-forme ne sont pas accédées en direct sur les stockages mais uniquement par des services d’exposition. De même, de l’extérieur, les utilisateurs peuvent injecter des messages dans la plate-forme via les API. Ces services, embarquent des fonctions (requêtes/injection de messages) préparées et exposent des bindings variés : REST, email, message… La sécurité est un point important que les plates-formes IoT se doivent de soigner sur les API exposées sur Internet.
La protection des donnés IoT est souvent encadrée par le droit. Ce sujet devient particulièrement important avec, par exemple, la volonté actuelle du législateur de transformer les données issues du quantified-self en données médicales. Mais pas seulement, la concentration de larges volumes de données « métier » expose l’entreprise à toutes sortes d’indiscrétions et d’attaques. Les plates-formes IoT sont donc particulièrement sensibles en termes de sécurité. Conscients de ce besoin, les concepteurs de plates-formes adressent principalement :
Étant donné que l’IoT est un système ouvert sur Internet, deux patterns majeurs soutiennent la sécurité de l’IoT :
Ces services peuvent être fournis par la plate-forme.
Les plates-formes tentent d’intégrer dans un même outil les fonctions d’administration de tous ces services. La tâche est particulièrement ardue car d’une part les objets techniques manipulés sont très variés (stockage, moteur de règles, CEP, passerelle télécom, API…) et ces objets étant intégrés s’influencent tous les un les autres (fonctionnellement mais également au niveau opérationnel). La fourniture d’une interface d’administration globale qui assure l’intégrité technique et fonctionnelle de la plate-forme est de très grande valeur, mais est très compliquée à concevoir et réaliser. Malheureusement, les offres sont encore assez embryonnaires sur ce plan.
L'exploitation (OPS) des plates-formes est complexe et nécessite un fort savoir faire pour les plates-formes haute performance. L'emploi d'un PaaS est à considérer pour un projet où l'aspect exploitation ne veut pas être trop prenant.
Il existe de nombreuses architectures applicatives pouvant offrir les services décrits. Un scénario possible est présenté sur la figure suivante :
On remarque une correspondance quasi directe entre les services fournis dans des blocs applicatifs implémentés par des middlewares. Chez OCTO, nous avons déjà réalisé des plates-formes basées sur une telle architecture applicative.
Dans la première partie de cet article, nous avons présenté les besoins de l’IoT et les services attendus pour les adresser. Dans le présent article, nous avons affiné le concept de « Plate-forme IoT » à travers des vues d’architecture fonctionnelle et applicative. Ces vues nous permettent à la fois de construire une plate-forme IoT et aussi d’analyser les offres existantes. Nous allons traiter ce dernier point dans la 3e et dernière partie de cet article.