Sébastien Fulpius

Optimiser son logiciel pour réduire son impact environnemental

October 01, 2024 | 3 Minute Read

Ces dernières décennies, la densité de transistors dans les puces n’a que fait d’augmenter. Et plutôt que de réduire la taille des puces et donc leur impact, ou d’utiliser moins de serveurs pour fournir le même service, on a utilisé cette puissance de calcul pour augmenter la productivité des développeurs. On programme dans des langages de plus haut niveau qui sont plus productifs, mais moins performants.

Alors est-ce qu’on doit réécrire tout notre code en C et passer notre temps à l’optimiser ? Pas forcément. Déjà vous pouvez commencer par optimiser la phase d’exploitation. Et ensuite suivre des bonnes pratiques pour optimiser votre logiciel.

Les pratiques à suivre

Quelles sont ces pratiques ? Vous pouvez utiliser la plupart des pratiques qui rendent votre logiciel plus performant. En effet, un logiciel plus performant a besoin d’un terminal utilisateur ou d’un serveur moins puissant pour fonctionner, et utilisera moins d’énergie. A noter que cela exclut tout les pratiques qui rendent un service plus performant en parallélisant les tâches sur plusieurs serveurs. Dans ces cas les tâches sont effectuées de manière plus rapide, mais en utilisant tout autant voir plus de ressources.

Il y a beaucoup de manière différentes d’optimiser son logiciel et ce ne serait pas utile de toutes les énumérer ici. Je vous conseille plutôt de vous référer à ces ressources:

Building Green Software: il y a tout un chapitre sur l’efficacité du code pour réduire son impact environnemental. Le livre est plutôt orienté sur la partie backend.

Ecoconception web : les 115 bonnes pratiques: ce livre donne des bonnes pratiques pour le développement web. Vous pouvez également retrouver les 115 bonnes pratiques sur GitHub.

‌Guide d’écoconception de services numériques des designers éthiques: plus axé sur la partie design, ce guide donne également des bonnes pratiques pour l’écoconception web.

Green Software Patterns: une liste de bonne pratiques organisées en trois catégories: le web, le cloud et l’IA.

Si vous développez pour des serveurs, pensez à choisir des serveurs moins puissants ou à diminuer le nombre de serveurs utilisés. En effet, une fois que vous avez fait ces optimisations, votre programme va utiliser moins de ressources. Mais si vous gardez les mêmes serveurs, l’impact environnemental lié à la fabrication ne va pas changer.

Un exemple d’optimisation

Une des bonnes pratiques donnée dans le livre Building Green Software est de remplacer les librairies inefficaces par d’autres. Comment le faire en pratique ?

Imaginez que vous avez un programme de data science qui fait des calculs sur de grosses quantités de données. Le programme est écrit en python. Vous décider de l’optimiser en commencez par lancer un profiler pour voir quelles parties du code prennent le plus de temps à exécuter. Vous vous rendez compte que l’utilisation de la librairie pandas représente 90% du temps d’exécution. En faisant des recherches vous trouvez la librairie polars, qui offre les mêmes fonctionnalités mais qui est 30x plus efficace. Vous décidez de changer de librairie pour utiliser polars, et votre programme devient beaucoup plus performant.

D’immenses potentiels d’optimisation

Si vous avez pas l’habitude de réfléchir à l’optimisation, il y a probablement de grands potentiel d’optimisation dans vos programmes. Alors, qu’est-ce que vous attendez pour vous lancer ?