Vers la mesure de la consommation énergétique des choix architecturaux d'infrastructure des applications web

Partager par e-mail

Réduire notre empreinte écologique est devenu une priorité pour sauver la planète. Selon un récent études environnementale sur l'informatique,l'empreinte écologique globale du numérique équivaut à un continent de deux à trois fois la taille de la France et à cinq fois le poids du parc automobile français. Les fabricants de matériel informatique optimisent l'efficacité de leurs équipements depuis 40 ans, tandis que les fournisseurs de logiciels font le mouvement inverse en empilant les couches d'applications les unes sur les autres. Peut-être que l'aspect purement immatériel du logiciel rend difficile la détection des émissions de carbone en bout de chaîne, mais c'est un fait !
Face à la menace environnementale globale, chaque entreprise est invitée à faire sa part pour mettre en œuvre des mesures visant à développer des solutions et des services logiciels respectueux de l'environnement. Berger-Levrault s'inscrit dans cette perspective. Toutefois, cela nécessite une analyse énergétique des plateformes, services et fonctionnalités existants. Cette analyse permettra d'identifier les bloatware, c'est-à-dire les logiciels qui utilisent des ressources système et de l'énergie de manière excessive, et de savoir pourquoi.

Le travail présenté ci-après n'est qu'une toute petite étape d'une ambition très large. Notre objectif final est de déterminer des lignes directrices pour concevoir et écrire des logiciels qui sont sobres en énergie par conception. De nos jours, les architectes de logiciels ont des tonnes de bonnes pratiques, de modèles et de directives pour améliorer l'interopérabilité, la maintenabilité, la réutilisabilité, la performance et ainsi de suite, mais il n'y a pas de modèle clair pour déterminer quels choix architecturaux sont économes en énergie. C'est la voie que nous suivons.

Introduction

Nous soutenons le développement du numérique et des technologies, le déploiement de la 5G, la cloudification, etc. Peut-être pourrions-nous faire quelque chose pour réduire l'empreinte de nos applications ? Ce serait déjà un premier pas ! La première chose à faire pour maîtriser le problème de la consommation d'énergie par les couches logicielles, c'est d'avoir les outils pour la mesurer. Dans notre cas, nous avons besoin de mesures et de chiffres qui nous montrent comment nos applications consomment pour comprendre et améliorer ce point.

Présentation du processus

Nous avons utilisé plusieurs outils existants pour analyser la consommation d'énergie, tels que Scaphandre, Prometeus, Grafana, Selenium. Figure 1 présente le processus proposé.

Figure 1 : Processus d'analyse de la consommation d'énergie d'application

Le processus présenté dans Figure 1 représente le pipeline de mesure de la consommation d'énergie, l'interaction entre les outils impliqués (Scaphandre, Prometheus, Grafana, Selenium), les acteurs et le moteur d'automatisation (script Bash).
Faisons une brève présentation des outils concernés :

  • Scaphandre est un logiciel open-source permettant de mesurer la consommation d'énergie d'un ordinateur ou d'un serveur informatique, mais aussi des services et des applications qui y sont exécutés.
  • Prometheus est un système open-source de surveillance et d'alerte. Il collecte et stocke ses métriques sous forme de données de séries temporelles, et les informations relatives aux métriques sont stockées avec l'horodatage auquel elles ont été enregistrées.
  • Grafana est une plateforme open-source pour la surveillance, l'analyse et la visualisation de métriques. Elle fournit des diagrammes, des graphiques et des alertes pour le web lorsqu'elle est connectée à des sources de données telles que Prometheus.
  • Selenium IDE est un environnement de développement intégré pour les tests Selenium. Il nous permet d'enregistrer nos interactions avec les interfaces d'applications web (scénario). De cette façon, nous pouvons créer et maintenir des tests automatisés sur les interfaces d'applications web et éliminer les tâches manuelles répétitives.

Mesurer la consommation d'énergie avec Scaphandre

Scaphandre est un agent de surveillance dédié aux mesures de la consommation d'énergie. Son objectif est d'aider à mesurer et donc à comprendre les schémas de consommation énergétique des services technologiques. Nous pensons qu'il s'agit d'un élément essentiel pour que l'industrie technologique puisse évoluer vers plus de durabilité. Scaphandre est disponible depuis fin 2020 sous forme de conteneur docker et exporte les résultats directement sur un écran de console ou un export Prometheus. Les mesures exportées (consommation de l'hôte, consommation par processus, etc.) sont ensuite importées dans Grafana pour une visualisation claire et personnalisable. La solution est bien documentée et est encore en développement, notamment pour une utilisation future sur les machines virtuelles (VM), en estimant la consommation à partir de données de composants émulés. L'outil ne fonctionne que sur Linux, et sur une machine réelle, il est impossible de le faire fonctionner sur une VM.

Pour voir comment obtenir des données précieuses dans un tableau de bord, vous voulez suivre la consommation d'énergie d'un processus ou d'une application donnée dans un tableau de bord et éventuellement définir des seuils dessus. Pour afficher les mesures, nous devons déjà avoir un serveur Prometheus en cours d'exécution, une instance Grafana disponible et avoir ajouté Prometheus comme source de données dans Grafana pour afficher nos mesures.

Outils existants de mesure de l'énergie.
Figure 2 : Outils de mesure de l'énergie existants (Scaphandre, Prometeus, Grafana)

La mesure dont nous avons besoin de l'exportateur Prometheus est écrite comme suit : "Scaph_process_power_consumption_microwatts". Cette mesure est un portefeuille de la consommation d'énergie de tous les processus en cours d'exécution sur l'hôte à un moment donné. Il s'agit d'une mesure Prometheus, vous disposez donc d'étiquettes pour filtrer les processus qui vous intéressent. Les étiquettes disponibles sont instance, cmdline, exe, emploi et PID.

Voici à quoi cela ressemble, en créant un panneau dans Grafana :

Exemple d'un panneau de visualisation dans Grafana.
Figure 3 : Exemple d'un panneau de visualisation dans Grafana

Preuve de concept : mesurer et comparer la consommation d'énergie d'une application en version autonome et en version de l'application dans un conteneur docker. 

Le cadre proposé nous a permis d'analyser la consommation électrique des applications avec ou sans docker. Nous avons travaillé avec l'application Spring Boot Pet clinicqui gère une clinique pour animaux. Avec elle, nous pouvons exécuter l'application en tant que fichier jar, ou nous pouvons l'exécuter en tant que conteneur docker. Après avoir exécuté Pet clinicnous avons lancé le Selenium pour interagir avec les deux versions de l'application en lançant des tests qui exécutent les fonctionnalités auxquelles l'utilisateur peut accéder manuellement.

Panneau de la consommation d'énergie de l'application.
Figure 4 : Panneau de la consommation d'énergie de l'application en Watts

La courbe verte montre la consommation d'énergie de l'application exécutée avec un fichier jar, tandis que la courbe jaune montre la consommation d'énergie de l'application exécutée dans un conteneur docker. La différence de consommation d'énergie entre les deux versions de l'application est très sensible, et le conteneur docker consomme nettement moins d'énergie que le fichier jar. (L'application conteneurisée n'atteint que 0,018 watts, alors que la consommation maximale de l'application non conteneurisée est de 0,077 watts).

Autres solutions

Nous avons choisi de travailler avec l'outil de mesure Scaphandre pour surveiller la consommation d'énergie d'un processus, mais il existe différents outils que nous pouvons utiliser en fonction de nos besoins, en voici quelques exemples :

  • PowerAPI est une bibliothèque offrant une API pour mesurer la consommation énergétique d'un processus système. Le calcul est basé sur la consommation d'énergie des composants matériels utilisés par le processus (CPU, mémoire, disque...) et utilise des formules énergétiques, sans aucun effort matériel, sans avoir besoin d'un wattmètre ou d'autres outils de mesure matériels pour calculer la consommation d'énergie.
  • Calculateur de carbone du site webCe site permet simplement en entrant l'url de n'importe quel site web de découvrir une estimation de son émission de carbone, c'est un outil pratique de sensibilisation mais qui donne très peu d'informations.
  • Analyse de l'informatique verte est une extension de navigateur qui permet de quantifier l'impact environnemental de l'utilisation d'une page web. Elle analyse la page sur laquelle nous nous trouvons et fournit automatiquement son empreinte environnementale et sa performance environnementale.

Conclusion et perspective

Dans cet article nous avons proposé un processus qui permet de surveiller la consommation énergétique d'une application avec ou sans docker. Le processus est basé sur plusieurs outils : Scaphandre, Prometeus, Grapfana, Selenium.
Nous avons réalisé une étude de preuve de concept qui montre la faisabilité de notre approche et confirme que l'application qui s'exécute dans un conteneur docker consomme moins d'énergie qu'une application s'exécutant avec un fichier jar. Cependant, ces expérimentations ont été réalisées pour une petite application. Dans les travaux futurs, nous prévoyons de prouver la faisabilité de l'approche pour les applications à grande échelle.

Par Marwa Slimene, Boubou Thiam Niang & Nawel Amokrane

Plus ...

Retour en haut