Dans un contexte de réchauffement climatique d’origine anthropique, les différents acteurs économiques questionnent leurs pratiques. L’informatique, responsable de 3 à 4 % des émissions de gaz à effet de serre, n’en est pas exempt.
Une nouvelle mouvance, le Green IT, tente de répondre plus largement aux enjeux environnementaux (réchauffement climatique, épuisement des ressources abiotiques, consommation d’eau)
Plusieurs axes d’amélioration existent : la sobriété numérique, l’allongement de la durée de vie des équipement, l’éco-conception logiciel, l’optimisation de l’utilisation des infrastructures, …
Nous allons, dans cet article, nous arrêter sur l’axe de l’optimisation de l’utilisation des infrastructures et plus particulièrement sur l’utilisation de l’élasticité pour maximiser l’utilisation des processeurs d’un serveur physique.
Elasticité et charge maximale
La maximisation de l’utilisation des processeurs d’un serveur physique est une des marottes de beaucoup d’ingénieur SRE (Site reliability engineering) que ce soit par passion de l’optimisation, pour diminuer les couts des infrastructures ou plus récemment d’un point de vue écologique. L’objectif est de dimensionner son infrastructure au plus juste par rapport aux traitements qui vont être exécuter dessus. On parle ici de dimensionner le nombre de CPU, la capacité en RAM, le nombre I/O disk par seconde, le nombre de requête réseau par seconde etc...
Il est simple à usage constant de dimensionner un serveur en fonction de l’usage de l’applicatif, ce qui est plus délicat c’est d’obtenir l’élasticité de son infrastructure.
Comment dimensionner dynamiquement une machine pour répondre à un besoin en calcul non linéaire et imprévisible ?
Plusieurs technologies combinées permettent d’obtenir l’élasticité : la virtualisation, l’infrastructure as code (IaC), les patterns de développement dit stateless, la répartition de charge, le monitoring temps réel, et le scaling out.
Une fois l’élasticité obtenue, il est nécessaire d’étrenner le système avec une configuration iso-production pour connaitre la charge maximale qu’il pourra atteindre. Elle sera à même d’évoluer tout au long de la vie de l’applicatif.
Cette charge maximale permet de réserver le nombre de machine nécessaire à notre applicatif.
Le problème qui se pose est de savoir que faire des machines réservées quand la charge maximale n’est pas atteinte.
Optimisation de l’utilisation des plages de calcul inutilisée
Prenons une infrastructure de 10 serveur avec 1 CPU, avec des usages liés à la présence des collaborateurs devant leur poste de travail, une représentation de la charge sur une journée pourrait être représentée comme ci-dessous.
Dans le cas ci-dessus on voit que le système n’atteint son utilisation maximale que 1h dans la journée, si cette consommation est régulière tous les jours, il est assez simple de prévoir des traitements sur les plages identifiées.
Mais l’utilisation d’un système n’est pas identique chaque jour, il est nécessaire de prévoir une zone tampon pour éviter que mon application subisse des baisses de performance du aux traitements annexes lancés
Pour obtenir cette zone tampon il est possible de combiner les n derniers jours d’utilisation pour en déduire les couples (plages horaires/ nombre de CPU) sur lesquels je peux prévoir des traitements annexes.
Si on prend un exemple sur les 5 derniers jours d’utilisation on obtient la modélisation suivante :
Graphique d’utilisation jour par jour – moyenne d’utilisation 111 CPU/J
Graphique combinant les plages d’utilisation permettant d’assurer la zone tampon – plage d’utilisation 139 CPU/J
A partir de la zone tampon (zt), la moyenne d’utilisation des serveurs Μ(u)et le nombre de cpu nCPU on calcul le pourcentage de non-utilisation :
Zt- Μ(u)/nCPU*24 = % de non-utilisation
(139-111) /240 = 11,6% de non-utilisation
En analysant les données on obtient que seul 11,6% de ma puissance CPU n'est pas utilisée, ce qui est un bon résultat mais améliorable, plus on ajoute de nouveau cas et plus la puissance non utilisée s’accroit. Là intervient la notion de machine préemptive
Les machines préemptives
Les machines préemptives, priviligiés pour des calculs intensifs en CPU, offrent une solution novatrice. Moins coûteuses car partagées lorsqu'elles ne sont pas utilisées, ces machines peuvent être récupérées à tout moment par leur réservataire, bien que cela implique un préavis très court.
Ces machines sont disponibles sur les différents Cloud providers (VM preemptives (GCP), Spot VM (Azure), Instance Spot (AWS). Il est possible de mettre en place se système on-premise mais cela constitue un vrai défi.
Les traitements sur ces machines doivent être courts, non bloquants et non urgents. Des workflows de tâches courtes peuvent être enchaînés, avec la possibilité de reprendre les traitements au niveau de la dernière tâche utilisée.
Il est possible d’enchainer des workflows de tache courte avec une possibilité de reprendre les traitements au niveau de la dernière tache exécutée.
Ici un applicatif pouvant évoluer sur cette infrastructure en nominal peut être un site e-commerce et sur les machines préemptives des traitements d’insertion dans le CRM ou l’alimentation d’un datalake.
Ce pattern de conception est le socle actuel des providers de cloud qui d’un côté propose de réserver de la puissance de calcul et de l’autre propose des machines à prix cassé en mode preemptive. (Preemptive VM chez GCP, Spot Instance chez AWS ou encore Spot VM chez Azure).
Mais ce pattern de conception est très peu utilisé en dehors des grands providers de Cloud pourtant il permet de maximiser l’utilisation des serveurs.
Voici quelques compétences clés nécessaires pour élaborer un tel système :
Orchestration et Conteneurisation : La capacité à orchestrer des conteneurs, par exemple en utilisant Kubernetes, est importante pour la gestion efficace des charges de travail, en particulier lors de l'utilisation de machines préemptives. La familiarité avec Docker et d'autres technologies de conteneurisation est également un atout.
Conception et développement Logiciel : Des compétences en développement logiciel sont nécessaires pour créer des applications capables de tirer parti des avantages des machines préemptives. Cela peut inclure la conception d'applications modulaires, l’utilisation de broker, de calcul distribué, la gestion des erreurs ou encore la gestion de la reprise de traitement.
Automatisation : L'automatisation des processus est cruciale pour tirer pleinement parti des machines préemptives. Des compétences dans l'infrastructure as code (IaC) et l'utilisation d'outils d'automatisation tels que Ansible, Terraform peuvent être précieuses.
Gestion de la Charge de Travail : Comprendre comment gérer efficacement la charge de travail et répartir les tâches de manière optimale sur les machines préemptives est une compétence clé. Cela inclut la modélisation des plages d'utilisation et la prévision de la demande.
Surveillance (Monitoring) : La mise en place d'un système de surveillance en temps réel est essentielle pour détecter les changements de charge, l'utilisation des ressources et les éventuelles défaillances.
Autoscaling : appréhender le dimensionnement à la demande, qui associe détection de la charge et élasticité de l’infrastructure est indispensable.
En résumé, la conception d'un système utilisant des machines préemptives exige un ensemble de compétences diversifié, allant des connaissances en cloud computing à la gestion de la charge de travail.
Les limites des machines préemptives
Bien que les machines préemptives offrent des avantages significatifs en termes de coût et d'efficacité, elles présentent également certaines limites.
Disponibilité Limitée : Les machines préemptives sont quasiment disponibles uniquement dans les environnements cloud, limitant ainsi leur utilisation à ces plateformes. Cette dépendance exclusive au cloud peut restreindre la portabilité des applications.
Coût de mise en place : Le cout de mise en place d’un système de machine préemptive sur son infrastructure est grand et nécessite une taille critique pour envisager l’investissement.
Préavis Court : En raison de leur nature préemptive, ces machines peuvent être récupérées par d'autres utilisateurs avec un préavis très court. Cela nécessite une conception logicielle adaptée, où les tâches peuvent être interrompues sans compromettre l'intégrité des données ou des opérations en cours.
Tâches Courtes et Non Bloquantes : En raison du risque de préemption, les tâches exécutées sur des machines préemptives doivent être courtes, non bloquantes et non urgentes. Cela limite le type de charges de travail qui peut bénéficier de ces machines et nécessite une conception logicielle spécifique.
Besoin de Compétences Techniques Avancées : La mise en œuvre réussie de machines préemptives exige des compétences techniques avancées dans le cloud computing, la conteneurisation, la virtualisation, le monitoring, la gestion de la charge de travail, la sécurité et l'automatisation. Le recrutement et la rétention de talents qualifiés peuvent être des défis.
Conclusion
En conclusion, l'élasticité des machines préemptives émerge comme un levier majeur des stratégies Green IT à venir. Dans un contexte où la responsabilité environnementale devient un impératif, l'optimisation de l'utilisation des ressources informatiques devient une nécessité. L'utilisation judicieuse de l'élasticité, combinée à des pratiques telles que la modélisation des plages d'utilisation et l'intégration de machines préemptives, offre une voie prometteuse vers une informatique plus efficiente en permettant d’obtenir une utilisation maximisée des serveurs.
L'efficacité de ces stratégies repose cependant sur une mise en œuvre minutieuse et une expertise technique élevée. Les professionnels de l'informatique, en quête d'excellence technique, sont essentiels pour concevoir, mettre en œuvre et maintenir ces systèmes complexes. Il est aussi essentiel de former les ingénieurs logiciel d'aujourd'hui et de demain à comprendre l'importance de maitriser son environnement, dès la conception, d'un coté de minimiser l'énrgie consommer à l'utilisation des applicatifs et de l'autre de maximiser l'utilisation des serveurs.
Mais attention à l’effet rebond ! Le maitre mot en terme d'écologie reste la sobriété !
Sources :
Que signifie Machine virtuelle préemptive Google? - Definition IT de LeMagIT
L'empreinte environnementale du numérique | Arcep