Ces patterns nous font clairement apparaître une architecture réactive au sens du « Réactive Manifesto ».
Les services d’administration des objets
Il s’agit de :
Contrôler le cycle de vie des objets (installation, appairage entre l’objet physique et l’objet logique, changement d’affectation des objets…). Ce cycle est orchestré par la plate-forme.
Configurer les objets sur les plans techniques et fonctionnels et sur des critères de profil (série de fabrication, version de logiciel, service souscrit par le client...)
Maintenir en temps réel une base des objets et de leur configuration.
Surveiller et télé-maintenir les objets (surveillance des piles, mise à jour des firmwares ) à distance (On The Air)…
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.
Les services de passerelle télécom
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 protocole de transport, très souvent TCP mais pas seulement (UDP, protocoles propriétaires également), supportant des flux d'événements.
Le protocole de présentation : on y retrouve les éléments d'encodage des données, la gestion des schéma et la cryptographie.
Le protocole d'application coté objet (CoAP par exemple) et la traduction événementielle interne à la plate-forme.
Les services de calculs et de traitement des événements
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)).
Les services de stockage des données
On distingue généralement trois types de stockages de données :
Le stockage de données chaudes : c’est un mécanisme de cache qui permet de traiter les événements dans un horizon temporel rapproché (par exemple, le stockage d’un premier événement technique en attente d’un autre visant à créer un événement fonctionnel).
Le stockage tiède : c’est un mécanisme qui stocke les informations susceptibles d’être mutées. Par exemple, dans un service de logistique, il s’agit de l’objet transporté durant sa période de transport. Son état changeant de « embarqué », « en voyage », « débarqué », « livré »…
Le stockage froid : c’est un mécanisme qui stocke les informations (devenues) immuables. Par exemple, les données de l’objet transporté quand il a été livré, facturé et payé.
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.
Les services de data science et de Business Intelligence
On distingue deux types de services (voir partie 1 se l'article) :
La BI big data.
Le machine learning.
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 services d’API
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.
Les services de sécurité et de gestion d’identité
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 :
La traçabilité des événements (fonctionnels et d’administration) et des traitements.
L’authentification des objets émetteurs / récepteurs d’événements, souvent par certificat (AWS IoT par exemple).
Le chiffrement des canaux de communication ou des payloads (supportés par certains protocoles).
Le chiffrement des données stockées (au niveau métier ou infrastructure).
Le durcissement des accès aux API de requêtes (authentification forte, surveillance, audit).
Étant donné que l’IoT est un système ouvert sur Internet, deux patterns majeurs soutiennent la sécurité de l’IoT :
La fédération d’identité (nécessité d’apprécier son ouverture et ses risques).
La PKI.
Ces services peuvent être fournis par la plate-forme.
Les services d’administration
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.
L’architecture applicative
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.
Conclusion
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.