Création et mise à l’échelle rapides de projets IoT avec une architecture sans serveur

Illustration : © IdO pour tous

Vous avez donc lancé un nouveau produit IoT, peut-être en utilisant le framework IoT fourni par AWS, Azure ou un autre fournisseur cloud majeur, et vos appareils peuvent désormais envoyer et recevoir des données depuis le cloud. Maintenant, comment traitez-vous ces données pour obtenir des informations précieuses, telles que la télémétrie sur l’état de l’appareil ou le suivi du comportement des utilisateurs ? Il existe différentes manières de mettre en place une infrastructure de traitement de données dans le cloud qui font des compromis entre contrôle et complexité. L’architecture sans serveur est en fin de compte un principe de conception logicielle qui vous permet de créer, de mettre à l’échelle et d’exécuter des services sans gérer l’infrastructure, et MistyWest est ravi de la façon dont ce modèle « sans serveur » peut permettre aux équipes de créer et de faire évoluer rapidement des solutions cloud.

Pour vous aider à comprendre comment cela s’applique aux solutions de produits IoT, nous fournissons l’aperçu suivant des différents modèles d’architecture et quand vous devriez envisager de passer sans serveur pour votre projet.

Utiliser une machine virtuelle

Maintenant, la méthode traditionnelle de configuration d’un pipeline cloud, et la méthode recommandée si vous souhaitez plus de contrôle, consiste à faire tourner une machine virtuelle (VM) dans le cloud pour exécuter votre code de traitement. Les machines virtuelles Azure, AWS EC2 ou les moteurs de calcul GCP sont des options courantes. Vous obtenez un ordinateur virtuel qui peut exécuter un code similaire à celui exécuté sur votre ordinateur personnel. Cependant, la limitation de cette route est que vous manquerez rapidement de puissance de traitement dans une seule machine virtuelle, en particulier si vous gérez des données provenant de milliers d’appareils IoT.

Pour obtenir plus de puissance de traitement, vous pouvez ajouter plus de machines virtuelles et répartir le travail de traitement entre plusieurs ordinateurs. Des outils comme Kubernetes et Docker Swarm vous permettent d’orchestrer les charges de travail de traitement sur de nombreuses machines, et les fournisseurs de cloud proposent des services comme AWS Elastic Kubernetes Service et Google Kubernetes Engine pour prendre en charge l’orchestration des charges de travail sur plusieurs machines dans le cloud. Des services comme AWS Elastic Beanstalk ou Azure App Services automatisent la configuration et la mise à l’échelle des infrastructures de développement Web courantes telles que Django, Rails et Node, et constituent d’excellents services de point de départ pour vous aider à les gérer.

Cependant, la mise en place et la configuration d’outils d’orchestration peuvent être complexes, nécessitant beaucoup de temps et d’expertise qui n’apportent pas directement de valeur à vos clients. Si vous souhaitez créer un prototype rapidement pour offrir de la valeur à vos clients et que vous savez que votre solution évoluera, le sans serveur peut être la solution.

Qu’est-ce que l’architecture sans serveur ?

L’architecture sans serveur vous permet de décharger complètement la gestion des serveurs vers les fournisseurs de cloud tout en vous concentrant directement sur le code de votre application. L’un des sous-ensembles d’architecture les plus courants est Fonctions en tant que service (Faas). Mais l’architecture sans serveur offre bien plus – des bases de données et des systèmes de file d’attente aux services de traitement des événements, chaque fournisseur de services cloud offre une grande variété pour répondre à vos besoins.

Avantages du sans serveur

  1. mise en chargeL’un des avantages est que les plates-formes sans serveur ont tendance à facturer en fonction de la fréquence d’exécution et de la durée des fonctions sans serveur, de sorte que vous ne payez que pour le temps de calcul que vous utilisez. Cela peut réduire les coûts pendant le développement tout en construisant de manière à évoluer automatiquement lors du lancement.
  2. Une réponse rapideLes fonctions sans serveur ont également tendance à répondre rapidement aux pics de demande, car la plate-forme augmente automatiquement la quantité de puissance de calcul disponible pour exécuter les fonctions, puis la réduit lorsque la charge est réduite. Cela produit une utilisation efficace des ressources, en déployant la puissance de calcul uniquement lorsque cela est nécessaire.
  3. Options de langue: Il existe un bon support pour une variété de langages de programmation, vous pouvez donc très probablement créer vos fonctions sans serveur dans le langage de votre choix. Par exemple, AWS Lambda prend en charge nativement Java, Go, PowerShell, Node.js, C#, Python et Ruby, et fournit une API Runtime pour permettre l’utilisation d’autres langages de programmation. Azure Functions prend en charge C#, Javascript, F#, Java, Powershell, Python et Typescript.
  4. Prévention des bogues: Construire avec des fonctions sans serveur crée nécessairement un système sans état et sans hôte, ce qui peut simplifier le raisonnement sur le système et éviter certains bugs complexes autour de la gestion des états.
  5. Pipeline de données: avec votre infrastructure IoT, vous pouvez configurer des déclencheurs de pipeline de données automatisés et pilotés par des événements et un stockage de base de données. En accrochant en plus des cadres de visualisation ou en développant votre tableau de bord interne, vous pouvez suivre les progrès immédiatement.
  6. Payez moins cher: Si vous avez une machine virtuelle lancée, vous payez, que vous utilisiez la totalité de ces ressources ou qu’elle soit simplement inactive. Ce n’est pas idéal si votre appareil IoT envoie rarement de petits paquets de données, et même si vous avez des milliers d’appareils qui transmettent constamment des données, il y aura beaucoup de temps d’inactivité entre les paquets, ce qui sera assez inefficace. L’utilisation d’un framework sans serveur vous permet de payer seulement pour ce que vous utilisez, et gérera la mise à l’échelle pour vous sans aucune modification de configuration nécessaire – que vous ayez un appareil ou un million d’appareils. De plus, si vous utilisez Azure, comme proposé à l’origine dans l’article Serverless in the Wild, vous pourrez réduire considérablement vos démarrages à froid en lui faisant prédire les invocations.

Inconvénients du sans serveur

  1. Moins de contrôleL’un des inconvénients de l’utilisation d’une plate-forme sans serveur est que vous obtenez un contrôle moins précis de l’instance exécutant le code, car vous n’avez pas de contrôle sur la configuration du matériel sous-jacent. Les limites de la puissance de traitement, de la mémoire et du temps de traitement dans les environnements sans serveur peuvent être une limitation, alors que dans une machine virtuelle, vous pouvez évoluer verticalement assez fortement.
  2. Longue latenceUn autre inconvénient est que, comme la plate-forme gère l’augmentation de la puissance de calcul disponible (c’est-à-dire la rotation de plus de machines virtuelles pour exécuter des fonctions) pendant les pics de demande, vous avez moins de contrôle sur la latence qui se produit lorsque les utilisateurs doivent attendre qu’une machine virtuelle démarre. . Cela peut parfois entraîner une longue latence lors de la première requête, connue sous le nom de “latence de démarrage à froid”, ce qui peut être un problème dans les applications très sensibles à la latence, bien que ce ne soit généralement pas un problème.

Architecture élastique

Il existe un certain nombre de comparaisons de coûts autour de l’architecture sans serveur disponibles sur le Web ; nous avons trouvé que Serverless Transformation on Medium et les analyses de The Burning Monk étaient très utiles. L’architecture sans serveur est hautement applicable aux solutions IoT et gagne en popularité. Avec les milliards d’appareils IoT utilisés dans le monde aujourd’hui, il est essentiel de disposer d’une architecture élastique pour passer rapidement en production. Construire avec une architecture sans serveur vous permettra de prototyper rapidement, d’échouer rapidement et de battre vos concurrents à long terme – faites juste attention à toutes les propriétés sous le capot afin d’en tirer le meilleur parti pour votre argent.

Leave a Comment

Your email address will not be published. Required fields are marked *