La Sobriété Numérique, de la quantification des émissions carbone des applications à la mise en œuvre des corrections
Écrit par Hudson T.
Qu’est que c’est La Sobriété Numérique
Selon l’ADEME, dans une étude réalisée en 2020, 2,5 % de l’empreinte carbone de la France est liée au numérique, avec 10 % de la consommation annuelle d’énergie attribuée aux services numériques. Pour atteindre la transition écologique définie par la France, la mesure des émissions de carbone et la mise en œuvre de mesures d’atténuation des risques sont essentielles pour un avenir durable.
Dans cette perspective, nous appliquons les principes de la sobriété numérique, qui consistent à concevoir des services numériques plus économes, afin de réduire les impacts environnementaux et la consommation d’énergie des technologies, par exemple lors de la navigation sur internet et de l’utilisation d’applications web sur les ordinateurs et les téléphones portables.
La Sobriété Numérique dès la conception de l’application
La conception d’une application web implique plusieurs facteurs importants, en particulier si l’on considère l’empreinte carbone associée à l’utilisation de ces applications. Pour réduire la consommation d’énergie, il est nécessaire d’analyser des aspects tels que :
- Cible : évaluer la taille et les habitudes du public qui utilisera la plateforme et sa fréquence d’utilisation, car le nombre d’accès est directement lié aux émissions générées.
- Technologies utilisées : choisissez des technologies web modernes mais moins gourmandes en énergie, qui évitent le chargement continu des pages web et la répétition des requêtes et des connexions.
- Requêtes HTTP : réduire le nombre de requêtes effectuées lors de l’utilisation de l’application, en minimisant les appels redondants.
- Taille des fichiers : optez pour des fichiers plus petits et optimisés, tels que des images compressées, du HTML, CSS et JavaScript minifiés.
- Infrastructure d’hébergement : vérifiez la répartition géographique des serveurs afin de réduire la latence et d’améliorer le chargement. Privilégiez les hébergeurs qui utilisent des énergies renouvelables.
De nombreuses pratiques d’éco-conception sont également directement liées à l’expérience utilisateur (UX) et à l’interface (UI). Au cours du processus de conception, il est essentiel de réduire le nombre d’actions nécessaires à l’utilisateur pour atteindre ses objectifs, en optimisant les flux et les interfaces. Une conception simple et fonctionnelle permet non seulement de minimiser l’impact sur l’environnement, mais aussi de créer des applications plus agréables à utiliser.
Comment mesurer l’empreinte carbone des applications web
Globalement, la navigation sur Internet est directement liée à la consommation d’énergie des applications. Il est donc possible de mesurer l’impact carbone des applications en prenant en compte l’énergie consommée lors de leur utilisation.
Pour ce faire, il existe des outils qui permettent de calculer l’empreinte carbone en tenant compte de la matrice énergétique du pays, du pourcentage d’énergies renouvelables utilisées et de l’empreinte carbone moyenne des sites de la région. Une solution existante est le site Ecoindex et l’extension GreenIt – Analyses qui fournissent un rapport sur la quantité de code inutilisé sur la page, le nombre d’images plus grandes que nécessaire et indiquent même les formats d’image qui pourraient être modifiés pour réduire la consommation d’énergie et les émissions de CO₂ lors du téléchargement. Ils vérifient également si l’hébergeur du site utilise de l’énergie renouvelable sur ses serveurs, en utilisant l’outil de The Green Web Foundation.

Figure 1 : Exemple d’évaluation de l’EcoIndex par l’extension GreenIt.
Comment mettre en œuvre L’Eco-conception lors de la rédaction du code
Les stratégies à utiliser pour chaque projet doivent être adaptées à ses caractéristiques spécifiques. Nous vous présentons quelques exemples concrets de bonnes pratiques illustrant comment certaines décisions techniques peuvent influencer directement la performance et la maintenabilité d’une application.
Dans les applications React
Il est important d’éviter les re-rendus inutiles. Cela peut se faire en utilisant React.memo pour prioriser les rendus uniques. Il faut également être attentif à l’utilisation des hooks : par exemple, privilégier useMemo pour les variables qui ne changent pas entre les rendus ou pour les opérations simples, plutôt que de recourir à useState lorsqu’il n’est pas nécessaire. Une autre bonne pratique consiste à mettre en cache les informations afin de réduire les appels HTTP redondants et inutiles.
Dans les applications Java
Il est recommandé d’envisager l’utilisation de Hibernate pour abstraire la base de données. Afin d’optimiser les performances, il est aussi possible de tirer parti du cache de second niveau proposé par Hibernate, qui diminue significativement le nombre d’accès à la base de données.
Dans toutes les applications, il est tout aussi important de s’assurer que les changements souhaités sont effectivement observés dans le code, et de vérifier les points définis au cours du développement. Il est essentiel que notre CD/CI soit adaptée à cet effet. Il existe différents modèles qui contrôlent les applications et leurs résultats en fonction de l’évolution du code, comme le Template Eco-CI fourni par Green Coding.
Une autre solution simple consiste à utiliser le plugin creedengo dans le logiciel SonarQube, le logiciel d’analyse statique de code utilisé dans la plupart des CI existantes. Le plugin permet d’ajouter des règles d’analyse au champ d’application du logiciel, visant à identifier les problèmes d’éco-conception, permettant de les corriger au fur et à mesure de l’écriture du code, dans de nombreux langages tels que Java, JavaScript, PHP, Python et C#. Bien que très récent et en cours de développement, l’outil est déjà disponible pour la version 9.4.+ de SonarQube. Le plugin vous permet d’ajouter de nouvelles règles à marquer avec la balise creedengo comme indiqué ci-dessous.
Ci-dessous, nous présentons un exemple d’identification d’un problème d’éco-conception dans un code Java, signalé par SonarQube avec le plugin installé. Comme on peut le constater, notre code présente un problème de performance marqué avec le tag creedengo, qui indique une inefficacité liée à l’appel de la fonction size à l’intérieur d’une boucle.
Figure 2 : Exemple d’analyse SonarQube avec des erreurs de performance remontées par creedengo.
Ce comportement est problématique car la fonction size est évaluée à chaque itération, entraînant une consommation inutile de cycles CPU et, par conséquent, une augmentation de la consommation énergétique.
SonarQube propose une solution : stocker la valeur retournée par la fonction size dans une variable avant la boucle. Cela permet d’éviter de recalculer la taille de la collection à chaque itération, améliorant ainsi l’efficacité du code tout en réduisant son impact énergétique.
Figure 3 : Exemple de proposition SonarQube avec creedengo pour améliorer l’efficacité.
Conclusion
La sobriété numérique est cruciale pour réduire l’impact environnemental des services numériques. En adoptant des pratiques d’éco-conception, en optimisant le code et en mesurant les émissions de carbone, il est possible de réduire la consommation énergétique tout en améliorant l’expérience utilisateur. Cela soutient la transition écologique et permet aux entreprises de répondre aux attentes croissantes des consommateurs et des régulateurs en matière de durabilité. Cela renforce également leur image de marque et leur engagement envers l’environnement.
Sources
- Article du W3C présentant les directives pour un web plus durable, avec des recommandations pour concevoir des sites web écologiques
- Rapport de l’ADEME évaluant l’impact environnemental du numérique en France et proposant des scénarios prospectifs
- Plateforme dédiée à la conception web durable, offrant des outils, des conseils et des bonnes pratiques pour réduire l’empreinte écologique des sites web
Outils de mesure mentionnés
- Extension Chrome permettant d’analyser l’impact environnemental des sites web
- Outil pour vérifier si un hébergement utilise de l’énergie renouvelable
- Template pour estimer la consommation énergétique des pipelines CI/CD
- Guide pratique pour intégrer des principes d’éco-conception dans les projets numériques
- Sélection d’outils recommandés par la direction interministérielle du numérique et le ministère de la Transition écologique pour un numérique durable
Quelques ressources pour aller plus loin…
À lire aussi
Introduction pratique au Q-learning avec Gymnasium Taxi-v3
Introduction à K6
Créer une API en Python avec FastAPI
