De l’éco-conception logicielle (1/2)

Green-Eco-Friendly-Icons-leaf-plug

Une tendance actuelle dans le monde de l’entreprise est le respect de l’environnement. Le monde de l’informatique n’y est pas étranger. Dans ce premier billet, je tâcherai d’expliquer ce qu’est le green IT dans son acceptation la plus commune. J’aborderai ensuite le rôle des développeurs dans cette tendance avec l’éco-conception logicielle, ses principes et ses bonnes pratiques générales. J’aborderai ensuite l’exemple précis de l’éco-conception des applications web.

Green IT

On parle souvent du green IT, ou informatique durable. Elle s’attache principalement à réduire l’empreinte écologique, économique et sociale des TIC et vise surtout à réduire l’empreinte des composants informatiques tout au long de leur cycle de vie, et ce à plusieurs niveaux.

Fabrication

La fabrication des composants nécessite d’extraire des ressources minérales, non renouvelables et pour certaines même, en passe d’être épuisées (même si les dates de prévision sont sujettes à débat). Les risques écologiques pris pour exploiter les gisements sont importants et peu encadrés.

Le monde de l’électronique a appris à diminuer sa consommation de ressources mais la contrainte reste très forte. Et quand ce ne sont pas les ressources minérales qui sont en danger, c’est le processus de fabrication lui-même qui est visé : emploi de produits toxiques, utilisation d’importantes quantités d’eau.

Les possibilités d’amélioration sont à la hauteur des impacts potentiels.

Utilisation

Ce n’est un secret pour personne, les composants ont besoin d’énergie. Un enjeu important de la Green IT est alors de diminuer la consommation. Les composants ayant la mauvaise idée de chauffer lorsqu’ils sont actifs, leur refroidissement est également prépondérant. Les data-centers sont ainsi des ogres en matière de consommation énergétique (2% de l’énergie mondiale) et un important secteur d’innovations écologiques.

Fin de vie

Les composants informatiques deviennent vite obsolètes et il faut alors gérer quantité de déchets. Entre réparation, recyclage, réutilisation « humanitaire », les débouchés sont nombreux mais le secteur est souvent délaissé par les industriels. Entre l’augmentation du nombre de décharges, les risques sanitaires liés au démantèlement et les risques environnementaux, il y a encore beaucoup à faire dans ce domaine.

Eco-conception logicielle

En tant que professionnels du logiciel, notre rôle dans la green IT est limité et équivalent à celui des utilisateurs. On peut cependant se poser la question de l’impact de notre métier et nos créations sur le cycle de vie et la consommation des machines qu’on utilise. Existe-t-il des bonnes pratiques que le développeur peut mettre en œuvre pour essayer d’améliorer son empreinte ?

Les impacts du logiciel

La fabrication logicielle nécessite de très grosses équipes de développement, généralement avec du matériel haut de gamme et récent. Les infrastructures sont également lourdes.

Une fois un logiciel déployé, il entraînera également des impacts à l’utilisation :

  • Transferts réseau
  • Utilisation de ressources système : CPU, RAM…

En fonction de sa conception, l’obsolescence réelle ou ressentie d’un logiciel peut accélérer sa fin de vie et donc son remplacement, c’est donc un point qu’il convient de ne pas négliger.

On voit donc qu’une conception prenant en compte ces éléments peut permettre de réduire les impacts : on parle d’écoconception logicielle.

Analyse du cycle de vie d’un logiciel

Deux produits ne sont pas comparables s’ils n’ont pas les mêmes fonctionnalités. On parle d’unité fonctionnelle pour quantifier les fonctions d’un produit. Celle-ci doit être précise, mesurable et additive. Si on ne prend pas ce critère en compte, on aura beau souhaiter acheter/vendre un logiciel le plus vert possible, s’il n’est pas utilisable, cela ne servira à rien. L’analyse de la valeur d’un logiciel est un sujet complexe mais primordial : http://www.greenit.fr/article/bonnes-pratiques/analyse-du-cycle-de-vie-des-logiciels-etat-de-lart-4205

Si des plugins sont amenés à être développés ultérieurement, soit parce que le logiciel ne convient pas à son usage, soit parce qu’au contraire il a été adopté à grande échelle et nécessite d’être encore plus utilisé, l’impact de leur développement et de leur utilisation est à prendre en compte dans une démarche d’éco-conception.

La phase de maintenance elle-même est à prendre en compte dans le coût de fabrication d’un logiciel.

Création de données, notifications

Une étude de l’ADEME (citée mais non disponible sur le site de l’organisme, abondamment commentée en revanche ici : http://www.clubic.com/application-web/actualite-434470-etude-mail-gourmand-co.html ) tente de faire le point sur l’empreinte carbone d’un email. Il en découle que des actions apparemment anodines n’ont rien d’immatériel. En effet, l’envoi d’un mail nécessite une lourde infrastructure technique : data-centers, internet (soit des millions d’équipements informatiques et de télécommunication), équipement des utilisateurs finaux.

Par exemple, pour un mail avec une pièce jointe d’1Mo, il en découle :

  • Environ 50% de l’empreinte chez les utilisateurs.
  • Environ 50% de l’empreinte chez les fournisseurs de services.
  • Environ 5% pour le réseau internet.
  • L’impact environnemental d’un mail est de : 19g eqCO2, 4.8g eqFer, 5.2g eqPétrole (respectivement équivalent CO2, équivalent Fer, équivalent Pétrole, ce sont des mesures d’équivalence de consommation en prenant en compte la conversion en une unité permettant des comparaisons).
  • Dans une entreprise de 100 personnes, si on envoie 33 mails d’1Mo/jour/personne sur une année, cela équivaut à 13 allers-retours Paris-New York !

Les préconisations de l’ADEME sont les suivantes :

  • Limiter le nombre de mails avec pièces jointes, compresser les pièces jointes.
  • Limiter le nombre de destinataires à ceux qui sont vraiment indispensables.
  • Limiter le temps de stockage de l’email.
  • Privilégier les emails au format texte (à peu près 4 fois moins gourmands en taille).

L’étude a également analysé les requêtes effectuées sur le web et l’utilisation de supports de transmission de type clés USB. Pour les recherches web, il en ressort de manière évidente qu’il est préférable d’avoir un site dans ses favoris que de le rechercher sur Google à chaque fois : 287 600 tonnes eqCO2 sont ainsi consommées pour les Français uniquement. Quant à la transmission de documents écrits via USB ou sur papier, il apparaît que si on passe moins de 2min12 par page, la lecture sur écran est préférable à l’impression N&B (8min1 par page dans le cas de l’impression couleur).

Quelques bonnes pratiques d’éco-conception de logiciels

Voici, en vrac, quelques bonnes pratiques contribuant à l’écoconception de logiciels. Elles sont tirées du site https://wiki.cs.vu.nl/green_software/index.php/Main_Page. Bien sûr elles ne sont pas pertinentes dans tous les contextes mais elles ont le mérite d’amener la réflexion.

Lazy loading

Il permet de n’initialiser un objet que lorsqu’il sera utilisé. C’est une pratique généralement économe en RAM.

Ne communiquer que de petites quantités de données

Ainsi on économise de la bande passante.

Diminuer la complexité algorithmique

On peut gagner énormément de temps pour le même résultat. Pensez aux scénarios moyens, au meilleur cas, au pire cas…

Optimiser l’interface graphique

Cela peut réduire le temps nécessaire à un utilisateur pour réaliser une action.

Préférer des interfaces graphiques statiques plutôt qu’animées

Côté client, on économise du temps CPU et du temps GPU.

Optimiser les requêtes de BDD

Il s’agit là de l’un des goulets d’étranglement des applications les plus connus. Idéalement la structure de la base de données devrait être optimisée, de même que chaque requête. Comme pour la complexité algorithmique, les gains peuvent être prodigieux.

Load balancing

Il s’agit d’une technique permettant de partager une charge entre plusieurs ressources (ordinateurs, processeurs, instances,…). En plus de permettre une certaine résistance aux pannes, cette technique a l’avantage d'utiliser des architectures moins gourmandes en énergie.

Eviter les langages à bytecode

Le bytecode est relativement gourmand en ressources car il y a une phase d’interprétation en plus de la phase d’exécution.

Cette bonne pratique est cependant très irréaliste du fait que le byte-code, par son principe « Write Once, Run Everywhere », permet des gains de productivité qui dépassent largement les pertes liées à l’interprétation.

Eviter la redondance de données

Les données sont parfois dédoublées pour éviter les pertes. Si la redondance de données est nécessaire, il convient de l’utiliser avec parcimonie car le transport et le stockage des données sont parfois coûteux.

Réduction des fuites mémoire

Les fuites mémoire peuvent être une cause de contre-performance logicielle. Mais elles sont également non optimales en terme de consommation de mémoire et augmentent donc la consommation d’énergie.

Conclusion

Les bonnes pratiques en matière d’éco-conception logicielle recoupent bien souvent les bonnes pratiques de conception informatique. Il convient toujours de les considérer en rapport avec le contexte et notamment de ne pas chercher à y gagner à tout prix si on y perd en utilisabilité de l’application.

Dans le prochain billet, nous tâcherons d’expliciter quelques-uns de ces principes sur un exemple bien particulier : l’écoconception d’un site web.

3 commentaires

  1. C’est étrange que vous citiez un référentiel immature, en anglais, alors qu’il existe un référentiel en français « éco-conception web : les 115 bonnes pratiques » disponible depuis 2012 et dont la seconde version vient d’être publiée en septembre 2015 par les spécialistes français du sujets : plus de 40 organisations : prestataires, experts, entreprises, fédération, etc. dont l’Ademe.

    Présentation du référentiel : http://www.ecoconceptionweb.com
    Le référentiel : https://checklists.opquast.com/ecoconception-web/

  2. Merci pour le lien vers ce référentiel, il est effectivement plus à jour et plus complet sur la partie développement web que celui sur lequel je m’étais basé.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.