Green Hosting : la tendance émergente de l’hébergement web écologique
Contexte du Green Hosting La première raison pour laquelle le sujet du développement durable et plus particulièrement des émissions de...
Le Green Coding, ou codage vert, en bon français, est une pratique inventée assez récemment. Elle consiste en l’intégration d’une approche et d’un objectif de minimisation de l’impact environnemental du fonctionnement des programmes et logiciels informatiques par la diminution de leur consommation d’énergie.
Le Green Coding ne s’inscrit ni en opposition aux pratiques existantes, ni comme un nouveau métier ; ses principes doivent plutôt être intégrés dans ceux que les ingénieurs et concepteurs de logiciels doivent prendre en compte lors de la conception des projets et l’écriture du code. Ces pratiques doivent permettre d’équilibrer et arbitrer entre les fonctionnalités et usages, d’une part, et la consommation d’énergie, de l’autre.
Le Green Coding s’articule autour de trois facettes :
Les problématiques dites Green ont pour point commun leur diversité, leur hétérogénéité et la diversité de leurs causes. Ainsi, si une optimisation isolée peut avoir un impact non négligeable, c’est surtout dans la combinaison de plusieurs que réside la maximisation et l’optimisation de l’impact et de l’efficacité d’une démarche Green Coding.
On peut ainsi isoler quatre mécaniques qui animent la logique du Green Coding :
Pour aller plus loin : Sobriété écologique et numérique : comprendre les perceptions pour déclencher l’action
La première nécessité est la captation et l’enregistrement d’informations afin de pouvoir prendre les meilleures décisions. Les méthodes Agile ou Lean peuvent par exemple intégrer des critères d’efficacité utiles ; dans la même lignée, les pratiques d’intégration et de livraison continues permettent de mieux comprendre l’impact de chaque décision de développement.
La pratique du partage et de la réutilisation des projets et actions de Green Coding est aussi indispensable, au sein du périmètre de l’organisation comme au-delà.
L’infrastructure qui héberge et permet le fonctionnement du code est un périmètre aussi important que le code proprement dit. Il est donc nécessaire de considérer :
L’ensemble des principes du Green Coding vise à minimiser l’impact environnemental (GES, biodiversité, matières premières) des logiciels, applications et services développés.
Quelques exemples applicatifs de ces principes.
L’efficience du code signifie l’usage le plus limité de toutes les ressources nécessaires à la réalisation d’une tâche par celui-ci. L’une de ces ressources étant l’énergie, cela signifie donc aussi des économies sur ce plan.
Concrètement, il est ainsi question de concevoir des algorithmes qui peuvent réaliser les tâches qui leur sont allouées via le moins grand nombre possible d’opérations. De même, les structures de données utilisées visent à réduire les besoins en mémoire et en CPU.
Focus sur quelques mauvaises pratiques à éviter, et des alternatives efficaces.
La concaténation de chaînes s’avère particulièrement inefficace lorsque ces chaînes sont volumineuses. Cela entraîne une diminution de la performance et de facto l’augmentation de la consommation énergétique. En Java, la classe StringBuilder, par exemple, est bien plus efficace que la concaténation directe.
La création et la destruction fréquentes d’objets sont coûteuses en termes de mémoire et de CPU. Le pooling d’objets peut faciliter la réutilisation d’objets et ainsi pallier cette problématique.
L’utilisation des ressources gagne à être optimisée sur les sujets d’allocation de mémoire, de communication réseau ou d’entrée/sortie (E/S ou I/O) fichiers. Dans l’objectif de réduire tant que possible la consommation d’énergie, différentes méthodes, outils et processus sont utilisables.
Dans des situations d’usage de datasets de grande taille, l’API Streams de Java, ou des frameworks de stream processing comme Apache Flink, Spark ou Kafka Stream, peuvent permettre un traitement efficient des données sans nécessiter un chargement complet en mémoire.
La réalisation simultanée de tâches induite par le multifil permet d’optimiser l’utilisation des ressources du processeur.
Au-delà de son exercice rédactionnel, le développement s’appuie sur un ensemble d’expertises en termes de sécurité, de capacité et facilité de maintenance du code, tout comme de performance des traitements/réponses de la programmation. Les critères de performance énergétique s’inscrivent dans ces domaines et s’ajoutent de manière complémentaire à l’existant.
Différentes techniques de gestion et de préservation de l’énergie existent, telles que la planification et la répartition de tâches sur une période à faible demande (principe d’heures creuses) ou la mise en veille d’instances inutilisées (scale from zero ou daily clean).
La réduction voire la suppression des communications réseaux peu ou pas utiles est un moyen simple de diminution de la consommation d’énergie.
Le mode « économie de batterie » est un critère utile pour automatiquement ajuster les paramètres de consommation énergétique lorsqu’un appareil fonctionne sur batterie.
Les tâches en arrière-plan qui peuvent être reportées ou effectuées sur une plage temporelle longue peuvent être soumises à des limitations d’usage du processeur afin, encore, de réduire la consommation d’énergie.
Ce domaine relève avant tout d’une dimension stratégique visant à adopter des comportements efficaces de stockage et de lecture des données. Parmi ceux-ci, on compte, par exemple, la déduplication ou la mise en cache dite intelligente.
Au-delà des avantages pour l’environnement, le Green Coding présente d’autres avantages par nature :
En premier lieu, il ne faut pas oublier que tous les langages de programmation ne sont pas interchangeables. La réflexion et la recherche d’un langage green reposent donc avant tout sur une étude spécifique du périmètre et des objectifs de chaque projet.
Dans une optique généraliste, C, C++, Rust et Java sont les langages les plus efficaces et économes. Un bémol, toutefois, pour Java, qui est plutôt gourmand en utilisation de la mémoire.
Zoom sur les champions sur le podium des plus petits consommateurs…
C domine la mêlée, quand JavaScript consomme 4 fois plus, et Java, deux fois. Côté langage interprété, Python nécessite un plus long temps de traitement et d’exécution, ayant donc la plus grande consommation d’énergie et le bonnet d’âne de la catégorie.
Nouveau revers pour Java suivi de Javascript chez les plus grands consommateurs de mémoire.
En premier lieu, la question de la mesure de l’efficacité se pose. Plugin ecocode dans Sonarqube pendant le développement ou Visual VM et Profiler API pendant l’exécution, les outils de monitoring existent, pourvu que l’on sache les identifier, les déployer et les comprendre. C’est un sujet pour lequel un accompagnement est toujours bénéfique, tant chaque situation, chaque périmètre, chaque usage comme chaque langage peuvent nécessiter des configuration et outils spécifiques.
Les étapes d’intégration et d’exploitation du Green Coding s’inscrivent dans les propositions suivantes.
Il est bénéfique de proposer un large panel de formations sur le Green Coding et le Green IT en général à l’ensemble des ingénieurs informatiques, tout autant les collaborateurs déjà intégrés dans les équipes que les nouveaux arrivants. Il est tout aussi utile, suivant la fonction, le métier, l’expérience ou l’appétence pour le green, de proposer un large panel, des formations les plus généralistes aux plus spécifiques, afin de s’assurer de répondre aux besoins et à l’intérêt de chacun. La formation Green IT est souvent la porte d’entrée sur le sujet, et provoquer la déception dès cette étape risque fort de créer un frein dans l’adoption d’une démarche green.
Il est aussi utile de proposer un catalogue de bonnes pratiques parmi lesquelles les collaborateurs pourront facilement retrouver des actions « prêtes à l’emploi » pour rapidement diminuer l’impact de la programmation.
De même, dans le cadre d’une communauté dynamique, l’adoption de chalenges peut créer un phénomène mélioratif de groupe. Une course à l’effacement de lignes de code superflues, au temps de veille des infrastructures ou au décommissionnement de machines virtuelles sont par exemple des dynamiques qui facilitent les diminutions en cascade des émissions de gaz à effet de serre. C’est la somme de « petites » diminutions, à leur échelle, qui sont un levier majeur dans la trajectoire pour atteindre des objectifs de réduction des émissions de GES.
Les bonnes pratiques suscitées, de même que les indicateurs suivis dans les challenges, peuvent (et doivent) être aussi intégrés dans les objectifs de performance évalués auprès des ingénieurs informatiques. Idéalement, plus que provoquer une forme de pénalité ou d’exclusion du champ mélioratif, l’atteinte d’objectifs individuels de limitation et, surtout, de réduction des émissions des activités peut entraîner une valorisation de la performance, et donc des formes de rémunérations variables en conséquence.
Ce volet est le miroir de la valorisation individuelle de la performance green des applications, logiciels et projets réalisés. Il est ici question d’inculquer durablement une culture d’efficacité, d’effort et de recherche perpétuelle d’émissions et consommations à effacer ou empêcher.
Une fois l’objectif de durabilité et de frugalité du développement de projet inscrit dans l’ADN même de l’organisation, alors il est possible de disposer à la fois d’une image de marque employeur comme pour les consommateurs ancrés dans l’engagement durable que sur un vecteur de motivation collective solide.
En conclusion, il est nécessaire de ne pas se cacher derrière la faible proportion d’émissions dues à l’écosystème numérique actuellement, mais bien de s’interroger sur le rôle présent et futur du numérique dans la lutte contre le réchauffement climatique.
Selon les choix et les critères de pilotage et d’objectivisation des projets, le numérique peut se trouver du côté du problème, ou de la solution. Tous les pans du numérique doivent donc évoluer suivant une même logique, et la production informatique, sous la houlette des ingénieurs, doit donc nécessairement intégrer au plus vite les critères du Green Coding et en développer et faire vivre les meilleures pratiques.
Article – Audit Green IT : les 5 étapes à suivre
Articles similaires
Contexte du Green Hosting La première raison pour laquelle le sujet du développement durable et plus particulièrement des émissions de...
Le RGESN (Référentiel Général de l’Écoconception des Services Numériques) a été publié par l’ARCEP cette semaine, en collaboration avec l’Arcom,...
Service Achats, Logique, Supply Chain, RSE ou ESG, Opérationnels et, bien sûr, IT : rares sont les activités qui ne sont pas...