AXA expose l’aspect data de sa démarche « green coding »

AXA green coding gestion données

Engagé dans une démarche de communication sur ses pratiques de « green coding », AXA évoque le volet gestion des données.

Comment limiter l’empreinte environnementale du code ? L’équipe tech d’AXA a entrepris de communiquer sur ses pratiques dans le domaine.

Elle avait publié un premier post en septembre. Il y était, en particulier, question de l’exploitation de la matrice de référence d’ecoCode. Et des réflexions touchant à l’optimisation de l’usage des ressources comme à la gestion du code en production.

Le deuxième volet est paru cette semaine. Il a pour sujet la gestion des données. Le premier champ abordé est celui du stockage et de l’infrastructure (choix de l’endroit et du type d’hébergement). Il englobe la définition des besoins, la sauvegarde et l’archivage, les politiques de conservation, l’indexation et la mise à l’échelle. AXA y souligne, entre autres, la nécessité de configurer le bon niveau de journalisation – d’autant plus avec les solutions facturées à l’écriture. Ainsi que celle de supprimer les anciennes sauvegardes…

AXA fait référence à Google Guava

Sur la partie traitement des données, AXA illustre ses bonnes pratiques par des exemples en Java. Illustration sur la déduplication :

Plus efficace
String content = getContent(« file1.txt »);
storeData(« file1.txt », content);
storeData(« file2.txt », content);

Moins efficace
storeData(« file1.txt », getContent(« file1.txt »));
storeData(« file2.txt », getContent(« file2.txt »));

Sur le volet même volet, l’équipe signale l’existence de la méthode distinct() sur l’API Stream. Et de bibliothèques tierces telles qu’Apache Commons Collections ou Google Guava pour les besoins plus complexes.

Pour ce qui est de la mise en cache, on nous donne un exemple fondé sur la bibliothèque Caffeine. Sur le traitement massif, retour à l’API Stream, plus efficace qu’une boucle classique car elle expose des opérations optimisées (filter, map, reduce, sum…).

Plus efficace
loadLargeData()
.stream()
.forEach(item -> {
});

Moins efficace
List<String> data = loadLargeData();
for (String item : data) {
}

Illustration © Seventyfour – Adobe Stock