Catégories : Expertise DSIPar Commentaires fermés sur Eco-conception des logiciels ou conception responsable

Le numérique représente 4% des émissions soit 1,5 fois plus que le transport aérien avec une tendance à l’aggravation. On estime que les conséquences auront triplé à horizon 2025, d’où l’urgence d’agir. C’est tout l’objet de l’éco-conception des logiciels.

En effet, dans cette industrie du numérique, les logiciels représentent une part non négligeable, ils sont omniprésents dans notre vie quotidienne, que ce soit au bureau ou dans notre vie personnelle.

Tout un chacun utilise désormais ces applications pour échanger, se déplacer, être guidé, acheter en ligne, prendre un rendez-vous avec son médecin… La digitalisation est désormais partout et le niveau d’exigence des utilisateurs s’est fortement accru, notamment en termes de performance ou de fonctionnalités.

Au fil des versions, les fonctionnalités de ces logiciels s’enrichissent et se multiplient nécessitant de plus en plus de ressources matérielles contraignant les utilisateurs à acheter des nouveaux ordinateurs toujours plus puissants et gourmands en énergie. Les équipements utilisateurs représentent la plus grosse part de consommation d’énergie parce qu’il y en a vraiment beaucoup et que leur fabrication est très consommatrice d’énergie et de ressources, avec de l’extraction ‘sale’. Cette tendance à la surenchère de fonctionnalités a d’ailleurs été baptisée par le passé ‘obésiciel’, c’est dire ! Selon une étude de Cast Software, 70% des fonctionnalités demandées par les utilisateurs ne sont pas essentielles et 45% ne sont jamais utilisées.

Face à l’urgence climatique et à la prise de conscience de la part non négligeable du numérique, toutes les volontés commencent à converger vers une attente globale et forte vis-à-vis des services numériques : que la performance sociale et environnementale soit prise en compte dès leur conception. On parle donc d’éco-conception des logiciels ou encore de conception responsable.

Optimiser des lignes de code à posteriori n’est qu’une piste. En effet, le refactoring permet un code épuré. Il contient moins d’erreurs, moins de code inutile, est globalement mieux structuré et donc plus facile à maintenir avec, potentiellement, des économies à la clé, en matière de consommation de ressources en particulier.

Néanmoins optimiser le code d’une fonctionnalité inutile ne sert pas à grand-chose. L’idéal est d’intégrer nativement en amont de la phase de développement les notions de réduction d’impact pour l’environnement. Il faut raisonner ‘Sobriety by design’ de la même manière que l’on raisonne ‘Security by design’ pour aller vers une l’éco-conception des logiciels.

En effet, c’est lors des phases de spécification, conception technique et fonctionnelle, UX UI, définition de l’architecture… que les leviers sont les plus importants et c’est à ce moment-là qu’il faut prendre en compte l’utilisation du logiciel et les utilisateurs qui concentrent tous les impacts. La bande passante utilisée lors des transferts est un élément important de consommation d’énergie qui doit faire l’objet d’une attention particulière.

Le choix du langage de développement a également son importance : les langages et les Framework n’exigent pas tous le même niveau de ressources CPU. Les langages C, C++ et Java sont parmi les moins consommateurs : le PHP, c’est 45 fois plus de ressources CPU que le C !!! Comparés aux langages interprétés, les langages compilés sont plus rapides, nécessitent moins de mémoire vive et sont moins énergivores. D’ailleurs, ce qui se dit dans la profession : « Un mauvais développeur .NET fera toujours mieux qu’un bon développeur PHP » ! Même si suivant l’échelle du « mauvais », nous pensons chez SoftFluent que c’est moins binaire que cela, tant la compétence du développeur peut varier.

Pour alléger leurs logiciels et les rendre moins gourmands en ressources, les éditeurs doivent se focaliser sur l’essentiel de leurs fonctions :

  • Faire uniquement ce qui est demandé,
  • Epurer les fonctionnalités inutiles,
  • Réduire le nombre d’interactions pour fluidifier le parcours utilisateur,
  • Alléger les interfaces utilisateurs en éléments visuels lourds,
  • Minimiser les volumes de transferts de données,
  • Opter au maximum pour des modules optionnels à charger uniquement en cas de besoin

En réduisant la couverture fonctionnelle, en évitant la sur-qualité, la complexité, on réduit la quantité de ressources nécessaires : puissance des appareils, mémoire, processeur, bande passante, serveurs…

Au passage, on augmente la durée de vie des matériels et, paradoxalement, on augmente la performance. Centré sur l’essentiel, un logiciel est moins gourmand en énergie.

Concrètement chez SoftFluent, nos champs d’intervention pour l’éco-conception des logiciels sont les suivants

Eco-conception : UX UI

En mettant en place une bonne pagination des données, en allégeant les informations dans les pages, ce qui suppose un allègement du design. En limitant notamment l’appel d’éléments superflus et en optimisant les images, le poids moyen des pages peut être sensiblement réduit sans altérer l’expérience utilisateur. Le bénéfice pour l’environnement s’accompagne en outre d’un gain significatif de performances et de temps de réponse

Eco-conception : temps de calcul

En ne chargeant pas de données superflues et en optimisant les algorithmes de traitement, on consomme uniquement les ressources nécessaires : charge de CPU, temps de CPU, quantité de RAM etc…

Eco-conception : temps de chargement

Différentes techniques permettent encore de diminuer ce temps par exemple avec certains algorithmes de compression

Eco-conception : mise en cache temporaire et prolongé

Le cache réduit considérablement le temps d’accès aux données déjà consultées et c’est pourquoi ce système de mémoire intermédiaire est utilisé dans presque tous les systèmes et applications. Il permet aussi de stocker en mémoire des données utiles et régulièrement sollicitées tout au long de l’utilisation de l’application et évite ainsi que multiplier les appels à des web API ou à des bases de données.

Conception responsable : optimisation de la performance

Un code bien écrit consommera notablement moins qu’un code mal écrit ou non optimisé dans sa conception.

Réduire la taille des Frameworks et l’impact des applications notamment dans la configuration. Cela permet d’éviter au maximum les notifications périodiques à des serveurs distants ainsi que les interactions entre le client et le site, et donc le nombre de requêtes, les ressources serveurs utilisées, etc. Un Framework (ou une dépendance) de dimension réduite est aussi plus performant, ou, tout au moins, pourrait rendre le chargement de votre application plus rapide.

Par ailleurs, les scripts pour identifier des doublons, signaler des services inactifs ou des ressources inutilisées…), complètent de manière automatisée les tâches quotidiennes sans les alourdir, et permettent d’estimer des gains potentiels.

Conception responsable : dette technique, analyse du code et refactoring

Diagnostiquer est un véritable enjeu car les problèmes logiciels peuvent être assez profonds et divers : suivi des bonnes pratiques de développement, problème de réseau, application mal dimensionnée pour son utilisation, architecture logicielle mise en cause, base de données saturée ou mal indexée, fuite mémoire, scalabilité horizontale non prévue…

Ce processus de refactoring s’avère généralement plus efficace en termes de coûts et maitrisable que la réécriture complète du code. Pour le développement itératif de logiciels, comme c’est le cas dans le développement agile, le refactoring fait partie intégrante des étapes de travail, avec des modifications en continu.

Conception responsable : activation on Demand (infrastructure as Code)

L’IaC (Infrastructure as code) supprime également la nécessité d’assurer la maintenance des environnements de déploiement individuels avec des configurations uniques qui ne peuvent pas être reproduites automatiquement, et garantit que l’environnement de production sera cohérent mais aussi

Conception responsable : élasticité de l’infrastructure

Cela passe par la mise à disposition des machines uniquement lorsque c’est nécessaire, du dimensionnement de la machine éventuellement adapté à l’instant T (pour les processus dont les volumes de traitement varient selon une saisonnalité).

Une scalabilité bien pensée doit pouvoir se faire vers le haut comme vers le bas (Scale Up & Scale Down)

Cette démarche d’amélioration continue permet de garantir l’efficience des logiciels tout au long du cycle de vie et d’allonger leur durée de vie.

Conception responsable : Serverless, PaaS (notion de scalabilités horizontale et verticale)

Dans un hébergement plus classique, on a l’habitude de développer et déployer les applications informatiques sur des serveurs qu’il faut donc gérer, provisionner et dont il faut gérer les ressources. Même quand ils ne sont pas nécessaires en tant que tels, les serveurs doivent être maintenus. Faire en sorte qu’ils restent disponibles et à jour reste à la charge de l’entreprise. Dans le cas d’une montée en charge, toute la mécanique doit être gérée en interne soit au travers du déploiement de nouvelles machines ou conteneurs (dé-provisionnés lors de la baisse de charge) au travers de mécanismes plus ou moins automatisés (scripts, orchestrateur, scale-set etc…). Le PaaS permet en outre la mutualisation des ressources…

Conception responsable : CICD / tests automatisés / DevGreenOps

L’intégration continue (CI) permet aux développeurs de fusionner plus fréquemment leurs modifications de code dans une « branche » partagée, souvent critique et qui doit être protégée. Les opérations réalisées par l’intégration continue doivent garantir cette protection. Ainsi, les développeurs peuvent intégrer leur code modifié sans problème, plusieurs fois par jour s’ils le souhaitent. Les modifications à fusionner sont automatiquement testées pour détecter le moindre conflit entre le code existant et le nouveau (à tous les niveaux, classes, fonctions, modules…). Les dysfonctionnements éventuels sont ainsi résolus très tôt, plus fréquemment et plus rapidement.

Les tests permettent de remonter les éventuels problèmes en avance de phase et de gagner en productivité et en qualité. Un test déroulé manuellement est une charge chronophage, un test consolidé dans un script re-jouable à l’infini est un investissement. Par conséquent, il convient d’automatiser tous les tests qui peuvent l’être (test unitaires, d’intégration, end to end, TDD).

Automatiser des tâches de programmation permet un code à l’état de l’art technologique, déjà éprouvé en recette, documenté, évolutif, facilement maintenable.

Conception responsable : principes du Lean et de l’intelligence collective

Bien que non directement en lien avec l’éco conception, le principe du Lean signifie néanmoins moins de gaspillage avec notamment des cycles raccourcis, moins de fournisseurs, moins de papier… donc dans un certain sens, bénéfique aussi pour la planète. Dans un environnement complexe, dynamique et compte-tenu de la vitesse d’évolution, l’entreprise doit faire preuve de flexibilité pour faire face à toutes les situations y compris celles qu’elle n’imagine pas encore aujourd’hui et l’intelligence collective est une solution. L’intelligence collective est la mise en commun des compétences, connaissances, créativités, capacités de réflexion et de résolution de problèmes… au service d’un objectif commun

Conception responsable : sensibilisation à l’utilisation des logiciels

Stockage : apprendre à ne pas dupliquer les données ‘par sécurité’ et à repenser le stockage des données

Archivage des données à froid et à chaud. Le stockage froid consiste à sauvegarder et récupérer des données (sur le court terme) et à archiver (sur le long terme) les données rarement utilisées dont les utilisateurs n’ont plus besoin. Il n’est effectivement pas forcément nécessaire d’avoir accès à tout à tout moment en ayant toutefois la possibilité de récupérer des archives (Well architected framework)

Eco-conception des logiciels – Conclusion

Le numérique est un gros consommateur d’énergie (amont/aval) mais il permet aussi de contribuer au travail à distance et donc de substituer certaines consommations carbones… à condition de ne pas en générer de nouvelles de manière démesurée.

Pour cela il est nécessaire d’intégrer les principes d’éco-conception des logiciels et la filière des sociétés technologiques intègrent de plus en plus une approche de numérique responsable.

Soulignons aussi que les logiciels sont un maillon clé dans toutes les stratégies de réduction de l’impact carbone en permettant de :

  • Mesurer, comprendre et prédire la consommation énergétique du logiciel
  • Améliorer la qualité des productions logicielles
  • ‘Dégraisser’ les logiciels (fonctionnalités essentielles, simplicité)
  • Sensibiliser les utilisateurs, engager les développeurs
  • Avoir une vision holistique incluant les acteurs humains
  • Créer un nouveau paradigme du logiciel durable

Microsoft est l’acteur le plus transparent (par rapport à Google et AWS) et celui qui va le plus vite

  • Déclaration CDP (Carbon Disclosure Project)
  • Calculette Azure
  • Certificat électricité renouvelable et décarbonée

 

Par son expertise dans l’automatisation des développements et l’optimisation des applications, SoftFluent dispose d’un savoir-faire précieux pour aider chacun à intégrer la dimension de « consommation des ressources numériques » dans la conception de toute application ou tout logiciel. SoftFluent s’assure d’y sensibiliser ses équipes pour pouvoir accompagner également les clients dans ces démarches, de manière de plus en plus volontariste au cours des mois à venir.

L’éco-conception des logiciels permet de :

  • Mettre fin à « toujours plus de puissance et mémoire machine » pour fonctionner,
  • Réduire l’obsolescence logicielle mais surtout matérielle. Saviez-vous qu’un ordinateur de 2 kg nécessite de mobiliser 800 kg de matières premières pour sa fabrication (source ADEME) ? (notion de sac à dos écologique)

Il en découle des bénéfices immédiats pour les entreprises et les utilisateurs. Et cette approche de concevoir les logiciels favorise de nouvelles pratiques numériques bénéfiques pour l’environnement et la planète.

Cette prise de conscience est nécessaire et constitue une opportunité de construire concrètement le socle d’un développement avec une valeur ajoutée durable pour notre société

Ne ratez plus aucunes actualités avec la newsletter mensuelle de SoftFluent