Écoconception des applications web et mobiles : développez durable !

Greenspector permet aux entreprises d’améliorer la performance énergétique de leurs applications web et mobiles. Grâce à un outil en ligne, la jeune entreprise de Nantes identifie les fonctionnalités gourmandes et révèle les choix de conception engendrant une surconsommation de ressources. Si le poids des centres de données dans la dépense électrique mondiale est – à juste titre – régulièrement évoqué, il est probablement temps de s’intéresser également à l’écoconception des logiciels. Et au fléau qu’elle entend combattre : les (« obésiciels » en français). Entretien avec , CTO de Greenspector.

À l’origine, trois consultants en TI sensibles à l’empreinte environnementale des projets informatiques. Affolés par la consommation énergétique croissante d’Internet, qu’un récent rapport de Greenpeace estime être [url="https://www.francetvinfo.fr/monde/environnement/video-cette-pollution-invisible-que-genere-internet_2011199.html"] le sixième plus gros « pays » consommateur mondial d’énergie, ils constituent un référentiel de bonnes pratiques et conseillent les entreprises sur le Green IT. L’adhésion des équipes n’est cependant pas automatique : « La performance énergétique des équipements IT est un aspect pris en compte depuis quelques années déjà par les constructeurs, explique Olivier Philippot. Le problème, c’est que le monde du développement logiciel considère toujours la ressource informatique comme abondante, et toujours moins coûteuse — une croyance entretenue par la loi de Moore, l’augmentation constante des débits de connexion, le développement de l’infonuagique et des services facilitant l’évolutivité horizontale des infrastructures.

Or, si le coût économique de la sous-optimisation des programmes informatiques n’est pas très significatif à l’échelle d’une seule application, la facture écologique grimpe à mesure qu’augmente le poids des technologies numériques dans notre quotidien. « Nous ne défendons pas une vision rétrograde, se défend Olivier Philippot. Simplement, on loue beaucoup les vertus des technologies ; sachons ouvrir les yeux sur leurs effets néfastes. Surtout qu’il est possible de s’améliorer! »

Mesurer le coût de chaque fonctionnalité et en évaluer l’intérêt réel

Greenspector est créé en 2010. La jeune entreprise a conçu un outil en logiciel-service permettant de mesurer précisément la consommation de ressources d’une application sur les principaux équipements du marché (tablettes et téléphones intelligents). Énergie, consommation du processeur, de mémoire, échanges de données via les différentes interfaces réseau de l’appareil et impact sur le niveau de charge de la batterie : certains systèmes d’exploitation permettent de récupérer ces informations, mais ce n’est pas toujours le cas. « Android, par exemple, fournit à ses utilisateurs un classement des applications les plus consommatrices en termes de batterie et de données. Il est possible de récupérer des métriques plus détaillées en effectuant un travail de recherche et de rétro-ingénierie. Obtenir ces données avec des terminaux Apple s’est révélé beaucoup plus ardu, mais nous sommes sur le point d’y parvenir. Et nous travaillons également sur la possibilité de mesurer l’efficacité d’applications destinées à l’Internet des objets (IoT), car le volume d’objets connectés croît rapidement et dépassera bientôt le volume des terminaux usuels. » Un véritable défi, car les cartes et systèmes d’exploitation sont très divers dans l’IoT. Greenspector a donc développé, pour les équipements Apple et les objets connectés, des sondes d’énergie qui surveillent directement les composants électroniques et exposent leurs relevés à travers une API. Les données sont ensuite analysées par la plateforme de Greenspector, hébergée chez OVH. Laquelle retourne les différentes métriques aux développeurs sous la forme d’un tableau de bord muni de différentes jauges.

« Nous avons d’abord fait de l’analyse de code, avant de nous rendre compte que ce n’était pas la meilleure approche. Les mesures fournies étaient très incomplètes, et pour cause : les requêtes et les éléments extérieurs comme les librairies, de plus en plus couramment intégrés au code, peuvent se révéler très consommateurs de ressources. Avec notre outil, le développeur sait précisément le coût de chaque fonctionnalité. Il est ensuite le mieux placé pour optimiser son code, ou identifier les coupables avec des outils de profilage si nécessaire. »

Souvent, la réflexion va au-delà de la seule optimisation du code. Car le fait de mesurer le coût de certaines fonctionnalités conduit parfois à… remettre en cause leur existence. « On teste souvent la performance des applications : temps de réponse, temps d’affichage, fluidité de l’interface, etc. Les métriques fournies par Greenspector permettent d’adopter une approche différente. Lorsqu’on raisonne en termes de coût, on s’aperçoit que certaines fonctionnalités sont très coûteuses au regard de leur intérêt réel. Les carrousels d’images, à la mode dans la conception web, bien qu’en général peu appréciés des utilisateurs, sont ainsi très gourmands. Un de nos clients a amélioré de 80 % la performance énergétique de son site en les supprimant! Pour prendre un autre exemple : on sait que plus de 90 % des utilisateurs ne consultent que la première page de résultats lorsqu’ils font une requête sur un moteur de recherche. Or, le moteur calcule systématiquement plusieurs dizaines de pages de résultats dès que vous avez cliqué. Ne pourrait-on pas imaginer d’autres façons de faire? »

Des facteurs de surconsommation nombreux, et parfois inattendus

L’explosion de l’Internet mobile (qui a dépassé l’Internet fixe depuis octobre 2016) conduit les développeurs web à faire des efforts sur la performance des applications web. Mais il reste beaucoup de « gras », selon Olivier Philippot. Et le recours massif aux outils de suivi n’a rien arrangé, multipliant les requêtes vers des serveurs distants pendant l’utilisation d’une application ou la consultation d’un site web. De plus, on ne se rend pas toujours compte du manque d’optimisation du code : « Des outils comme les systèmes de cache et de réseau de diffusion de contenu (CDN), ou des techniques telles que le fait de positionner les scripts JavaScript en bas de page, pour que les traitements se poursuivent discrètement, après le chargement des éléments principaux de la page, sont souvent utilisés. Autant de technologies ou « bonnes pratiques » qui améliorent la performance brute… et masquent les éventuelles lourdeurs dans le code des applications elles-mêmes. »

Par ailleurs, misant sur la puissance croissante des téléphones intelligents (dont les derniers modèles contiennent des processeurs pouvant aller jusqu’à 8 cœurs), les développeurs ont déporté beaucoup de traitements côté utilisateur. « Ce n’est pas une mauvaise idée en soi, car le lien entre le client et le serveur, ainsi que les échanges de données sont coûteux en énergie. » Mais là encore, il ne faut pas être dogmatique : lorsque les traitements ne sont pas liés à des données individuelles, il peut demeurer plus efficient de réaliser les calculs côté serveur, car ceux-ci seront partagés et mis en cache pour plusieurs milliers ou millions d’utilisateurs.

Du point de vue de l’efficacité énergétique de leurs applications, étonnamment les jeunes entreprises ne sont pas beaucoup mieux loties que les grandes entreprises, d’après Olivier Philippot : « Les grandes entreprises accusent une certaine dette technique, et exploitent des cadres d’application anciens, assez gourmands. Mais les méthodes agiles, plébiscitées par les jeunes entreprises et donnant lieu à des cycles de développement très courts, ont aussi leurs effets pervers. On utilise des cadres d’application qui permettent d’aller vite, comme Angular.JS, qui créent énormément de requêtes et d’événements. »

Difficile néanmoins de recommander tel langage plutôt que tel autre : « La compétence du développeur est un facteur clé. Mieux vaut connaître sur le bout des doigts PHP et l’utiliser correctement, bien qu’il soit réputé lourd, plutôt que d’exploiter HTML 5 + JavaScript de manière plus barbare. Il n’y a pas de solutions miracles, mais prendre l’habitude de mesurer la performance de son code, maîtriser et optimiser son environnement de développement est un bon début. » En outre, les langages comme le Java, promettant une gestion de la complexité matérielle (gestion de la mémoire, des couches basses…), laissent penser qu’ils sont plus performants. En réalité, ce n’est pas toujours le cas : ces langages haut niveau s’appuient sur environnement d’exécution, et notamment une JVM (machine virtuelle Java) exécutant un algorithme de [url="https://fr.wikipedia.org/wiki/Ramasse-miettes_(informatique)"]Garbage Collector[/url] (ramasse-miettes en français). Ce récupérateur de mémoire se charge de recycler, automatiquement, la mémoire allouée par un objet inutilisé. Une tâche fastidieuse, dont le développeur peut ainsi se délester, allégeant son code. Sauf que les algorithmes de ramasse-miette ne sont pas parfaits : les bogues occasionnant des fuites de mémoire ne sont pas rares, et les GC sont souvent trop fréquents et consommateurs de ressources. Si bien qu’en définitive, les langages de programmation les plus efficaces d’un point de vue énergétique sont les langages de bas niveau, les plus proches des instructions que comprend un processeur.

Pour les mêmes raisons, parce que les mécanismes d’abstraction consomment des ressources, on s’aperçoit que les applications développées nativement pour chacun des différents systèmes d’exploitation mobiles sont plus performantes que celles, hybrides, développées en s’appuyant sur la plateforme de développement logiciel Apache Cordova. Enfin, l’empilement de code est une source de lourdeur : on prend rarement le temps de nettoyer son code, si bien que les conditions inutiles et redondantes se multiplient dans le programme… occasionnant des traitements souvent inutiles.

La mobilité et le paiement à l’usage des infrastructures vont rendre les développeurs plus vertueux

Avec son outil unique au monde, la jeune entreprise de Nantes, qui emploie 14 salariés, a séduit les grands groupes : Orange, La Poste, LVMH, la SNCF ou encore Merck. Si Greenspector s’est concentré sur l’audit des applications mobiles, c’est parce que le bénéfice est plus immédiat pour les utilisateurs : « Qu’il s’agisse d’applications mobiles grand public ou d’applications métiers spécifiques, par exemple celles qui équipent les contrôleurs de train ou facteurs, la problématique de l’autonomie de la batterie est un puissant levier. Et https://greenspector.com/articles/2017-12-12-pourquoi-se-preoccuper-consommation-batterie-application/]les écosystèmes de Google et Apple commencent à promouvoir les applications économes. » À l’inverse, il est plus difficile de convaincre les services de TI d’optimiser le code d’applications hébergées sur leurs infrastructures internes ou chez un hébergeur : « Quand le gain d’un remaniement du code est de pouvoir éteindre quelques machines virtuelles sur une infrastructure qui en compte plusieurs dizaines ou centaines, il est difficile de motiver les équipes de passer à l’action. » Mais Olivier Philippot en est convaincu, le paiement à l’usage des instances infonuagiques, qui se répand de plus en plus, va rendre les développeurs plus soucieux de la performance énergétique de leur code. Car on pourra mieux quantifier les économies à la clé. C’est une question de maturité.

Et peut-être que demain des labels verront le jour pour encourager l’écoconception des applications. « Ce qui est aujourd’hui une démarche de rupture, vis-à-vis du modèle économique d’Internet, dont les coûts d’hébergement sont relativement faibles, rentrera dans les mœurs. La prise de conscience est en bonne voie. L’écoconception apparaît dans les cahiers de charges des projets web des grands groupes et organisations publiques. Et regardez le nombre d’articles s’inquiétant des conséquences écologiques du minage de Bictoins ou de l’usage à grande échelle de la technologie Blockchain. On réfléchit aux impacts des technologies, avant d’en imaginer des usages industriels. Ça, c’est nouveau! ». Une prise de conscience à laquelle Greenspector entend bien contribuer, en lançant d’ici quelques semaines un outil gratuit en ligne permettant à chacun de comparer l’efficacité énergétique d’une application ou d’un site.