Les plateformes IoT dans le cloud et leurs avantages pour les développeurs
Le cloud apparaît comme une ressource essentielle dans le cadre de projet IoT tant le trafic de données peut être imprévisible. Comment les entreprises peuvent-elles tirer le meilleur parti des outils de leurs fournisseurs cloud ?
Les plateformes IoT dans le cloud ont mieux à offrir qu’un simple espace de stockage de données.
Inspirées des besoins en entreprise, ces briques logicielles couvrent quatre domaines fonctionnels :
- Enregistrement, administration et mise à jour des équipements connectés.
- Collecte et contextualisation des événements générés par les capteurs.
- Traitement de ces données pour les enregistrer, les convertir en transactions commerciales, les transmettre sous forme de commandes aux contrôleurs, ou toute autre combinaison de ces fonctions.
- Hébergement des composants applicatifs IoT.
Tous les fournisseurs de cloud public d’envergure proposent des outils pour traiter chacun de ces domaines. Dans certains cas, les professionnels de l’IT peuvent utiliser ces outils sans modifier leurs applications.
Dans d’autres, les équipes de développement doivent intégrer les outils aux applications. C’est souvent le cas dans le cadre de déploiement IoT dans des environnements industriels. Il est donc nécessaire de comprendre chacun des quatre domaines fonctionnels et le niveau d’imbrication qu’il requiert.
Enregistrer et mettre à jour les équipements
Les services IoT Core d’Amazon et Google ainsi qu’Azure IoT Hub de Microsoft permettent d’enregistrer, de gérer et de mettre à jour les objets connectés, tant qu’ils communiquent avec des protocoles Web (HTTPS, MQTT). Ils doivent aussi fournir des communications sécurisées entre appareils, permettre le déclassement de ceux qui sont mis hors service et accomplir d’autres tâches courantes. De la sorte, les applications IoT n’ont pas à gérer les terminaux.
Ces tâches peuvent être implicites dans la manière dont un professionnel de l’IT développe une application IoT, mais les administrateurs et les responsables de l’exploitation peuvent également ajouter ces processus avec un effet minimal sur le développement.
Contextualisation des événements IoT
La contextualisation consiste à s’assurer que l’événement est associé à l’état du système dont il est issu (une machine, un capteur, etc.). Aussi bien les développeurs, que les administrateurs et les Ops doivent considérer l’IoT comme une source d’événements. Les appareils envoient des signaux en réponse à des conditions réelles, et ces signaux activent ensuite les processus applicatifs. Dans certains cas, un événement est un signal ou une requête autonome. Dans d’autres, le contexte de l’événement est important. Par exemple, le signal qui indique qu’une porte est ouverte est traité différemment si celle-ci était auparavant fermée ou ouverte.
Les flux d’événements simples ne nécessitent pas forcément de contextualisation. Ils peuvent être traités par un pipeline de données, fourni par Amazon Kinesis, Google Cloud Pub/Sub ou, pour plus de flexibilité, Cloud Dataflow ou Microsoft Event Hub. Ces pipelines peuvent se connecter à des outils analytiques si l’objectif principal est de compter le nombre d’événements (le nombre de pièces finalisées passées devant un capteur sur une chaîne de fabrication par exemple).
Ces pipelines peuvent également nourrir des applications de traitement d’événements complexes. Certaines de ces applications peuvent être réalisées avec peu ou pas de personnalisation, mais il est évident que les résultats sont meilleurs en adaptant les logiciels aux signaux spécifiques issus des flux. Cette méthode d’ingestion a pour avantage de faciliter le traitement de quantités massives de données.
Parmi les outils de contextualisation proposés par les fournisseurs de cloud computing, citons les fonctions AWS Step, Cloud Dataflow de Google – qui gère également les pipelines – et Azure Logic. Ceux-ci peuvent être utilisés en dehors d’une application pour créer des événements composites à partir des flux bruts générés par les dispositifs IoT.
Toutefois, les logiciels et middlewares doivent être programmés pour supporter les agrégats composites. Pour une architecture applicative existante, il sera nécessaire soit d’utiliser des outils de contextualisation pour générer les événements composites attendus, soit de modifier le logiciel pour les prendre en compte.
Les événements proviennent d’un système réel cohésif et sont liés à son état. Les professionnels de l’informatique peuvent représenter une infrastructure physique complexe. Ils placent ensuite les événements dans la structure ou dans la requête pour obtenir des informations sur les appareils à surveiller. Des outils comme AWS IoT Things Graphs, Azure Digital Twin et Google Cloud Data Flow (avec des développements supplémentaires) facilitent la conception d’applications en s’appuyant sur des modèles d’objets réutilisables et prêts à l’emploi.
La gestion des événements par les plateformes IoT dans le cloud
Les plateformes IoT dans le cloud prennent en charge le traitement des événements de différentes manières. Certaines sont spécifiques à l’IoT, d’autres sont originellement conçues pour des applications plus traditionnelles. La différence réside dans la variabilité des flux. Les organisations peuvent mieux gérer les événements réguliers avec des solutions containérisées comprises dans les plateformes des fournisseurs ou à l’aide de services managés reposant sur Kubernetes.
L’utilisation des containers ou des IaaS traditionnels des fournisseurs de cloud n’est en revanche pas adaptée, aux traitements d’événements soumis à de fortes variations. De telles architectures risquent de manquer de ressources pendant les périodes de pointe et provoquer un gaspillage en périodes creuses. Dans ces conditions, l’hébergement de microservices ou de fonctions est la meilleure approche.
Par exemple, les FaaS Amazon Lambda, Google Cloud Function et Azure Function sont des outils appropriés. Le modèle économique associé permet aux entreprises de ne payer que les ressources qu’elles consomment. En revanche, cette approche serverless n’est pas recommandée pour les transmissions de données régulières, cela ne ferait qu’augmenter le coût.
Edge computing et machine learning embarqué
En principe, les services des fournisseurs de cloud ne sont pas disponibles localement. Cependant, il est possible d’utiliser certaines de leurs fonctionnalités d’Edge computing. AWS Greengrass offre plusieurs capacités pour déployer des algorithmes depuis des terminaux comme des Raspberry Pi et pour disposer d’une mise en cache des données collectées.
Les services cloud IoT Edge et Azure IoT Edge de Google offrent des capacités comparables. Cela permet une gestion localisée des événements en cas de coupure réseau ou d’irrégularité de connexion. Ces produits demanderont cependant une phase de développement personnalisée.