Sébastien Fulpius

L'optimisation de la phase d'exploitation d'un service

September 12, 2024 | 9 Minute Read

Les datacenters c’est entre 5% et 29% des impacts environnementaux du numérique, dépendant de l’indicateur environnemental pris en compte. Le potentiel de réduction des impacts est très important. On estime qu’on peut les réduire d’un facteur 10. Un autre avantage, c’est qu’on peut obtenir des résultats rapidement avec assez peu d’efforts. Si vous commencez à réfléchir à comment réduire vos impacts, c’est probablement par la phase d’exploitation qu’il vous faut commencer. Alors, prêt à optimiser votre service ?

La répartition des impacts

La majorité des impacts se produisent pendants ces deux phases du cycle de vie d’un serveur: les phases de fabrication et d’utilisation.

Si on veut réduire les impacts de la phase de fabrication, il faut fabriquer moins de serveurs. Pour le faire, on peut utiliser le moins de serveurs possibles pour notre service, garder les serveurs le plus longtemps possible et acheter des serveurs reconditionnés.

Pour la phase d’utilisation, les impacts viennent de la génération de l’électricité utilisée par les datacenters. Ici on a deux possibilités: réduire la consommation d’électricité ou réduire l’impact de la génération d’électricité.

Réduire la consommation d’électricité

La meilleure façon de réduire les impacts de la phase d’utilisation des serveurs, c’est de diminuer leur consommation d’électricité. Voyons comment le faire.

Choisir un datacenter avec un faible PUE

Une première méthode pour réduire la consommation d’électricité est de choisir un datacenter avec une haute efficacité énergétique. Dans un datacenter, on veut que le maximum d’électricité soit utilisé par les équipements utiles aux calculs (serveurs, réseaux) plutôt que par le reste (refroidissement, lumières. etc.). Pour cela on mesure le Power Usage Effectiveness (PUE) du datacenter. Il est calculé comme (l’énergie consommée par le datacenter) / (l’énergie utilisée par les équipements informatiques). Plus le PUE est petit, plus l’efficacité énergétique du datacenter est grande. Le PUE optimal est de 1, dans le cas ou toute l’électricité du datacenter est utilisée par l’équipement informatique. Actuellement les datacenters les plus efficaces ont un PUE d’environ 1.1.

Utiliser moins de serveurs

Si vous arrivez à faire fonctionner votre service en utilisant moins de serveurs, alors la consommation d’électricité est diminuée comme elle dépend de l’utilisation de ces ressources. Vous pouvez le faire de différentes manière, par exemple en éteignant des services inutiles ou en optimisant le code.

Energy proportionality

La consommation d’électricité dépend de l’utilisation des ressources, mais la relation n’est pas linéaire. Idéalement la consommation d’électricité d’un serveur serait proportionnelle à son utilisation. Si le serveur n’est pas utilisé, il consommerait rien, si il est utilisé à 50% il consommerait 50% de son pic de consommation et à 100% il consommerait le maximum. C’est ce qu’on appelle l’energy proportionality. Mais en pratique, la consommation évolue plutôt comme ça: il y a une consommation de base lorsque le serveur n’est pas utilisé, puis elle augmente rapidement. Passé un certain point, elle augmente de moins en moins.

Une courbe type de puissance en fonction de l’utilisation. La relation entre la puissance et l’utilisation n’est pas linéaire.

Ce qui veut dire que la façon la plus efficace d’utiliser un serveur est de l’utiliser au maximum de ses capacités. On veut donc utiliser le minimum de serveurs avec une haute utilisation de chaque serveur.

Réduire l’impact de la production d’électricité

En plus de diminuer la consommation d’électricité, on peut aussi diminuer les impacts générés lors de la production de l’électricité. Un impact majeur de la production d’électricité est l’émission de gaz à effet de serre, car l’électricité est souvent produite en brûlant des ressources fossiles. Les émissions vont dépendre de la région ou se trouve votre datacenter. On peut comparer différentes région en comparant leur facteur d’émission. Le facteur d’émissions compte le nombre de grammes de CO2 par kWh d’électricité produite. Plus il est bas, moins les émissions de CO2 sont grandes. En changeant de datacenter pour un autre dans une région avec un plus faible facteur d’émission, on peut réduire de manière significative les émissions liées à la génération d’électricité. Pour obtenir les facteurs d’émissions par pays, on peut utiliser electricitymaps. Vous pouvez accéder aux données historiques et aux données live.

Par exemple, si votre datacenter est en Allemagne, l’intensité carbone est de 416g/kWh en 2023. C’est une valeur élevée due aux nombreuses centrales à charbon du pays. Imaginons que vous changiez pour un datacenter en France, ou l’intensité carbone est de 59g/kWh la même année. Dans ce cas vous diminuez par 7 vos émissions pendant la phase d’utilisation. En faisant l’hypothèse que ces dernières comptent pour la moitié des émissions, ce qui est le cas en moyenne, vos émissions sont donc diminuées d’environ 40% !

On peut grandement réduire les émissions de CO2 de la phase d’utilisation en changeant la région du datacenter, et je vous conseille de le faire, mais il y a aussi d’autres points à prendre en compte. Par exemple, le passage à des énergies renouvelables permet de diminuer les émissions de CO2, mais ces dernières sont extrêmement consommatrices de métaux pour leur fabrication. Métaux dont l’extraction est extrêmement polluante. C’est un cas de transfert d’impact environnemental. Il faut donc ne pas seulement changer sa production d’énergie, mais aussi réduire sa consommation d’énergie.

Comment utiliser moins de serveurs

Il y a beaucoup de méthodes différentes pour fournir le même service en utilisant moins de serveurs. En voilà quelques exemples.

Supprimer les services zombies

Une étude a mesuré qu’environ un quart des serveurs sont des serveurs “zombies”, c’est-à-dire des serveurs qui sont allumés, mais qui fournissent un service qui n’est plus utilisé. Au cours des années, de nouveaux services sont déployés, mais les anciens ne sont pas toujours supprimés. Ces services continuent à tourner alors que personne ne les utilise. Ils peuvent être supprimés pour diminuer le nombre de serveurs utilisés.

Pour identifier les serveurs non-utilisées, vous pouvez utiliser des metrics. Un serveur avec une utilisation de CPU ou du réseau très faible a de grandes chances de ne plus être utilisé.

Éteindre et allumer les services seulement quand on en a besoin

Certains services fonctionnent tout le temps, alors qu’ils ne sont pas utilisés. Par exemple, beaucoup de services ne sont pas utilisés pendant les weekends et pendant la nuit. On peut éteindre ces services pendant ces période. Pour commencer, vous pouvez éteindre les clusters de test ou de staging quand ils ne sont pas utilisés, c’est à dire en dehors des horaires de bureau.

Meilleure utilisation des serveurs

Une plus haute utilisation des serveurs existants permet de fournir le même service avec moins de serveurs. Les serveurs vont ainsi se rapprocher de leur optimum d’efficacité énergétique. On peut utiliser les méthodes suivantes pour augmenter l’utilisation des serveurs.

Bien dimensionner les serveurs

On a tendance à choisir une instance avec plus de ressources que nécessaire. Soit parce qu’on ne sait pas combien de ressources on va avoir besoin, soit pour avoir une marge de sécurité. Mais le résultat est que les serveurs sont sous-utilisés. Choisir un serveur avec la bonne capacité permet d’utiliser moins de ressources. Vous pouvez utiliser des systèmes de monitoring et regarder l’utilisation de CPU et de mémoire pour vous aider à faire le bon choix.

Autoscaling

Une des raisons de l’overprovisionning est de pouvoir tenir les pics de requêtes. Ça fonctionne, mais ce n’est pas une bonne utilisation des ressources comme la plupart du temps l’utilisation est faible. Une meilleure façon de gérer les pics est de mettre en place un système d’autoscaling qui va augmenter le nombre de VMs en fonction de du nombre de requêtes reçues. Il faut aussi réduire automatiquement le nombre de VMs lorsque le nombre de requêtes diminue, sinon l’opération a peu d’intérêt.

Si vous utilisez Kubernetes, vous pouvez utiliser son système d’autoscaling pour déployer automatiquement des nouveaux nodes pendant les pics de requêtes.

Partage des serveurs

Faire tourner plusieurs programmes différents sur la même machine permet une meilleure utilisation des ressources dans certaines situations. Par exemple un programme peut avoir une utilisation haute du CPU à certains moments, tandis qu’un autre programme en a besoin à un autre moment. Faire tourner ces deux programmes sur le même serveur permet une utilisation des ressources efficace.

Un excellent exemple de partage des serveurs est le cloud public. Il y a une variété d’acteurs qui ont besoin de ressources à des moment différents. On peut donc fournir le même service avec moins de serveurs que si chaque acteur avait les serveurs nécessaires pour tenir leur pic d’utilisation.

Une manière encore plus efficace de partager les serveurs est d’utiliser les systèmes dit serverless des cloud providers. Contrairement à ce que le nom peut laisser entendre, il y a bien un serveur derrière, donc un impact environnemental. Mais il peut être bien plus bas que si ont utilisait directement des VMs. Le service scale automatiquement en fonction des requêtes. Comme les autres utilisateurs des systèmes serverless ont probablement des pics à d’autres moments que vous, on peut utiliser moins de serveurs pour fournir le même service.

Un autre possibilité pour partager les serveurs est le cluster scheduling, dont le système le plus connu est Kubernetes. Avec ce système, différents programmes sont distribués automatiquement sur les mêmes serveurs.

Instances spot et Preemptible instances

Certains cloud providers vous permettent d’utiliser la capacité non-utilisée de leurs serveurs quand elle est disponible. Ces VMs sont appelées spot ou Preemptible instances. Vous n’avez aucune garantie de quand votre VM va tourner, mais le prix est beaucoup plus bas. Ca peut être intéressant pour les jobs qui n’ont pas besoin d’être exécutés tout de suite. Par exemple pour un batch job lancé une fois par jour, ça ne change pas grand chose si il est lancé quelques heures plus tard. En laisant le cloud provider choisir quand il va lancer une VM, on obtient une meilleure utilisation des serveurs.

En résumé

Vous avez donc ces possibilités pour diminuer l’impact environnemental d’un service pendant sa phase d’exploitation:

  • Utiliser moins de serveurs en utilisant les méthodes expliquées ci-dessus.
  • Garder les serveurs plus longtemps et acheter des serveurs reconditionnés.
  • Changer la région du datacenter pour une région avec une plus faible intensité des émissions.
  • Changer de datacenter pour un datacenter avec un PUE plus faible.

Ressources:

Pour aller plus loin, vous pouvez consulter ces ressources:

  • Building green software: c’est la source principale de cet article, je vous en recommande vivement la lecture si vous voulez creuser le sujet.
  • Ce podcast pour en savoir plus sur le fonctionnement du serverless.