1
0
contenu/blog/2021/09/25/l-eco-responsabilite-en-informatique/index.md

199 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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-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 : lidé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-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.