213 lines
13 KiB
Markdown
213 lines
13 KiB
Markdown
|
---
|
|||
|
title: "L'éco-responsabilité en informatique"
|
|||
|
date: 2021-09-25
|
|||
|
tags: [
|
|||
|
"SysAdmin",
|
|||
|
"Développement",
|
|||
|
"Réflexions",
|
|||
|
"Énergie",
|
|||
|
"Cloud",
|
|||
|
"Auto-hébergement",
|
|||
|
"Écologie"
|
|||
|
]
|
|||
|
---
|
|||
|
|
|||
|
Derrière le terme très politique de "éco-responsabilité" se cachent de
|
|||
|
nombreuses ramifications, et je vais m'intéresser aujourd'hui à celles qui
|
|||
|
concernent spécifiquement l'informatique, et en particulier du point de vue
|
|||
|
applicatif.
|
|||
|
|
|||
|
## Le coût énergétique du code
|
|||
|
|
|||
|
Le code informatique a un coût énergétique. On a tendance à l'oublier. Le
|
|||
|
matériel le plus récent tend vers une efficacité énergétique accrue : un
|
|||
|
processeur moderne, comparé à un processeur plus ancien doté du même nombre de
|
|||
|
coeurs et d'une même fréquence, exécutera les instructions qu'on lui donne plus
|
|||
|
rapidement, mais aussi de façon plus efficiente, en consommant moins d'énergie.
|
|||
|
Quand on achète du matériel moderne, on fait un geste éco-responsable[^1], mais
|
|||
|
on peut mieux faire. C'est facile de faire des économies d'énergie en achetant
|
|||
|
du matériel récent, mais il est possible d'aller beaucoup plus loin avec des
|
|||
|
_logiciels_ et des _comportements_ éco-responsables. Cela prend tout son sens
|
|||
|
lorsque l'on est soi-même développeur.
|
|||
|
|
|||
|
[^1]: À charge logicielle équivalente. En réalité, il faut tenir compte d'autres facteurs pour que ce geste soit réellement éco-responsable, comme l'âge du matériel remplacé, les matériaux employés (recyclables ou non), etc.
|
|||
|
|
|||
|
Il est possible de chiffrer ce coût énergétique. Ce n'est peut-être pas à la
|
|||
|
portée de tout le monde, mais avec
|
|||
|
[le matériel adéquat](https://duckduckgo.com/?q=prise+wattmetre&t=osx&iar=shopping&iax=shopping&ia=shopping),
|
|||
|
on peut facilement l'évaluer. Il suffit de mesurer la consommation de la machine
|
|||
|
sur laquelle on fait le test, avec et sans l'application qu'on veut tester, et
|
|||
|
faire la différence. C'est ainsi que j'ai appris que MariaDB consomme plus
|
|||
|
d'énergie que PostgreSQL, que nginx consomme plus que Caddy, etc.
|
|||
|
|
|||
|
Du coup, puisqu'il existe une différence substantielle et mesurable, entre
|
|||
|
différentes applications qui effectuent le même type de tâches, on peut pousser
|
|||
|
l'idée un peu plus loin en tant que développeur, et se demander : "Combien
|
|||
|
d'énergie consomme le code que je produis ?"
|
|||
|
|
|||
|
On peut avoir des surprises, et pas que des bonnes... surtout que cette
|
|||
|
consommation dépend de facteurs divers.
|
|||
|
|
|||
|
## Le coût énergétique du réseau
|
|||
|
|
|||
|
Car, pour peu que l'application considérée effectue des opérations sur le
|
|||
|
réseau, la consommation indirecte de cette application peut rapidement grimper
|
|||
|
en flèche. Une consommation qui ne se verra pas en consultant la consommation
|
|||
|
immédiate de la machine sur laquelle tourne l'application, puisqu'il faut aussi
|
|||
|
prendre en considération l'activité du point d'accès sans-fil, du switch, du
|
|||
|
routeur, du modem, bref, de _toute_ l'infrastructure réseau, non seulement du
|
|||
|
point de vue du client (qui initie la connexion) mais aussi du point de vue du
|
|||
|
serveur (qui reçoit la requête).
|
|||
|
|
|||
|
C'est un exemple très personnel et peut-être pas représentatif de la majorité
|
|||
|
des cas d'usage, mais lors d'accès réseaux intensifs, la consommation électrique
|
|||
|
de mon réseau informatique dans sa globalité peut facilement passer du simple au
|
|||
|
double. C'est notamment le cas pendant les mises à jour des images docker
|
|||
|
employées sur mes serveurs : je passe d'une consommation globale de 36W en
|
|||
|
moyenne à parfois près de 80W[^2].
|
|||
|
|
|||
|
[^2]: Dans ces 36 à 80W, je compte la consommation de mes trois serveurs, d'un point d'accès sans-fil, et d'un switch 16 ports en rack. La Freebox Revolution n'est pas comptée dans cette mesure, mais je sais qu'elle consomme à elle-seule près de 40W, notamment à cause de son disque dur mécanique.
|
|||
|
|
|||
|
## Développer éco-responsable
|
|||
|
|
|||
|
Si vous êtes développeur et que :
|
|||
|
|
|||
|
- vous vous souciez de l'optimisation extrême de votre code,
|
|||
|
- vous n'implémentez que les fonctionnalités nécessaires et évitez de réinventer la roue,
|
|||
|
- vous vous assurez de suivre les bonnes pratiques de réutilisation du code, sa simplification, sa compartimentation,
|
|||
|
- vous surveillez régulièrement les ressources systèmes consommées par votre application,
|
|||
|
|
|||
|
vous êtes déjà éco-responsable ! Dans le cas contraire, il va falloir reprendre
|
|||
|
les bases. Dans tous les cas, il y a quelques pistes à explorer, quelques
|
|||
|
situations à prévoir.
|
|||
|
|
|||
|
Par exemple, il est possible qu'à l'avenir, les applications se voient
|
|||
|
catégorisées par une
|
|||
|
[étiquette-énergie](https://fr.wikipedia.org/wiki/Étiquette-énergie), exactement
|
|||
|
comme tout matériel électrique actuellement vendu en Europe. Être capable de
|
|||
|
développer des applications efficientes devrait déjà être un critère de choix
|
|||
|
pour les entreprises, si elles veulent être prêtes le jour où cela arrivera :
|
|||
|
dans une société dont la demande énergétique est en constante hausse et où la
|
|||
|
production peine à suivre à cause de la raréfaction du nucléaire, se présenter
|
|||
|
comme une entreprise dont les logiciels sont efficients sera aussi important
|
|||
|
pour les clients et prospects que d'annoncer vendre des produits issus de
|
|||
|
matériaux recyclables.
|
|||
|
|
|||
|
<x-shortcodes.update title="Mise à jour du 24 décembre 2021">
|
|||
|
Un pas vers une telle catégorisation a été fait hier :
|
|||
|
|
|||
|
* [Mesurer le CO2 selon les gigaoctets consommés : l’idée qui consterne le secteur du numérique](https://www.numerama.com/tech/803201-mesurer-le-co2-selon-les-gigaoctets-consommes-lidee-qui-consterne-le-secteur-du-numerique.html)
|
|||
|
|
|||
|
Je ne m'exprimerai par sur la forme, apparemment les geeks ont l'air de dire que
|
|||
|
c'est mal branlé, personnellement j'estime que c'est un pas en avant, une étape
|
|||
|
avant l'imposition de cette information par application, plus compliquée à
|
|||
|
mettre en place sur le plan juridique.
|
|||
|
</x-shortcodes.update>
|
|||
|
|
|||
|
Dans l'absolu, on a amélioré les technologies pour pouvoir faire plus de choses.
|
|||
|
Le débit des connexions Internet a explosé grâce à la fibre optique et la 4/5G,
|
|||
|
les processeurs sont de plus en plus puissants tout en étant plus économes en
|
|||
|
énergie, le cloud permet de déplacer l'exécution de code à l'extérieur du
|
|||
|
réseau, etc. En somme, on a amélioré la qualité de vie des faignants et des
|
|||
|
producteurs de spam. Tant de technologies déployés pour afficher des publicités
|
|||
|
plus vite qu'avant ? Pour être pistés plus rapidement qu'avant ?
|
|||
|
L'éco-responsabilité passera forcément par l'abandon de ces pratiques, dont le
|
|||
|
coût énergétique n'est jamais pris en charge par leur producteur et toujours par
|
|||
|
le client. Une pratique commerciale abominable du début à la fin, à laquelle de
|
|||
|
nombreux développeurs ont participé. Une pratique qui doit cesser. Si on dispose
|
|||
|
de meilleures technologies, il faut aussi en faire un meilleur usage.
|
|||
|
|
|||
|
## Des usages éco-irresponsables
|
|||
|
|
|||
|
Malheureusement, les applications les plus populaires sont loin d'être des
|
|||
|
références en matière de consommation énergétique. Pas forcément parce qu'elles
|
|||
|
sont mal conçues, ou parce qu'elles intègrent des algorithmes complexes pour
|
|||
|
déterminer quelles publicités vous afficher à vous spécifiquement (...), mais
|
|||
|
aussi parce qu'elles n'optimisent pas ce qu'elles font. Je pense en particulier
|
|||
|
aux applications de vidéo-conférence, propulsées sur le devant de la scène par
|
|||
|
la série de confinements connue entre 2019 et 2021. Le coût énergétique de la
|
|||
|
vidéo-conférence est [prohibitif](https://www.forbes.com/sites/petersuciu/2021/04/16/do-we-need-to-worry-that-zoom-calls-use-too-much-energy/),
|
|||
|
et totalement inconnu ou ignoré des participants qui n'ont qu'un seul objectif :
|
|||
|
communiquer. Il y a pourtant de nombreux paramètres à prendre en compte :
|
|||
|
|
|||
|
- l'équipement informatique requis pour faire de la vidéo-conférence : ordinateurs, écrans, webcams, micros, et bien sûr, l'infrastructure réseau entre les différentes machines
|
|||
|
- les logiciels employés et leur paramétrage, y compris le système d'exploitation (un mode sombre consomme moins d'énergie qu'un mode clair), les réglages du matériel (baisser la luminosité des écrans permet de gagner quelques watts)
|
|||
|
- la distance entre les différents ordinateurs
|
|||
|
- etc.
|
|||
|
|
|||
|
Le matériel est de plus en plus efficient en énergie. Mais ce n'est pas encore
|
|||
|
le cas des applications où il reste beaucoup de travail à faire. Et ce n'est pas
|
|||
|
encore suffisant : comme certains gestes ont dû être appris au cours de ces
|
|||
|
dernières décennies, comme le tri sélectif, éteindre le robinet pendant qu'on se
|
|||
|
brosse les dents, etc., il faudra apprendre à mieux utiliser son informatique.
|
|||
|
Est-ce qu'une vidéo-conférence est réellement nécessaire ? Cette réunion ne
|
|||
|
peut-elle pas être réalisée uniquement en audio ? Et du point de vue du
|
|||
|
développeur : est-ce que j'ai réellement besoin d'un accès réseau pour effectuer
|
|||
|
telle ou telle opération ?
|
|||
|
|
|||
|
## Les travers du cloud
|
|||
|
|
|||
|
Le cloud, comme dirait la [FSF](https://www.fsf.org/), c'est stocker ses données sur un ordinateur qui
|
|||
|
ne nous appartient pas. Quand vous installez une application sur votre téléphone
|
|||
|
portable, posez-vous la question : est-ce que cette application m'apporte une
|
|||
|
plus-value par rapport à visiter directement le site depuis mon navigateur ? En
|
|||
|
général, la réponse est soit "non", soit une mauvais réponse, telle que : "oui
|
|||
|
parce que c'est mieux intégré à mon téléphone". En réalité, cela dépend de ce
|
|||
|
que fait l'application par rapport au site, et surtout _comment_ elle le fait.
|
|||
|
Si l'essentiel du travail est effectué sur votre téléphone, tant mieux, mais si
|
|||
|
de multiples échanges avec le serveur sont nécessaires, c'est là que la
|
|||
|
consommation explose.
|
|||
|
|
|||
|
Comment le vérifier ? Par aucun moyen simple à l'heure actuelle. Soit
|
|||
|
l'application est sous licence libre, auquel cas vous pouvez consulter le code
|
|||
|
source pour voir si l'application est bien écrite, soit elle est sous licence
|
|||
|
propriétaire et il faut utiliser des outils appropriés pour évaluer la quantité
|
|||
|
et la qualité de ses accès réseau. Une tâche impossible pour le commun des
|
|||
|
mortels, et fastidieuse à réaliser quand on maitrise le sujet, considérant la
|
|||
|
quantité d'applications à tester. J'aimerais bien voir, sur mon téléphone, en
|
|||
|
plus de la consommation en "_data_" d'une application donnée, sa consommation
|
|||
|
électrique estimée. On aurait sans doute des informations intéressantes, et cela
|
|||
|
inciterait sûrement à la production d'applications de meilleure qualité...
|
|||
|
|
|||
|
En outre, stocker ses documents dans le cloud est très consommateur d'énergie,
|
|||
|
puisqu'on parle souvent de fichiers de plusieurs méga-octets. Une photo de bonne
|
|||
|
résolution, prise avec votre téléphone portable, pèse en moyenne 5Mo à 10Mo. Mes
|
|||
|
photos prises avec mon APN en RAW peuvent peser 50Mo. Les fonds d'écrans,
|
|||
|
sonneries, pièces jointes d'email, musiques, vidéos, etc. vont transiter sur le
|
|||
|
réseau, et utiliser de l'énergie. L'énergie de votre téléphone, de l'antenne du
|
|||
|
réseau mobile, du datacenter où seront stockées ces données, etc.
|
|||
|
|
|||
|
Auto-héberger tout cela **est éco-responsable**, en limitant cette consommation
|
|||
|
d'énergie à votre propre infrastructure. Si vous êtes une entreprise, et du seul
|
|||
|
point de vue de l'énergie, cela vous reviendra moins cher que payer un
|
|||
|
intermédiaire qui répercutera ces coûts sur votre facture, avec une marge.
|
|||
|
|
|||
|
Avec le cloud, on multiplie le coût énergétique de chaque opération réseau.
|
|||
|
Donc, en tant que développeur, demandez-vous, à chaque ligne de code créée qui
|
|||
|
envoie une requête à un serveur distant, si cette ligne est parfaitement
|
|||
|
optimisée et ne surchargera pas le serveur en question. Exemple tout bête :
|
|||
|
arrêtez de faire des pages HTML où vous déclarez 50 fichiers javascript et 50
|
|||
|
feuilles de styles : concaténez. Ce n'est pas parce que HTTP/2 permet de faire
|
|||
|
des requêtes en parallèle qu'il faut en abuser...
|
|||
|
|
|||
|
## Les bénéfices de l'éco-responsabilité
|
|||
|
|
|||
|
Évidemment, il y a le gain environnemental. Moins de consommation d'énergie
|
|||
|
signifie moins d'émissions de CO2. Il y a également le coût financier :
|
|||
|
l'énergie est chère, et le sera de plus en plus si on continue à scier la
|
|||
|
branche sur laquelle on est assis en "sortant du nucléaire".
|
|||
|
|
|||
|
Mais de façon plus pragmatique, être éco-responsable en informatique signifie
|
|||
|
aussi augmenter le délais entre deux charges de batterie de téléphone ou
|
|||
|
d'ordinateur portable, réduire la charge système et donc disposer d'un
|
|||
|
périphérique plus agréable à utiliser, peut-être au point de devoir le remplacer
|
|||
|
moins souvent, d'où encore plus d'économies et... une meilleure
|
|||
|
éco-responsabilité.
|
|||
|
|
|||
|
Les gains côté développeur ne sont pas moins intéressants : être éco-responsable
|
|||
|
signifie moins de code à maintenir, un code plus efficace, plus facile à
|
|||
|
analyser, à relire, donc plus de temps pour créer de nouvelles fonctionnalités
|
|||
|
et moins de temps à débugguer, donc moins de bugs et plus vite corrigés, donc
|
|||
|
clients satisfaits, employeur satisfait, meilleure qualité de vie au travail,
|
|||
|
licornes et arcs-en-ciel.
|