Ce qu'une entreprise de logiciels peut faire pour réduire son empreinte carbone

Alors que le monde prend de plus en plus conscience de l'impact du changement climatique, de nombreuses entreprises prennent des mesures pour réduire leur empreinte carbone, et les entreprises de logiciels ne font pas exception

Environnement

Vieolo est avant tout une entreprise de logiciels et il y a de fortes chances que vous, lecteur de cet article, travailliez également dans l'industrie du logiciel.

Le développement des logiciels a été une épée à double tranchant pour l'environnement. D'une part, l'industrie logicielle a collectivement apporté une efficacité inégalée à de nombreuses tâches et évité l'utilisation de trillions de feuilles de papier. D'autre part, nous avons activement travaillé à l'augmentation de la consommation de données des citoyens moyens, ce qui a, par conséquent, causé leurs propres problèmes environnementaux sous forme de déchets électroniques et de consommation d'énergie.

Indépendamment de l'effet globalement positif de notre travail, nous devons reconnaître que nos opérations et produits ont un impact négatif sur l'environnement, et nous devons tous nous engager à faire notre part pour réduire notre empreinte carbone, aussi minime soit-elle.

Nous comprenons que notre empreinte carbone pourrait être une goutte d'eau dans l'océan par rapport à d'autres entreprises et industries, mais, néanmoins, nous avons essayé d'adopter les stratégies suivantes depuis le début de 2022.


Prévention plutôt que compensation

Bien que compenser notre consommation d'énergie par des crédits carbone ou d'autres mécanismes puisse être une partie importante de notre stratégie de durabilité globale, réduire notre consommation d'énergie doit être la priorité absolue.

Il y a des problèmes fondamentaux avec l'approche actuelle de la compensation carbone. L'efficacité de la compensation carbone dépend de l'hypothèse que le projet de compensation n'aurait pas eu lieu sans l'investissement dans la compensation. Cependant, cela est difficile à prouver, et il y a eu de nombreux cas où des projets de compensation ont été mis en œuvre même sans financement de compensation.

De plus, il n'existe actuellement aucun critère largement accepté pour un projet de compensation carbone réussi. L'efficacité d'un projet dépend principalement des déclarations du fournisseur et la plupart des entreprises ne peuvent pas vérifier indépendamment leur efficacité. En conséquence, choisir un projet de compensation, au moment de l'écriture, implique de choisir un projet au hasard et de s'en remettre au hasard.

Dans la plupart des cas, les entreprises ne se soucient pas de l'impact environnemental et participent à un projet de compensation carbone soit pour satisfaire les exigences réglementaires, soit en tant que coup de publicité, même si de tels coups de publicité n'apportent généralement aucun bénéfice à l'image publique des entreprises.

Bien que les programmes de compensation authentiques aient leurs avantages, nous devrions nous concentrer sur la réduction de notre consommation d'énergie en premier lieu plutôt que d'essayer de compenser ses dommages par la suite.

Bien sûr, une bonne partie de l'énergie que nous utilisons implique des opérations générales similaires à celles de toute autre entreprise, telles que l'énergie utilisée dans nos bureaux et pour les transports. Ici, nous nous concentrons sur les stratégies d'économie d'énergie propres aux entreprises de logiciels.


Langages de programmation et outils

Exécuter un morceau de code nécessite de l'énergie et il y a de fortes chances que l'énergie utilisée par votre code soit produite par des combustibles fossiles. L'énergie utilisée par notre code est dépensée, principalement, en puissance de traitement (CPU, GPU, etc.) et en RAM. En réduisant l'utilisation du CPU et de la mémoire, nous pouvons supposer en toute sécurité que nous utilisons une moindre quantité d'énergie.

La quantité d'énergie utilisée par notre code dépend fortement du langage de programmation que nous utilisons. En général, les langages interprétés (qui dépendent d'un environnement d'exécution) et ceux avec un ramasse-miettes utilisent une plus grande quantité de RAM et de CPU comparés à ceux qui sont compilés et sans ramasse-miettes respectivement.

Par exemple, un simple programme Python utilise beaucoup plus de CPU et de RAM qu'un programme similaire écrit en C, car le programme Python doit démarrer et utiliser l'interpréteur Python tandis que le programme C n'a pas de telle surcharge.

Même si nous pouvons supposer en toute sécurité que des langages comme C ou Rust sont plus économes en énergie que des langages comme Javascript et Python, la quantification de cette efficacité énergétique est assez difficile. La source d'information la plus fiable est une seule étude réalisée par des chercheurs de l'Université du Minho au Portugal. Cette étude affirme, par exemple, que Javascript et Python consomment environ 4 et 75 fois plus d'énergie comparés à C et Rust respectivement.

Même si nous pouvons discuter de la précision de cette mesure, la théorie générale a été prouvée bonne à maintes reprises, à la fois à petite et grande échelle. Par exemple, Discord a réécrit un de ses services, précédemment écrit en Go, en utilisant Rust. Même si Go est déjà un langage performant, l'implémentation en Rust a réussi à battre l'implémentation en Go sur chaque métrique tout en réduisant l'utilisation globale de la mémoire et du CPU.

Utiliser des langages de programmation et des outils qui ne reposent pas sur des interpréteurs et des environnements d'exécution est une des méthodes les plus fiables pour réduire la consommation d'énergie que nous avons dans l'industrie du logiciel.

À petite échelle, la différence de consommation d'énergie entre les langages les plus et les moins efficaces est négligeable. La différence énergétique entre un petit programme Python et Rust fonctionnant sur votre machine locale est si petite que vous ne pouvez probablement même pas la mesurer.

Cependant, indépendamment de la différence négligeable à petite échelle, les développeurs s'appuient sur le code déjà écrit par d'autres tandis que le code qu'ils écrivent peut finir par devenir la fondation et la dette technique pour de futurs projets. Par exemple, en 1995 Brendan Eich a créé Javascript pour Netspace 2, prétendument en 10 jours, pour permettre des fonctionnalités de base aux sites Web. En 2023, Javascript est devenu le langage de programmation le plus utilisé. Même si les chances sont très faibles, le projet sur lequel vous travaillez actuellement pourrait finir par fonctionner sur des millions d'appareils.

En utilisant un langage de programmation, nous participons activement au développement et à la création de son écosystème et de sa dette technique. En choisissant consciemment des langages plus efficaces et performants qui pourraient être en dehors de notre zone de confort, nous pouvons assurer la réduction de l'empreinte carbone de notre code sur le long terme.

Cependant, cela ne signifie pas que nous devrions tous abandonner Python, Ruby, et Javascript et commencer à écrire du code en Rust ou C. Chacun de ces outils a été créé pour une raison et a ses propres cas d'utilisation.

Outre l'énergie utilisée par l'application finale, nous, développeurs, consommons également une quantité non négligeable d'énergie lors du développement de ladite application. Dans les applications à grande échelle, l'énergie utilisée durant le cycle de développement est probablement insignifiante comparée à l'énergie utilisée pour exécuter l'application. Mais dans certains cas, l'énergie que vous utilisez pour écrire et déboguer un langage plus complexe comme Rust peut être si élevée que vous seriez mieux servi en utilisant Python dès le départ.

De plus, en raison des fondations et bases de code existantes, vous êtes parfois forcé d'utiliser un certain langage dans certaines situations. Si vous créez un site Web, vous DEVEZ utiliser Javascript car c'est le langage principal que les navigateurs exécutent. Même si vous utilisez un autre langage de programmation, votre code sera d'abord transpilé en Javascript. Vous pouvez utiliser des langages comme C ou Rust sur un site Web via Web Assembly, mais sauf si vous avez un cas d'utilisation spécifique, vous seriez mieux servi avec Javascript.


Choisir du matériel efficace

Bien que l'industrie du logiciel ait souvent une influence limitée sur la direction du développement matériel, nous avons plus de pouvoir entre nos mains que nous le pensons.

Même si nous dépendons des fournisseurs de matériel pour exécuter notre code, le succès commercial d'un produit matériel repose fortement sur le logiciel disponible qu'il peut exécuter. Peu importe la qualité d'un matériel, il est totalement inutile s'il n'y a pas de logiciel de qualité compatible. Donc, lorsque nous décidons de consacrer notre temps et notre énergie à écrire des logiciels compatibles avec certains matériels, nous contribuons à leur succès financier et à la longévité de leur conception.

Si nous avons la capacité de choisir (et de déployer) nous-mêmes le matériel nécessaire pour exécuter notre code, nous devrions faire un effort pour choisir les produits les plus économes en énergie.

À titre d'exemple, les processeurs ARM sont plus économes en énergie que leurs homologues x86. Une recherche menée par deux chercheurs brésiliens concluait que les SOC basés sur ARM, lorsqu'utilisés pour des serveurs HTTP et SQL, sont 3 à 4 fois plus efficaces que les systèmes x86. En choisissant d'écrire des logiciels pour et en soutenant les SOC basés sur ARM plutôt que x86, nous contribuons au succès financier et au développement futur de matériels plus efficaces.


Utiliser l'IA quand c'est vraiment nécessaire

Les avancées en intelligence artificielle sont parmi les plus grandes réalisations de l'ingénierie moderne, résolvant des problèmes uniques que les architectures conventionnelles ne peuvent résoudre.

Pour produire un modèle d'IA, nous devons analyser, préparer et traiter un ensemble de données immense. Le modèle d'IA utilisera l'analyse de l'ensemble de données pour effectuer une tâche précise lorsqu'il est présenté avec une nouvelle pièce de données jamais vue auparavant. Ce processus est connu sous le nom d'entraînement.

Entraîner un modèle d'IA est un processus très gourmand en énergie. Selon une recherche de l'Université du Massachusetts Amherst, entraîner un seul modèle d'IA peut émettre autant de carbone que la fabrication et l'utilisation de cinq voitures au cours de leur vie.

Donc, avant de penser à entraîner un nouveau modèle d'IA, nous devons nous poser deux questions. Si la réponse à ces deux questions est non, alors seulement nous devrions commencer le processus d'entraînement d'un modèle d'IA personnalisé.

Le problème à résoudre peut-il être efficacement résolu par des logiciels conventionnels ? Si oui, nous devrions nous en tenir aux logiciels conventionnels. Une solution conventionnelle est presque toujours plus économe en énergie qu'un modèle d'IA et même si la solution est moins efficace qu'un modèle d'IA entraîné, elle pourrait ne jamais être utilisée suffisamment pour surpasser l'énergie utilisée pour l'entraînement.

Le problème peut-il être résolu efficacement par un modèle d'IA pré-entraîné ? Si oui, nous devrions utiliser un modèle pré-entraîné. Au fil des années, de nombreux développeurs ont entraîné divers modèles d'IA pour résoudre des problèmes communs à un niveau acceptable. Utiliser un modèle pré-entraîné économisera l'énorme quantité d'énergie requise pour entraîner un modèle depuis zéro.

La consommation d'énergie du processus d'entraînement est l'un des défis importants que l'industrie technologique, y compris nous, devons résoudre dans les années à venir.


Avoir un processus de développement de produit raisonné

Nous, les développeurs, sommes autant influencés par le battage médiatique autour des nouvelles technologies que n'importe quel autre groupe de personnes. D'autre part, nous écrivons tous des logiciels que nous espérons être utilisés par un grand nombre de personnes, soit pour des raisons économiques ou personnelles.

Au fil des ans, l'industrie logicielle a tenté d'inclure ou d'intégrer certaines des technologies à la mode dans les produits qu'elle développe. À un moment donné, tout contenait un élément de blockchain ou essayait d'être décentralisé. À un autre moment, tout était écrit en Javascript. Actuellement, tout contient de l'IA générative ou est "alimenté par l'IA", même si l'ajout de l'IA pourrait être totalement inutile. Dans de nombreux cas, l'ajout de ces fonctionnalités à la mode ne se traduit pas par le succès ou la longévité du projet. En fait, l'effet pourrait être l'opposé.

L'échec et le retard de tout projet signifient que toute l'énergie et la pollution créées pour le développement du produit ont été inutiles et que les problèmes qu'ils tentaient de résoudre resteront non résolus. En ayant un développement de produit plus sensé plutôt que de bourrer des fonctionnalités à la mode pour créer un buzz à court terme, nous augmentons la viabilité de nos produits et à long terme, contribuons à la réduction de notre empreinte carbone.


Vos intérêts sont alignés avec l'environnement

Outre les avantages évidents de la réduction de notre empreinte carbone, c'est en fait dans notre propre intérêt de le faire. La plupart des choses dont nous avons parlé ci-dessus nous permettent également d'économiser de l'argent et/ou d'améliorer nos produits.

Réduire l'utilisation de la mémoire et du CPU de notre application nous permet d'exécuter notre code en utilisant du matériel ou une infrastructure cloud moins chers. Avoir un système plus économe en énergie réduit nos factures d'énergie. Se concentrer sur les fonctionnalités principales de nos produits plutôt que d'essayer d'inclure des technologies inutiles réduit le coût de développement de nos produits et aide à leur succès à long terme.

Mettre en œuvre certaines de ces idées est plus facile à dire qu'à faire, mais nous, dans l'industrie du logiciel, devons faire notre part pour prévenir et atténuer notre influence négative sur l'environnement et le climat.