IoT : comment mener un projet hybride ?

Article corédigé par Taha Snoussi et Yann Bilissor
Dans le cadre de ce Mois de l’hybridation, nous aborderons plusieurs questions autour de la gestion des projets IoT de manière générale mais plus particulièrement sur l’utilisation du compute (puissance de calcul) lorsqu’on dispose d’une flotte IoT. Dans certains domaines tels que l’IA par exemple, on se pose souvent la question de savoir s’il vaut mieux exécuter nos modèles Machine Learning dans le Cloud ou directement sur nos devices ? Cet article a donc pour ambition d’introduire les bases d’une bonne gestion de projet IoT dans Azure et de préparer les prémices d’hébergements d’une application (intelligente) exploitant une flotte IoT.Il existe plusieurs façons d’adresser un projet impliquant un ou plusieurs appareils IoT (Internet of Things) dans Azure. Elles varient en fonction du type d’appareil, de la taille et de la maturité du projet, de l’organisation de l’entreprise…
Dans le cadre d’un projet d’appareils IoT sur lequel les experts Cellenza sont intervenus, nous avons choisi pour les backends Azure le mode plateforme géré par l’équipe IT de l’entreprise. Ce choix audacieux guidé par les patrons architecturaux de l’entreprise nous a conduits vers la solution de gestion de projet IoT que nous vous présentons dans cet article.
Bien évidemment, en mode full CI/CD et à partir d’Azure DevOps, nous déployons notre Global IoT Platform. Cette plateforme est globale à toute l’entreprise et est donc partagée par les différents projets d’appareils IoT que nous supportons. Cette plateforme propose, entre autres, les services Azure suivants :
- Azure IoT Hub
- Azure DPS
- Azure Digital Twin
Les expériences passées d’utilisation de ces services en mode libre (non cadrée) par des projets d’appareils IoT ont pu donner des résultats hétérogènes dont l’exploitation s’avère compliquée.
Dans le cadre de nos projets IoT, nous avons choisi de cadrer cette utilisation.
Architecture
L’architecture simplifiée est la suivante :
Template REPO Git
Pour uniformiser l’utilisation de notre plateforme, nous avons proposé un set de templates de Repo Git permettant aux développeurs de démarrer plus rapidement et de cadrer leur adoption de la « Global IoT platform ». Ces REPO GIT contiennent chacun le mode d’emploi sous forme d’un fichier Readme, et gèrent les environnements de développement, de validation et de production.
Les composants construits par ces pipelines héritent du nom du projet de manière uniforme. Le code dans le pipeline qui récupère le nom du projet est :
project: ${{lower(variables['System.TeamProject'])}}
Le provisionnement dans Azure DPS
Le REPO contient le Pipeline Azure DevOps qui permet d’approvisionner un nouvel appareil IoT de manière automatisée et avec les données nécessaires au bon fonctionnement de la « Global IoT Platform »
L’ajout d’un modèle d’un appareil IoT dans Azure Digital Twin
Le REPO contient un modèle simplifié en format JSON d’un appareil IoT. Il fournit aussi un ensemble d’exemples de modèles de capteurs, ainsi que le pipeline de déploiement de ces modèles dans Azure Digital Twin.
Construction d’images Linux avec runtime IoT Edge
Le REPO contient les scripts et configurations nécessaires à un développeur pour compiler, à partir d’une image Rasbpian ou Ubuntu, une image pouvant démarrer de façon autonome sur un appareil IoT. Le REPO propose des paramètres de configuration ARM et AMD en 32 et 64 bits.
Une fois le pipeline configuré, il donne un lien de téléchargement de l’image produite en format xz.
Construction du module spécifique au projet compatible IoT Edge
Le REPO contient l’ensemble des sources d’un module IoT Edge développé en C# et permettant au développeur de démarrer rapidement la création d’un module IoT Edge spécifique. Le développeur aura à configurer le montage des fichiers drivers de l’hôte Linux pour interagir avec l’appareil IoT.
Manifeste de déploiement IoT Edge
La « Global IoT Platform » fournit au projet d’appareils IoT des modules intégrés dans le Manifeste de déploiement IoT Edge du template dans le REPO. Ces modules permettent de faciliter l’instrumentation des appareils connectés à la plateforme. Le développeur devra ajouter, dans le Manifeste de déploiement, les modules spécifiques à l’appareil IoT développé.
Le REPO contient également le pipeline permettant le déploiement du Manifeste dans l’Azure IoT Hub. Une fois l’appareil IoT démarré, il se configure selon la configuration déployée et sera prêt à l’emploi.
Guide du développeur
Dans un projet d’appareil IoT, un développeur aura donc à réaliser les étapes suivantes pour démarrer un nouveau cas d’utilisation :
- Création d’un projet Azure DevOps contenant les REPO Git Template. Le nom du projet sera aussi celui du modèle de l’appareil IoT dans Azure Digital Twin ;
- Configuration du modèle de l’appareil IoT dans le REPO indiqué et son déploiement dans Azure Digital Twin ;
- Lancement d’un Run du pipeline de construction de l’image Linux ;
- Récupération de l’image construite et de sa copie sur la carte SD configurée pour démarrer l’appareil IoT ;
- Développement d’un module IoT Edge à partir du REPO Git Template ;
- Configuration dans le REPO indiqué et son déploiement via son pipeline dans Azure IoT Hub.
A la fin de ces étapes, l’appareil est démarré avec les modules choisis et envoie ses télémétries dans la « Global IoT Platform ».
Aller plus loin sur l’hybridation
Maintenant que nous avons pu poser le cadre de développement d’un projet IoT at Edge énoncé au tout début de cet article, en abordant notamment les principales questions autour de la gestion du code, du packaging et releases des modules dans Azure, vous pouvez aller plus loin en déployant par exemple un modèle IA qui tournera directement sur le device sans appels API. De cette manière, vous vous affranchissez des éventuelles problématiques réseaux (latence, server indisponible….) et donc boostez la réactivité de vos produits IoT.
Vous souhaitez en savoir plus sur l’hybridation ? Retrouvez notre série d’articles autour de ce sujet :
- Defender for Cloud : la solution Microsoft pour la supervision de la sécurité
- Le poste de travail hybride
- Utiliser Spark avec Kubernetes
- Approche pratique d’Azure Arc Enabled Server
- Les applications hybrides
Et pour échanger sur le sujet, n’hésitez pas à contacter nos experts ou à nous laisser un message en commentaire !