Green Coding 2/7: Principe de la gestion durable des données

Thierno Diallo
Just-Tech-IT
Published in
10 min readNov 8, 2023

Comme promis dans le premier article introduisant le green coding ainsi que ses principes, ici l’article, je vous soumets ci-après mon deuxième article de la série de 8 articles.

En prenant en compte la présence sans cesse grandissante des données et de leur exploitation dans notre vie de tous les jours, traiter l’aspect gestion et traitement de cette dernière semble nécessaire à fin d’améliorer notre sobriété.

Dans la suite de cet article, nous parlerons rapidement du pourquoi avoir une approche durable de la gestion des données, des champs couverts par cette approche, ainsi que les pratiques nous permettant de tendre vers cette approche durable.

Une fois n’est pas coutume, je tiens à préciser que, même si je prends les langages java ou .net en exemple dans mes articles, l’ensemble des principes et concepts sont complètement décorrélés d’un langage. Ils sont applicables partout.

1. Pourquoi nous devons gérer nos données de manière durable

Cela ne surprendra personne si j’avance la raison de sobriété et de réduction de l’impact environnemental. ci-après un article sur la prévision de croissance sur le volume données entre 2010 et 2025 Data growth worldwide 2010–2025 | Statista.

Cependant, ça ne se limite pas qu’à ça, car nous avons une question économique à travers la réduction des coûts de stockage et de traitement. Je vous partage les articles suivants traitant des couts économiques des hébergements :

Green IT : Comment rendre votre infrastructure informatique plus durable — Leasétic (leasetic.fr)

Réduire les dépenses d’infrastructure informatiques: stimuler l’efficacité aujourd’hui! (finmodelslab.com)

Le guide complet de la tarification du stockage en cloud | Veritas

Microsoft Word — gouvernancedesdonnéesvf.rtf (core.ac.uk)

Une partie de cette réduction pourrait être investie pour améliorer la sécurité, la confidentialité, l’intégrité des données à travers la mise en place des infrastructures de qualité et répondant aux normes.

Nous pouvons parler aussi du respect de l’éthique et de la réglementation sur le stockage et le traitement des données.

Tous ces bénéfices mis bout à bout permettent d’avoir un écosystème plus viable à long terme.

2. Quels champs sont abordés dans cet article

Dans cet article nous couvrirons principalement les pratiques de gestion durable de 2 aspects : l’aspect stockage et hébergement, et l’aspect traitement.

a- Stockage et Infrastructure

i- Choix

Le choix de l’endroit et du type d’hébergement d’une source de données est une décision très critique pour être prise à la légère.

Non seulement, cela exerce une influence significative sur les performances du système, sa disponibilité et sa sécurité, mais aussi sur l’impact de ce système sur l’environnement.

Pour qu’un choix soit pertinent et efficient, Il faut en amont bien analyser et évaluer le besoin.

Par exemple :

  • Le type et le niveau de confidentialité des données à stocker : qui tire le sujet de l’endroit et du comment stocker et sécuriser les données (On-Premises, Cloud Public/Privé ou Hybride);
  • La charge de travail liée aux traitements de ces données : pour traiter le sujet de dimensionnement et puissance de base de données;
  • Le type et la fréquence d’accès à ces données

Accès Cold : Accès non fréquente et un peu moins rapide : ce type de stockage est plus efficient en termes économique et de consommation ressources. Cependant, il ne faut l’utiliser que sur des données qui ne sont pas nécessaire en temps réel.

Accès Hot : Accès rapide et fréquent : c’est un choix plus couteux économiquement et qui consomme plus de ressource par le choix des composants utilisés. A choisir en que si votre système à besoin d’un accès rapide et régulier aux données. Si c’est du temps réel ou quasi par exemple.

  • La durée de conservation des données;
  • Ainsi que le niveau tolérance aux pannes : qui va traiter le sujet des patterns de résilience à implémenter ?

ii- Bonnes pratiques

Pour garantir la sécurité, la fiabilité, la performance, ainsi que l’efficience économique et environnementale, il est crucial de mettre en place les bonnes pratiques de stockage de données.

Dont, voici quelques recommandations :

  • Déterminer en amont le type de données à stocker, le volume, la sensibilité et la fréquence de mise à jour;
  • Choisir la solution de stockage en fonction du besoin;

SGBD : pour les données structurées

NoSQL : pour des données semi-structurées, et le scaling horizontal

Stockage d’Objet : pour les fichiers et objets binaire

  • Pratiquer de la sauvegarde régulière (en n’oubliant pas de de supprimer les anciennes sauvegardes), de l’archivage;
  • - Définir la durée et la politique de rétention des données (applicatives et logs);

Qui permettra de faire des purges des données, libérer du stockage et réduire les données à traiter et consommer moins de ressources (Mémoire/Réseau)

  • Optimiser l’indexation;

Accélérer les traitements et consommer moins de ressources (CPU/Mémoire)

  • Scaler les infras : pour les traitements en masse très couteux opter pour augmentation de puissance au besoin et redescente automatique à la fin du traitement;

Cela permet d’utiliser que les ressources dont nous avons besoin

  • Configurer le bon niveau de log

Sur des systèmes de collecte et restitution de log comme « App Insight », nous allons payer à l’écriture. Donc avoir un niveau de log inadéquat (debug) sur un système n’est non seulement pas utile, et en terme économique et environnemental c’est une catastrophe.

b- Traitement des données

i- Compression des Données

La pratique qui consiste à compresser les données avant sauvegarde est une très bonne approche.

Cette approche permet de réduire la taille des données, par conséquent réduire l’espace de stockage utilisée, mais aussi la bande passante réseau nécessaire pour le faire transiter. Néanmoins, la compression seule ne suffit pas, elle doit être faite de manière efficace.

Ci-après l’exemple de 2 compressions d’efficacité différentes en java.

exemple de compression

ii- Déduplication

Pour réduire le besoin de stockage, le temps CPU de traitement, les I/O disque, ainsi que notre consommation d’énergie. Nous pouvons implémenter les mécanismes de déduplication qui consiste à éviter de stocker 2 données égales à 2 endroits différents. Autrement dit, c’est le procéder qui consiste à supprimer les doublons ou données redondantes.

La déduplication peut s’effectuer de différentes manières, en fonction des besoins.

Quelques exemples simples de déduplication en java.

Exemple 1 :

Exemple 2 : en se servant des structures de données adéquates en l’occurrence les Set ici, nous pouvons facilement éliminer les doublons.

ex: Déduplication avec les structures de données

La déduplication des données peut être utilisée autant sur du traitement de fichier, que sur la gestion de base de données pour ne citer que ces deux utilisations.

Nous pouvons noter aussi que l’utilisation de l’api Stream permet de faire une déduplication aussi avec sa méthode distinct().

Pour des besoins plus complexes, nous pouvons aussi mentionner les librairies tierces comme « Apache Compon Collections » ou « Google Guava » qui peuvent faire un très bon travail.

Limites de la déduplication

Parmi les risques nous pouvons citer celui de perte de données car les données ne sont pas en double.

Mais nous pouvons aussi citer les ressources (CPU/RAM) utilisées pour faire ce traitement. Donc, il faut l’utiliser après analyse, pour bien choisir le type utilisé, la fréquence.

iii- Caching Intelligent

Ce mécanisme consiste à stocker les données temporairement en mémoire de manière proche et organisée, de façon à accélérer la récupération.

L’avantage non négligeable du caching intelligent réside sur le fait d’être capable de gérer automatiquement la mise à jour des données lorsqu’il y a modification, ou de rafraichir périodiquement pour éviter l’utilisation de données obsolètes.

Nous pouvons mentionner aussi l’avantage qu’apporte la mise en cache sur l’amélioration des performances en évitant la répétition des calculs couteux, ou en réduisant la charge sur les sources de données, par conséquent, le trafic réseau aussi.

Exemple: nous allons illustrer un cas simple de mise en cache intelligente en java avec la bibliothèque caffeine.

Limites du caching intelligent

Bien que le caching présente de nombreux avantages, il possède aussi quelques désavantages ou du moins quelques défis. Défis auxquels, il faut en être conscient pour mieux les traiter.

Parmi les défis potentiels, nous pouvons parler de la complexité de la gestion des erreurs et des expirations, la gestion de la saturation de cache et de l’obsolescence des données, les pics de trafic réseau lors des récupérations.

iv- Stream Processing

Quand nous devons traiter un grand dataset, l’utilisation l’api Stream est plus indiquée que de faire une boucle classique.

L’avantage vient du fait que l’api Stream expose un certain nombre d’opérations comme « filter, map, reduce, sum, etc. …» qui sont très optimisées pour les traitements en masse.

Nous pouvons mentionner aussi que les Streams en java utilisent une approche de traitement lazy « paresseux », ce qui veut dire que les éléments sont traités à la demande.

Le caractère « AutoClosable » permet aussi de garantir que les ressources soient libérées lorsque le traitement est terminé.

Exemple 1 : avec l’api stream sur des objets

Exemple 2 : avec l’api stream sur un fichier

Limites de l’api Stream

Pour des très grands datasets ou pour des gros traitements distribués, il faudra envisager des Frameworks ou bibliothèques comme « Apache Hadoop ou Apache Spark » qui par leur conception sont capables de gérer efficacement des volumes massifs de données.

v- Optimisation des requêtes et ajout des indexes en BDD

Pour tous les systèmes travaillant avec une base de données, la performance est très fortement impactée par celle de la base, et la qualité du réseau.

Si avoir un excellent réseau peut améliorer la performance du système, adopter les pratiques qui consiste à augmenter la performance des traitements de la base est un allié incontournable.

Parmi les pratiques d’amélioration des performances, nous pouvons citer l’ajout d’index en base de données, la maintenance régulière de la base, et l’optimisation des requêtes.

Des outils existent pour proposer des axes d’optimisations de la base de données, des créations d’index à faire, suite à l’analyse des requêtes que l’outil voit passer via son plan de requêtage.

Indexation :

Ci-après 2 exemples d’ajout d’indexe, avec SQL et avec les ORM.

  • Avec SQL
  • Avec un ORM

Nous avons un index sur la colonne name dans les 2 cas

Optimisation des requêtes:

Il existe toujours plusieurs manières d’écrire une requête, ce qui conduit à se poser la question de la performance pure de la requête écrite comme nous le ferions pour n’importe quel algo. De lors, les requêtes que nous écrivons ont une très grande responsabilité sur les performances de notre système.

Exemple:

3- Conclusions

Pour réduire l’impact environnemental, réduire les coûts d’infrastructure, garantir la fiabilité la sécurité et la confidentialité des données, respecter les normes et règlementations éthiques, et utiliser de manières efficaces les ressources à notre disposition. La gestion durable des données sur toute leur durée de vie tant du point de vue traitement que d’hébergement et mise à disposition est une approche très viable à long terme.

De mon point de vue, la gestion durable des données est primordiale pour concevoir des systèmes d’information efficient, éco-responsable, sobre, et respectueux de l’environnement .

En attendant le prochain article, je me permets de vous partager quelques initiatives dans le domaine du GreenIT, n’hésitez pas à lire, commenter, expérimenter et faire des retours:

Je vous donne rendez-vous dans un mois pour l’épisode 3 avec un article qui traitera des différents outils qui permettent de mesurer et quantifier l’aspect green de nos logiciels, et dégager des axes d’amélioration.

Remerciements

Je remercie Christophe MERLEN et Abir JELLAD pour leur contribution à la rédaction de cet article, ainsi que les relectures et corrections.

Je remercie également le collectif des Green Champions d’Axa France pour les lectures et corrections. une mention spéciale pour Sarah GUTSATZ, Maxime LELEUX, Pascal NICOLETTE, Jonathan MEUNIER, Et Nicolas LINARD pour les lectures et corrections.

Mes remerciements également à Annick Le Ber pour les différentes documentations et liens sur le “Responsible Computing”.

--

--

Thierno Diallo
Just-Tech-IT

Staff Engineer/Technical Leader And Green Champion at Axa France