Concilier architecture, data et écologie, c'est possible ? Une introduction au green IT.

Pourquoi parler d’écologie et d’informatique ?

L’impact environnemental de l’informatique et de son expansion ces dernières années n’est plus à prouver : consommation énergétique affolante des data centers, mise à jour régulière des parcs informatiques des entreprises, obsolescence accélérée de nos matériels… Tous ces facteurs font de l’informatique l’un des domaines les plus polluants de la planète. Des actions pour limiter son impact existent, mais restent encore rares. Amazon a annoncé par exemple la neutralité carbone de leurs datacenters pour 2040 et Google achète autant d’énergie verte qu’il en consomme.

Aujourd'hui, nous ne nous rendons pas compte de ces problématiques. Avec l’avènement du cloud et de la simplicité d’accès aux ressources, l’utilisation de plus en plus de puissance pour des calculs, la place de plus en plus grande du machine learning et le traitement massif de données, notre consommation de l’informatique est devenue titanesque. Mais là où de nouveaux challenges émergent, des opportunités se créent.

Vous pourrez trouver dans ce rapport des informations quant aux impacts du numérique dans la consommation d’énergie mondiale, mais aussi les impacts du matériel informatique (téléphones, ordinateurs) : https://theshiftproject.org/wp-content/uploads/2018/11/Rapport-final-v8-WEB.pdf

Qu’est-ce que le Green IT ?

Depuis quelques temps, on entend le terme de Green IT. Intéressons-nous à ce courant de pensée qui pourrait s’apparenter à un nouveau buzz word, mais qui pourrait avoir un apport pertinant au domaine l’informatique.

Le Green IT, ou sobriété numérique en français, est un terme qui a été défini plusieurs fois ces dernières années. On lui prête volontier tout un ensemble de valeurs qui entrent plus ou moins dans son giron.

On peut déterminer trois grands principes qui se rattachent à la sobriété numérique ou Green IT, il d’agit d’une démarche d’amélioration continue qui vise à réduire l’empreinte écologique, économique et sociale :

  • Des technologies de l’information et de la communication.
  • De l’organisation (au sens physique du terme) grâce aux outils numériques.
  • D’un produit ou d’un service, grâce aux Technologies de l’Information et des communications.

On voit toute la portée ici de ce terme, qui va bien au-delà des aspects techniques liés aux technologies de l’information, et s’intéresse aussi aux aspects sociaux et économiques des projets informatiques. Pour aller plus loin, une définition complète est disponible sur le site de GreenIt.

Comment mettre cette nouvelle vision au centre des préoccupations ?

Le Green IT c’est bien, cela donne bonne conscience et une bonne image. On pense à l’écologie. Mais est-ce que cela peut apporter quelque chose à un client ? Comment lui faire comprendre la nécessité de passer à un mode de travail plus vert ? Cela va-t-il lui coûter plus cher ? Ou au contraire, lui réduire sa note ? S’ajouter encore de nouvelles contraintes dans notre métier ne va-t-il pas à l’encontre de sa complexité inhérente ?

Dans cet article, nous nous concentrerons sur le rôle de l’architecte dans un contexte big data. Nous le verrons dans la poursuite d’une amélioration de l'empreinte carbone de l’entreprise et comment la mise en place des principes de sobriété numérique peut être transformée en opportunité.

Ressources partagées

Lorsqu’on lance un nouveau projet dans une entreprise, on a tendance à vouloir tout construire de zéro. Construire un nouveau datalake, une nouvelle infrastructure sur Kubernetes, ou mettre en place un cluster Kafka. Mais souvent il existe déjà dans l’entreprise une plateforme qui utilise ce type d’outils, et cela peut être une bonne idée de mutualiser les environnements SI. L’utilisation de ressources partagées est cependant contraignante : cela demande un peu de rigueur et de compromis entre les équipes, mais permet aussi de réduire la quantité de serveurs ou de services que l’on doit utiliser au sein de l’entreprise.

Ressources temporaires

Avec l’avènement du cloud, des services managés, du serverless mais surtout de la conteneurisation, le cycle de vie de nos infrastructures a bien changé. Certains composants de nos Systèmes d’Information n’ont pas besoin de vivre éternellement comme cela pouvait être le cas sur des serveurs dédiés, mais peuvent être arrêtés car non utilisés. Dans le cas d’une pipeline de données, une fois le traitement terminé, quel intérêt de continuer à avoir un cluster qui tourne si on sait qu’aucun traitement ne sera relancé avant le lendemain ?

L’utilisation sur AWS de Spot Instance en est une très bonne illustration. Il s’agit d’instances non provisionnées par Amazon, qui ne sont donc pas utilisées. Si le besoin se fait sentir, plutôt que de provisionner à long terme des instances, on peut utiliser de façon temporaire une puissance de calcul supplémentaire, et ce à moindre coût. Il est aussi possible, par exemple, de créer des clusters EMR (Elastic Map Reduce, cluster Hadoop dans le cloud AWS) de façon éphémère, pour un simple traitement, comme décrit dans cet article.

L’utilisation de services serverless sur les différents cloud providers permet aussi de n’utiliser que ce dont on a besoin, et par conséquent de ne payer que pour l’utilisation des ressources utiles. L’utilisation de FaaS (Function as a Service, type Lambda chez AWS) est un très bon exemple de cela, car on peut limiter son utilisation à quelques millisecondes.

Ressources dimensionnées

Choisir le dimensionnement de ses instances est une tâche compliquée. On a tendance à vouloir prendre plus gros pour assurer, mais est-ce vraiment nécessaire ? Lorsque l’on connaît son use case, ses cas à la marge et la quantité de données qui sera traitée par notre système, il faut exécuter des tests de charge pour se rendre compte de comment va se comporter l’application et de voir si elle est capable d’absorber le volume prévu. Il est possible par exemple de mettre en place un capacity planning, permettant d’établir une stratégie quand à la gestion de la charge de l’application. Avec un petit peu de marge et en utilisant des processus d’auto-scaling pour absorber des pics de charge, obtenir un premier dimensionnement relativement correct n’est pas sorcier.

Il est de plus plus intéressant, pour limiter son impact, d’utiliser des ressources de taille raisonnable (pas de serveur mastodonte), et de gérer l’ajout et la suppression de nouvelles machines en cas de montée de charge. Cela va nous donner à la fois plus de flexibilité pour limiter la consommation et s’adapter aux changements d’utilisation de l’application.

Identifier ses use cases et se limiter à ceux-ci

La meilleure pratique pour limiter l’impact de l’informatique est de bien définir les use cases. Définir finement les limites, se conformer aux nécessités, éviter de stocker et traiter de la donnée qui ne nous intéresse pas.

La meilleure façon d’avoir un impact sur les use case est d’impliquer les métiers en leur expliquant que si on stocke et qu’on traite 3 ans de données alors qu’ils n'accèdent qu’à 3 mois de données, on crée une surconsommation énergétique, au delà d’un surcoût dû au stockage et traitement supplémentaire.

L’un des principes fondamentaux de l’informatique, “Less is more”, est aussi totalement applicable dans ce contexte. Il ne sert à rien de stocker et de traiter de la donnée dont on aura potentiellement besoin pour un use case dans 1 ou 2 ans. Cela se recoupe de plus avec les principes de la RGPD (Réglementation générale pour la protection de données), directive européenne qui fixe des limites quant à l’utilisation des données personnelles pour éviter les dérives.

Optimisation des algorithmes

Ce n’est peut être pas le rôle direct de l’architecte, mais avec une connaissance des principaux outils de traitement de données, on peut se rendre compte que l’on peut toujours optimiser un traitement. Cela à un double avantage :

  • Réduction du temps de calcul, donc accélération des traitements
  • Réduction du besoin matériel lié à ce traitement

Nous nous retrouvons en finalité avec une réduction des coûts liés au traitement, mais aussi de l’énergie consommée par notre traitement et des moyens matériels employés.

Afin d’optimiser nos traitement, il y a toujours un grand nombre de possibilités dépendant de la technologie utilisée :

  • Utilisation de formules mathématiques permettant de réduire la complexité de nos algorithmes, comme on peut retrouver dans le projet Euler (Vous en avec une présentation lors du DevFest Nantes cette année)
  • Mise en cache de datasets pour faire des jointures en Spark
  • Design de bases pour optimiser le requêtage

Cycle de vie des données

Le stockage des données est devenu si ridiculement bon marché qu’il est facile de se dire que l’on va stocker notre donnée ad vitam eternam. Cependant, mettre en place des politiques de gestion du cycle de vie de la donnée pour supprimer automatiquement les données obsolètes permet un gain en lisibilité, et nous permet de nous concentrer que sur les données utiles.

Quand on parle de données, il ne faut pas oublier les logs qu’écrivent nos applications. Ces fichiers textes peuvent prendre une taille considérable et être désuets très rapidement (en une semaine les logs peuvent ne plus être utiles !). Il est donc préférable d’avoir une solution de purge de ces logs pour ne pas consommer outre mesure de l’espace de stockage.

D’ailleurs, c’est une bonne habitude que chacun peut prendre à son échelle en supprimant ses mails anciens, et en priorité ceux avec des pièces-jointes volumineuses. La lisibilité de votre boite mail que vous gagnerez sera bénéfique, vous n’avez plus besoin de ce mail de publicité de 2016 !

Le Edge Computing (ou informatique de périphérie)

La collecte et l’envoi de données à partir de nombreux périphériques vers un data center, ou vers le cloud, est devenu au fil du temps une norme, notamment dans l’IoT (Internet of Things). Or, dans de nombreux cas, cela consomme une très grande quantité de bande passante pour accumuler toutes ces données qui viennent parfois de partout dans le monde vers un seul data center. C’est dans ce genre de cas où peut intervenir le concept de Edge Computing. L’idée derrière le terme est d’effectuer les calculs directement au niveau des équipements distants, ou sur un serveur co-localisé, plutôt que sur un serveur central. Cela permet de réduire sa consommation en bande passante et en puissance de calcul dans le datacenter.

Transformer la contrainte en opportunité

Toutes ces optimisations, qui s’apparentent en premier lieu à des contraintes, ne sont pas uniquement bonnes pour l'empreinte carbone du projet ou de l’entreprise. Le client va sentir des améliorations sur différents aspects : rapidité des traitements, optimisation du stockage des données et surtout réduction des coûts de la plateforme grâce aux différentes optimisations effectuées.

Conclusion

Nous vivons dans un monde qui se transforme. Les plus grandes manifestations actuelles et les plus grandes préoccupations de notre temps devraient se concentrer sur le climat et sa protection. Nous avons aussi un rôle à jouer et cela n’est pas incompatible avec nos travaux. Tout le monde peut agir à son échelle, et on peut changer les choses.

Nous avons maintenant accès, grâce au cloud, à énormément de puissance de calcul et de stockage, le tout à des prix plus que corrects. Pourtant, ces technologies ne sont pas sans conséquences sur notre environnement. Nous devons donc, en tant qu’architecte, les utiliser avec parcimonie. Un grand pouvoir implique de grandes responsabilités.

Pour que le Green IT ne reste pas qu’un faire-valoir, pensez-y lors de vos prochaines études d’architecture de données, cela vous apportera plus qu’une bonne conscience.