199 lines
12 KiB
Markdown
199 lines
12 KiB
Markdown
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 : 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-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.
|