Abonnez-vous au flux

Alors que les beaux jours reviennent peu à peu dans l'hémisphère nord, encore marquée par les séquelles de la pandémie, une problématique resurgit au centre des préoccupations mondiales : celle du changement climatique. Les vagues de chaleur extrême, suivies d'autres phénomènes météorologiques tout aussi intenses, nous rappellent que le dérèglement climatique est bel et bien réel.

Père de deux merveilleux enfants qui, je l'espère, vivront jusqu'en 2090 en au-delà, je me pose la question de l'incidence des architectures logicielles sur le réchauffement climatique, et je m'efforce de trouver des moyens de créer des solutions plus performantes et plus durables.

Graphique qui montre l'augmentation des températures à l'échelle mondiale

(Source : université de Reading, Institute for Environmental Analytics)

Commençons par l'histoire et la définition du terme « durabilité ». La première occurrence de ce mot remonte à 1713, en Allemagne, où Hans Carl von Carlowitz utilise le terme « Nachhaltigkeit » dans un ouvrage sur la foresterie. Il s'en sert pour décrire une exploitation responsable d'une ressource naturelle à long terme. Mais l'idée est bien plus ancienne : les peuples et sociétés antiques limitaient déjà leur usage des ressources naturelles

C'est la Commission mondiale sur l'environnement et le développement de l'Organisation des Nations unies qui a largement influencé la définition moderne de ce terme. En 1983, le Rapport Brundtland définit le développement durable comme un développement qui « répond aux besoins du présent sans compromettre la capacité des générations futures de répondre aux leurs ». Dans cet article, je garderai cette définition, même si l'usage moderne est axé sur trois sphères : économique, environnementale et socioécologique.

L'effet des architectures logicielles sur l'environnement

La durabilité numérique est centrée sur « les conditions essentielles à la création d'artefacts et d'écosystèmes numériques durables ». Comme d'autres définitions de la durabilité, elle :

  • s'axe sur le présent et l'avenir, et comporte donc une dimension temporelle ;
  • affirme que les ressources doivent être protégées, en particulier celles qui ne sont pas renouvelables ;
  • assure la persistance d'un objet de référence à court et à long terme.

L'architecture durable vise une réduction de la consommation des ressources. Dans notre secteur d'activité, l'énergie est la ressource principale sur laquelle nous pouvons faire la différence. Que ce soit pour fabriquer notre matériel ou pour l'alimenter, la majeure partie de l'électricité que nous consommons provient des énergies fossiles. Les hyperscalers l'ont bien compris, et s'emparent du sujet : en 2020, Azure a publié son guide de l'architecture logicielle durable, et fin 2021, AWS a ajouté la notion de développement durable aux piliers de son cadre Well-Architected Framework.

[Découvrez en quoi l'automatisation peut transformer votre entreprise tout en unifiant les personnes et les processus.]

Plusieurs études à l'échelle mondiale s'intéressent également à la quantité d'énergie gaspillée, aux raisons de ce gaspillage, et proposent des pistes pour faire face à ce problème. Par exemple, la méta-étude de l'organisation allemande Bitkom compile des études publiées entre 2012 et 2019. Voici ses principales conclusions :

  • 90 % des émissions de gaz à effet de serre produites dans les datacenters sont dues à leur utilisation.
  • Les analystes prévoyaient une production de 200 à 250 tonnes de CO2 dans les datacenters en 2021.
  • Les serveurs, réseaux et composants de stockage sont à l'origine de 60 % des émissions de gaz à effet de serre.

Ces résultats indiquent deux pistes principales pour la conservation de l'énergie : les applications et l'infrastructure.

J'ai emprunté et adapté l'infographie ci-dessous, qui provient du cadre AWS Well-Architected Framework.

Deux types de durabilité : celle sur l'infrastructure et celle de l'infrastructure

(Source : Markus Eisele, adaptée d'une infographie tirée du cadre AWS Well-Architected Framework)

Comment rendre votre architecture logicielle plus durable ?

Avant de vous donner des recommandations, je me permets de partager cette citation de l'ingénieur William Edwards Deming :

Sans données, tout ce que vous avez, c'est une opinion.

J'aimerais rappeler par là que toute recommandation n'a de pertinence que si vous pouvez la définir et la mesurer. Vous devez mesurer les répercussions de votre charge de travail, mais aussi modéliser son incidence sur l'avenir. Vous pouvez, par exemple, établir des objectifs à long terme pour chaque charge de travail dans le cloud en cherchant à réduire les ressources de calcul et de stockage que chacune nécessite et à définir des améliorations pour augmenter leur durabilité à toutes.

Voici cinq points à retenir pour concevoir des applications en tenant compte de la dimension de durabilité. Vous y trouverez également quelques recommandations.

1. Conception, utilisation et stockage des données

Réduisez autant que possible le stockage et l'utilisation des données. Pour ce faire, vous pouvez mettre en œuvre une politique de classification des données. Identifiez celles qui doivent être stockées, pour quelles raisons et pour combien de temps.

Définissez des classes d'accès et des types de stockage plus rapides ou plus lents, selon les besoins. Pour commencer, déterminez le poids de vos données sur les ressources mobilisées, puis supprimez celles qui se révèlent inutiles tout en mettant en place des politiques de cycle de vie. Évitez le surprovisionnement des solutions de stockage et limitez au strict minimum les déplacements de données au-delà du périmètre du réseau. Enfin, utilisez des technologies d'accès aux données qui proposent des systèmes de récupération en fonction de l'emplacement, ainsi que différents modèles de stockage.

2. Conception d'applications

Définissez des règles d'utilisation pour les composants. Idéalement, rien ne doit rester activé en permanence et consommer de l'énergie en continu. Favorisez le fonctionnement en parallèle et asynchrone des ressources. Les tâches non urgentes peuvent être réparties et gérées de façon asynchrone, de sorte qu'elles s'exécutent uniquement lorsque de l'électricité décarbonée est disponible. Utilisez des stratégies de déplacement ou de modelage de la demande pour planifier l'utilisation de certaines parties de l'application lorsque cela est nécessaire. Intégrez des éléments de surveillance des applications adaptés pour effectuer le suivi des changements au niveau de l'exécution, et ainsi évaluer les effets sur la durabilité. Favorisez également des services gérés mieux adaptés et plus durables.

3. Déploiement, utilisation et mise à l'échelle des plateformes

Cet aspect est plus complexe, car il repose sur des choix spécifiques en matière d'architecture. D'emblée, on peut penser à des technologies axées sur l'utilisation et la mise à l'échelle, comme Knative et le serverless, qui ont déjà été mentionnées plusieurs fois, par exemple dans le podcast Going green with serverless (en anglais).

La plupart du temps, un environnement Kubernetes classique utilise le schéma « un cluster par application » ou parfois « plusieurs clusters (intermédiaire, production, développement) par application ». L'utilisation est donc faible dans ces clusters. Si un pod passe à zéro, vous payez tout de même les coûts associés à Kubernetes, sans parler des émissions de gaz à effet de serre liées au matériel. Même si la consommation électrique de la charge de travail est plus basse, ce qui correspond à votre objectif (en imaginant que les coûts de mise en route sont faibles, comme c'est le cas avec des frameworks tels que Quarkus), l'amélioration reste souvent minime.

Par conséquent, prenez le temps d'examiner en détail l'ensemble de votre configuration avant d'ajouter des technologies à votre application. Idéalement, utilisez le moins d'environnements possible pour la développer et la tester. Améliorez la conception à l'aide d'une approche entièrement axée sur l'automatisation, de sorte à optimiser l'utilisation de vos environnements.

[Découvrez comment la modernisation de l'informatique peut aider à réduire la dette technique.]

Les technologies capables de gérer les pics d'activité intense offrent un autre avantage non négligeable. Par exemple, un système Jenkins standard avec des ensembles prédéfinis de nœuds de calcul et de gestion serait plus efficace qu'un pipeline de versions Tekton évolutif. Vous aurez également tout intérêt à utiliser du matériel spécifique pour vos charges de travail. Cette approche est axée sur des unités de calcul en virgule flottante et des processeurs graphiques et repose sur des calculs complexes, mais elle peut se révéler utile sur des types d'instances adaptés à des charges de travail spécifiques.

4. Efficacité du code

D'après la Green Software Foundation, « Le code le plus efficace, c'est l'absence de code, et le meilleur moment pour identifier les tâches non nécessaires, c'est le plus tôt possible dans le processus de développement. » L'une des clés serait d'éviter les objectifs trop ambitieux ou les exigences disproportionnées. Vous pouvez commencer, par exemple, par adapter le temps de conservation des journaux ou les contrats de niveau de service (SLA) aux contraintes du monde réel.

Même s'il est impossible de contourner les exigences posées par la loi, il est crucial d'identifier les paramètres que vous pouvez faire varier. Si vous pensez qu'un certain langage de programmation pourra vous donner un avantage, détrompez-vous : autant utiliser celui que vous préférez. En effet, d'après les conclusions d'une étude de 2017 (mise à jour en 2021) : « Si le langage le plus efficace sur le plan énergétique dans tous les tests est presque toujours le plus rapide, il convient de souligner qu'aucun n'est systématiquement meilleur que les autres ».

5. Exploitation

Les services cloud gérés à haute densité de calcul offrent un avantage considérable. Ces services répartissent leurs ressources entre plusieurs milliers d'utilisateurs, voire plusieurs millions, ce qui permet d'atteindre un taux d'utilisation extrêmement élevé avec des équipes d'ingénierie de la fiabilité des sites (SRE) plus restreinte pour assurer le bon fonctionnement des infrastructures et des applications.

[Téléchargez gratuitement le livre numérique : Modernisez votre environnement informatique avec des services cloud gérés]

Sachez également qu'il existe de plus en plus de projets Open Source sur lesquels vous pouvez vous appuyer pour atteindre vos objectifs en matière de durabilité. Par exemple :

  • Kube-green : un module complémentaire de Kubernetes qui désactive automatiquement (certaines de) vos ressources lorsqu'elles ne sont pas utilisées
  • Cloud Carbon Footprint : un outil qui permet d'estimer la consommation énergétique et les émissions de gaz à effet de serre liées à l'utilisation d'un cloud public
  • Scaphandre : un agent de mesure de la consommation électrique
  • Kube-downscaler : réduit les charges de travail Kubernetes ou les met en pause en dehors des heures de bureau
  • Kepler (Kubernetes Efficient Power Level Exporter) : utilise la technologie eBPF pour extraire des statistiques énergétiques d'un système et les exporter sous la forme d'indicateurs de mesure Prometheus

Chaque effort compte

Code + Données = Énergie = Émissions de dioxyde de carbone

Si cette simple équation vous parle, et que vous pouvez non seulement définir, mais aussi mesurer votre exploitation des ressources, alors vous êtes sur la bonne voie.


À propos de l'auteur

Markus Eisele is a Red Hat Developer Tools Marketing Lead at Red Hat. He is also a JavaTM Champion, former Java EE Expert Group member, founder of German JavaLand and a speaker at Java conferences around the world.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

Parcourir par canal

automation icon

Automatisation

Les dernières nouveautés en matière d'automatisation informatique pour les technologies, les équipes et les environnements

AI icon

Intelligence artificielle

Actualité sur les plateformes qui permettent aux clients d'exécuter des charges de travail d'IA sur tout type d'environnement

open hybrid cloud icon

Cloud hybride ouvert

Découvrez comment créer un avenir flexible grâce au cloud hybride

security icon

Sécurité

Les dernières actualités sur la façon dont nous réduisons les risques dans tous les environnements et technologies

edge icon

Edge computing

Actualité sur les plateformes qui simplifient les opérations en périphérie

Infrastructure icon

Infrastructure

Les dernières nouveautés sur la plateforme Linux d'entreprise leader au monde

application development icon

Applications

À l’intérieur de nos solutions aux défis d’application les plus difficiles

Original series icon

Programmes originaux

Histoires passionnantes de créateurs et de leaders de technologies d'entreprise