L’écoconception des logiciels : vers une sobriété « heureuse » du numérique

Reading Time: 6 minutes

Le numérique explose ! Nous consommons de plus en plus de services et d’informations via des formats numériques à tout moment dans tous lieux. Ces services et contenus sont de plus en plus nombreux et volumineux. La consommation de ressources qui résulte de cette omniprésence explose non seulement dans les datacenters, mais aussi de manière plus insidieuse et encore plus conséquente dans tous nos matériels déployés comme les ordinateurs, tablettes, smartphones, box, objets connectés … L’université de Dresde a ainsi estimé qu’en 2030, l’internet au sens large consommerait autant d’électricité que toute l’humanité en 2008 !

L’évolution la plus emblématique du numérique est à la fois la masse de données que nous produisons et conservons à chaque instant, mais également la miniaturisation des matériels permettant l’accès aux informations et services correspondants. Pour cela, nous avons continuellement besoin d’embarquer de plus en plus d’intelligence dans un matériel de plus en plus petit. Une telle évolution n’est soutenable que si nous avons recours à de nouvelles optimisations : les composants, les batteries, le refroidissement dans les datacenters,… mais aussi dorénavant le logiciel qu’on y insère ! Car l’entropie naturelle du logiciel existe bel et bien, et on parle d’ « OBÉSICIEL » !

Le phénomène d’ « obésiciel »

En effet, aujourd’hui on ne forme plus nos développeurs à faire attention à la ressource utilisée ; ni à l’école, ni en entreprise. L’objectif principal des équipes de développement est de délivrer dans un planning prédéterminé les fonctionnalités attendues (c’est déjà bien !). Pour être productif, on assemble, on intègre et on réutilise des bibliothèques existantes.

In fine, face à un logiciel trop lent, on choisit toujours d’ajouter de la puissance matérielle pour combler des lacunes d’efficience logicielle… Car rien n’est mesuré tout au long du cycle de développement, ce qui permettrait au moins de réagir suffisamment tôt pour que le coût de la correction ne soit pas rédhibitoire. Cet ajout matériel se fait au détriment des coûts, de l’autonomie, de l’écologie et finalement du bon sens.
Il est même possible d’avoir une lecture globale de ce sujet : c’est une forme de relocalisation du numérique, quand investir dans l’efficience logicielle localement permet de réduire le coût des matériels produits au bout du monde dans des conditions sociales, sanitaires et environnementales pas toujours acceptables par ailleurs.

Le projet Code Vert est né !

En tant qu’entreprise engagée dans un numérique plus vertueux, nous avions eu une intuition : en appliquant les principes de l’écoconception au process de « fabrication » d’un logiciel, il devrait être possible de réduire les consommations de ressources et d’énergie lorsque ce logiciel est utilisé. Encore fallait-il valider cette intuition, et c’est ce que nous avons fait dans le cadre du projet « Code Vert ».

Ce projet, lancé en 2012 a duré 30 mois. Il nous a permis de valider les gains liés à une meilleure utilisation des instructions de code dans un programme informatique (bonne pratiques « vertes » ou « Green Patterns »), et en même temps nous avons pu commencer à préciser les contours de la solution GREENSPECTOR destinée à accompagner le développeur dans sa mise en œuvre concrète de l’écoconception du logiciel. Depuis lors, nous avons étoffé l‘outil avec des capacités de mesure des consommations énergétiques, qui permettent à la fois de montrer les gains réels au développeur (rien de tel pour piloter des progrès que de mesurer ses résultats !), allant ainsi au-delà de l’application « théorique » d’une bonne pratique ; mais aussi de détecter des surconsommations impossibles à percevoir en analysant seulement le code source.

L’engagement des sociétés pour l’écoconception des logiciels

Quel intérêt pour une entreprise à s’engager dans cette voix de la sobriété logicielle ? Les exemples commencent aujourd’hui à se multiplier, et bientôt l’écoconception numérique aura vocation à être rangée dans les bonnes habitudes de travail de toute équipe de développement. Ainsi, Facebook aurait-il trouvé un modèle économique viable, il y a quelques années, s’il n’avait pas divisé par 2 la consommation électrique de ses serveurs, grâce à la mise en œuvre d’une stratégie d’optimisation logicielle lui évitant de construire un nouveau datacenter ?

Ou plus récemment sur son application mobile Facebook Light, destinée aux marchés émergents grâce à la réduction à la fois du volume de données échangées et de l’énergie (donc la batterie) consommée ? Plus près de nous, on commence à voir dans les appels d’offre numériques des grands groupes français des critères d’éco-responsabilité numérique, voire des référentiels de bonnes pratiques comme en entrant du marché.

Les enjeux et gains de l’écoconception des logiciels

Dans un monde où il est aujourd’hui inenvisageable (qui sait, cela changera peut-être un jour) de modérer à bon escient l’usage de nos mobiles, cette démarche répond finalement à une demande pressante du consommateur final que nous sommes tous : l’autonomie de nos matériels mobiles, embarqués, connectés que nous emmenons partout ! L’autonomie est en effet un des tout premiers critères de choix du smartphone. Les derniers arguments des constructeurs début 2017 mettent l’accent sur l’autonomie « la meilleure du marché » de leur dernier mobile. Ici, pas question de gagner de l’argent pour l’usager mais de gagner en mobilité, en productivité, en utilisabilité, bref en expérience utilisateur. L’optimisation du logiciel devient alors un rouage essentiel dans cette quête d’autonomie pour les constructeurs qui souhaitent prendre des parts de marché.

D’autres gains sont encore plus intéressants dans le domaine des objets connectés. L’écoconception des logiciels permet ici de réduire la fréquence de maintenance, d’augmenter la longévité d’un matériel déployé (parfois gourmand en ressources rares) avec un niveau de service supérieur. Le premier service qu’on peut rendre dans ce domaine de l’IoT est de connaître le profil de consommation électrique de l’objet, sur la base de l’usage réel (et non des données constructeur, quand il y en a…) pour l’intégrer de manière concrète dans le modèle économique de la solution. Cela passe obligatoirement par la mesure des ressources (énergie, data, mémoire, …) en fonctionnement réel. Au final, quelle que soit la motivation, on visera un service au moins aussi performant pour son utilisateur, pour un coût d’exploitation moindre, tout en limitant le stress lié aux besoins en énergie et en ressources – trop peu souvent renouvelables.

Ceux qui n’ont pas de gains visibles ou conséquents en regard des coûts potentiels de mise en œuvre pour appliquer cette écoconception numérique, peuvent désormais aussi se conformer à un référentiel de bonnes pratiques Green dans le web pour le moment pour communiquer sur une exemplarité et encourager leur « écosystème ». Nantes Métropole a été la première collectivité à labelliser son site internet dédié à la transition énergétique, afin de communiquer publiquement sur son intérêt pour cette démarche d’écoresponsabilité très concrète des sites web.

Les bonnes pratiques en matière d’écoconception des logiciels !

Comment avons-nous réussi à établir les bases d’une bonne pratique d’efficience de conception et de développement ? Dans le cadre du projet Web Energy Archive, l’association Green Code Lab a mesuré la consommation énergétique de plus de 700 sites web. Elle a pu observer qu’il y avait une corrélation entre la consommation de ressources et la complexité du site (scripts, nombre de requêtes incluses dans la page…). Elle a aussi effectué d’autres observations , qui ont notamment permis de montrer que la consommation moyenne d’une page dans un onglet minimisé, c’est à dire non affiché à l’écran et pas en interaction avec lui, représente 1 Watt de puissance appelée en moyenne sur un poste de travail qui pourtant n’affiche pas cette page (ce qui n’inclut même pas la consommation des requêtes envoyées aux serveurs et alimentant le trafic dans le réseau !). Éviter une telle consommation inutile peut pourtant se faire facilement, en demandant au développeur de prévoir un arrêt des traitements quand l’onglet du navigateur n’est pas visualisé par l’utilisateur.

En 2017, plus de 50 % des accès aux services et informations du Web se font sur appareil mobile, sous contrainte de réseau, de batterie du smartphones, de forfait data parfois limité… De quoi renforcer l’intérêt pour un éditeur de contenus web de faire attention à ses pages sous peine de perdre en route des « consommateurs » en quête d’instantanéité.
Les entreprises commencent ainsi timidement à intégrer cette démarche dans leur usine logicielle avec des gains intéressants qu’elles avaient oubliés ces dernières années. Dans la « digital factory » ou la « mobile factory », l’enjeu est de ne pas manquer la transformation numérique de l’organisation, en fournissant une expérience utilisateur sans faille, (traduire la performance et productivité en mobilité) clé dans la réussite du projet.

Conclusion

Mais rêvons un peu. Ne serait-il pas possible de pousser la logique plus loin, en essayant de « sauver la planète » du danger que le numérique dispendieux non contrôlé lui fait courir ? De quoi redonner du sens au travail du développeur, qui peut ainsi trouver enfin un moyen d’agir et d’œuvrer concrètement à son niveau pour limiter l’impact écologique de sa production, via son travail au quotidien. Un moyen de revaloriser le travail du « pisseur de code » déresponsabilisé et démoralisé ?

Certes, il est vrai que revoir tout le patrimoine applicatif d’une organisation pour réaliser une rétro-écoconception n’a pas toujours de sens économique à court terme. Mais l’histoire numérique ne fait que commencer, et les chapitres que nous allons désormais écrire seront bien plus nombreux que les chapitres déjà écrits. Parions que les entreprises n’auront pas d’autre choix que d’intégrer, pour être « compétitives » dans un monde aux ressources limitées, cette nouvelle dimension de frugalité chez les donneurs d’ordre et chez les maîtres d’œuvre numériques. Comme le propose Pierre Rabhi plus largement dans son ouvrage, on se dirigera alors vers une sobriété « heureuse » aussi pour le numérique !

WebP, PNG, JPEG : Energy battle sur Android

Reading Time: 5 minutes

Webp est le nouveau format d’image proposé par Google, qui promet une réduction de 30% à 80% de la taille de transfert. De plus, le format serait plus adapté aux processeurs actuels. Mais qu’en est-il de la consommation d’énergie sur l’appareil de l’utilisateur ?

Le format Webp

Webp est un format matriciel comme le PNG ou le JPEG. Il supporte des compressions sans perte (lossless) comme le PNG mais aussi avec perte (lossy) comme le JPEG.
Ce format est actuellement pris en compte par Chrome, Chrome pour Android, et Opera.
Cependant la controverse vient de la fondation Mozilla qui considère que le format n’offre pas autant d’avantages qu’annoncé.

Au passage, Mozilla travaille de son côté sur une optimisation du JPEG : MozJPEG. Voici un lien pour comprendre comment gérer ces problèmes d’implémentation : Google WebP
Mais qu’en est-il effectivement de l’efficience de ce nouveau format ? La mesure de l’énergie consommée pour afficher ces images va permettre de répondre à cette question !

METHODOLOGIE DE MESURE

Pour cela j’utilise mon outil favori (ce n’est pas une surprise), à savoir le service Power Test Cloud de GREENSPECTOR.

La méthodologie est la suivante :

  • La mesure est faite sur un smartphone réel, un Nexus 6, hébergé et géré par GREENSPECTOR ;
  • On lance Chrome et on accède aux exemples d’images donnés par Google ;
  • On itère 2 fois, parce que 2 mesures valent mieux qu’une.

Avant d’aller plus loin, nous pouvons émettre nous-mêmes quelques critiques sur notre protocole :

  • On utilise les images de Google : sont-elles vraiment représentatives ? On supposera que oui.
  • On évalue le coût unitaire d’affichage des images et non pas leur intégration dans une page web plus globale. En même temps, on est là pour ça.

Comparaison des formats : Webp (lossless et lossy) versus PNG

Pour cet test, nous avons pris les 3 premières images de la galerie Google.
Vérifions d’abord la taille des images :

Le résultat est très net : les images Wbep sont en moyenne 27% plus légères que le PNG, et même 70% pour le lossy. Les promesses sont pour l’instant au rendez-vous. Mais regardons l’énergie consommée sur le smartphone pour lorsqu’il affiche ces images dans le navigateur :

Aïe. En moyenne, il y a WebP engendre 1,5% de consommation d’énergie supplémentaire. Il y a un gain uniquement pour l’image 3 – et encore, en comparons le Webp lossy au PNG. Pour l’image 1 on a une perte de 3,8%. Enfin on constate que le Webp lossy avec transparence est encore plus consommateur que le Webp lossless. C’est surprenant !

Au final, le PNG est plus intéressant pour la consommation d’énergie. Si vous vous focalisez uniquement sur les gains réseaux, alors WebP est plus intéressant. Le constat est encore plus fort pour le Webp lossy avec transparence. Cela peut s’expliquer par un algorithme de rendu moins efficient que le PNG, qui annule tous les gains d’énergie apportés par la réduction de l’impact réseau.

Comparaison des formats « lossy » : Webp versus JPEG

Pour ce test, nous avons testé les 5 images de la galerie de Google
Vérifions d’abord la taille des images.

Là aussi la promesse est tenue : le gain de taille apporté par Webp est en moyenne nos 30%. Vérifions maintenant la consommation d’énergie.

Dans 4 cas sur 5, les gains apportés par Webp par rapport à JPEG sont intéressants (entre 2% et 8%). A cause du cas particulier de l’image 4, la moyenne des gains s’établit à 2,4%.

Si on regarde plus précisément les courbes de consommation d’énergie, on constate effectivement que le pic de consommation est plus bas pour Webp :

On remarque globalement que Webp sollicite moins la batterie que JPEG.

CONCLUSION

Il est clair que le format Webp permet d’obtenir une taille d’image plus faible que les autres formats. C’est bénéfique pour le réseau internet en général, les opérateurs telecom en particulier, et les utilisateurs finaux tout spécialement.

Nous avons aussi identifié des gains d’énergie allant jusqu’à 8% pour les images lossy par rapport à du JPEG.
Cependant dans certains cas minoritaires pour le lossy et dans tous les cas pour le lossless, nous avons identifié des consommations d’énergie plus importantes pour Webp que pour les formats traditionnels. Si vous voulez des images lossless (par exemple pour des logos, des images avec du texte…), alors le PNG reste meilleur en termes d’énergie.

Explication : comme les images sont plus légères, il semble que la cellule radio soit moins sollicitée et donc qu’il y ait moins d’énergie consommée. Cependant quand on regarde l’occupation CPU, Chrome passe du temps dans le traitement pour la décompression du Webp. Sur un smartphone, les gains sur le réseau sont donc limités, voire annihilés, par le coût du traitement CPU supplémentaire.

Conclusion de la conclusion :
Les gains de taille apportés par le Webp sont réels pour le réseau. Associés à une réduction – certes faible – de la consommation d’énergie, ils font de WebP un format intéressant pour l’efficience en tant qu’alternative au JPEG. En revanche, pour l’alternative au PNG, il faudra attendre.

Enfin notons que dans ce domains les travaux sont nombreux. Ainsi pour l’alternative au JPEG, une convergence vers d’autres améliorations technologiques comme le HTTP2, pourrait permettre des gains plus importants encore.

Power Test Cloud, ou comment un non-expert peut mesurer la consommation énergétique de son application web ou mobile

Reading Time: 4 minutes

Vous êtes Développeur Android ? Web Designer ? Ou non développeuse comme moi ?
Savez-vous combien d’énergie est consommée par votre site web ou votre application mobile ? Et surtout, savez-vous comment les optimiser pour gagner en efficience ?
GREENSPECTOR intègre la fonctionnalité qui vous permet en quelques clics de lancer un test, de mesurer la consommation d’énergie et ainsi d’auditer votre application : le Power Test Cloud.

Continue reading « Power Test Cloud, ou comment un non-expert peut mesurer la consommation énergétique de son application web ou mobile »

Les sites web des candidats aux Présidentielles respectent-ils votre smartphone ?

Reading Time: 3 minutes

L’objectif de cet article n’est pas de vous donner des consignes de votes, rassurez-vous, mais de vous sensibiliser sur la base d’un thème d’actualité, à la consommation du numérique et aux moyens d’agir sur ce média de plus en plus utilisé mais aussi de plus en plus impactant en terme de consommation de ressources et d’énergie.L’élection à la Présidence de la République Française approchant à grands pas, nous avons mesuré la consommation en énergie et l’impact sur l’autonomie des sites internet des 11 candidats à l’élection présidentielle.

Continue reading « Les sites web des candidats aux Présidentielles respectent-ils votre smartphone ? »

Android : faut-il utiliser HashMap ou SparseArray ?

Reading Time: 7 minutes

La maîtrise de la consommation énergétique est un domaine de plus en plus important dans le développement d’applications mobiles. Les dernières versions d’Android intègrent par exemple un mode doze dans lequel le smartphone interrompt les traitements et ne les réveille que périodiquement, mais cela n’est pas suffisant et les développeurs d’applications ont également un rôle à jouer.
À l’échelle d’une application, il est possible d’améliorer la consommation énergétique en commençant par bien choisir ses structures de données.

Continue reading « Android : faut-il utiliser HashMap ou SparseArray ? »

La mesure en continu dans le devops, ou comment piloter facilement l’efficience de ses applications

Reading Time: 5 minutes

Le « time-to-market » des services numériques est devenu crucial pour la compétitivité des entreprises. Les pratiques actuelles de développement vont donc dans le sens d’une plus grande agilité, et de déploiements toujours plus rapprochés..

Continue reading « La mesure en continu dans le devops, ou comment piloter facilement l’efficience de ses applications »

Quel est le coût mémoire d’une application Cordova ?

Reading Time: 5 minutes

Si vous avez décidé de réaliser une application mobile, vous vous êtes peut-être intéressé à Apache Cordova. Cette solution permet à un même code de s’exécuter sur les plates-formes mobiles actuelles (Android, iOS, Windows) et ainsi de publier votre application sur les différents app stores sans avoir à maîtriser chacune des contraintes spécifiques à chaque plate-forme.

Continue reading « Quel est le coût mémoire d’une application Cordova ? »

La semaine du développeur éthique et responsable

Reading Time: 4 minutes

Le logiciel est partout. Oui, désormais le logiciel a un impact direct sur le monde dans lequel nous vivons : uberisation, digitalisation… mais stoppons ici la buzzwordisation… Nous, développeurs sommes les architectes d’un monde virtuel au service du réel. Nos actions ont un effet sur nos sociétés et sur nos vies. Si nous acceptons d’être crédités des effets bénéfiques, alors soyons capables de voir aussi les effets néfastes.

Exclusion sociale, impacts divers sur l’environnement, fracture numérique… sont des effets bien réels des logiciels que nous produisons.

Mais avons-nous le choix face au demandes de nos utilisateurs et des clients, et aux contraintes classiques de coût et de délai ? Pouvons-nous coder différemment ? Eh bien oui, et c’est le choix qui est fait par de nombreuses entreprises ou développeurs individuels : bénévolat comme Code for America, écoconception de logiciel public… Être développeur éthique et green c’est possible, mais comment, très concrètement, faire cela au jour le jour ?

Lundi : (Re)pense à l’impact du logiciel

Le Lundi, c’est généralement le jour des poker planning, des rétrospectives et surtout du moment où l’on va discuter des tâches de la semaine. Un logiciel responsable, c’est avant tout un logiciel qui respecte l’environnement et l’homme. Le début de semaine est le bon moment pour repenser à toutes ces fonctionnalités que tu vas développer. Sont-elles toutes vraiment nécessaires ? Est-ce que ce choix d’’ergonomie ne va pas exclure une partie de la population ? Est-ce que tu vas intégrer des éléments qui vont à l’encontre des intérêts de l’utilisateur (tracking…) ? C’est le moment d’en discuter avec ton client ou avec le Product Owner. Ne t’inquiète pas, l’éthique et la responsabilité sont contagieuses.

Mardi : Passe en mode « slow connection »

Non, tu ne dois pas rester dans une tour d’ivoire avec ta connexion fibre et 4G. De nombreux utilisateurs ne disposent pas d’une couverture 4G (zone rurale, pays en développement…). Ton application ou ton site web est peut-être totalement inutilisable avec une connexion 2G ? Rien de plus simple pour vérifier cela: passe ton téléphone en 2G et navigue sur ton site. Passe la journée comme cela, et tu auras sûrement de l’empathie pour ton utilisateur nomade dans le Larzac.

Mercredi : Passe en low-tech

Tu te réjouissais de retrouver une bonne connexion réseau ? Mais as-tu pensé que tes utilisateurs n’ont pas forcément le dernier appareil à la mode, genre un Galaxy S28 ou un iPhone 15 ? Toi tu développes sur une plateforme de tueur, sur un émulateur de killer, effectivement ça tourne vite. Mais aujourd’hui, passe en mode low-tech : prends un smartphone avec moins de 2 CPU, emprunte le PC du stagiaire pour visiter ton site… Les outils de développement de Chroma sont aussi très utiles. Tu peux émuler une visite avec un seul CPU. Si après cela tu allèges ton appli, alors non seulement tu auras plus d’utilisateurs potentiels, mais en plus tu auras évité de créer chez les autres un impérieux désir de renouveler leur matériel parce que vraiment ça rame trop. Hé oui, l’obsolescence n’est pas que programmée par les fabricants.

Jeudi : Perd tes sens

Tu es peut être un super développeur avec la pleine capacité de tes 5 sens, alors simule la perte d’un ou de plusieurs de ces précieux sens. Utilise un lecteur d’écran, ferme les yeux et écoute ton site. Pas simple ? L’accessibilité est importante, sinon tu exclus toute une partie de la population. A la fin de la journée, tu auras sûrement envie d’appliquer quelques règles d’accessibilité supplémentaires. Pour cela, une référence : Accessiweb.

Vendredi : Ne mets pas en prod, mesure d’abord la consommation d’énergie

Bon d’abord, on ne met jamais en prod un vendredi (en cas de doute, tu peux vérifier ici). Donc autant terminer les vérifications utiles ! Depuis le début de la semaines, tes actions ont sûrement réduit l’impact global de ton application sur l’environnement. Mais pour en être sûr, et surtout pour éviter de futures dérives, il faut ME-SU-RER. Hé oui, même si tu penses que les consos de ressources c’est pas un problème, ça va passer parce que tu as fait super-gaffe… je suis au regret de te dire que l’intuition ne suffit pas dans ce bas-monde. Et tes utilisateurs, eux, surveillent de très près le niveau de leur batterie et leur forfait data. Enfin, si en bon adepte de la perf tu te focalises sur la rapidité d’affichage, tu risques fort de passer à côté d’une réduction d’énergie pourtant tout-à-fait possible… Et même, tu risques d’augmenter les consommations, ce qui n’est vraiment pas une bonne idée. Alors, mesure puis agis.

Samedi : Git pull request la bonne parole

Comme coder c’est ta passion, tu travailles le week-end sur un side project libre open source. Pourquoi ne pas essayer de proposer des améliorations que tu aurais apprises cette semaine à la communauté ? L’open source est un environnement propice pour appliquer toutes ces bonnes pratiques.

Dimanche : Sois fier d’être responsable

D’habitude lors du repas de famille, « toi qui travailles dans l’informatique » on te parle des derniers problèmes d’imprimante de Tonton Robert. Ben oui, ils n’ont jamais rien compris à ton métier. Faut dire que quand tu as essayé d’expliquer les nouveautés géniales d’Angular 2 à Tata Agathe, tu avais un peu plombé l’ambiance.

Mais cette fois, c’est différent. La semaine qui vient de s’écouler a changé quelque-chose. Aujourd’hui, tu peux raconter fièrement ce que tu as fait, parler de tes bonnes actions, de leurs effets bénéfiques très concrets pour la société et l’environnement. Cette fois, je suis sûr que tu verras le visage de tes interlocuteurs commencer à s’éclairer, avec peut-être même au fond de ces regards approbateurs, comme l’apparition d’une marque de respect pour ce métier de développeur que tu assumes désormais si fièrement. La semaine d’après sera définitivement différente.