Vers une tech plus simple, sobre, et légère
Désolé Darty.
J'avais besoin d'un PC portable pas trop cher, mais tu m'as découragé. Je l'ai acheté sur un autre site.
Mais bon sang, te fallait-il vraiment 280 requêtes HTTP transférant plus de 2 Mo de données compressées (et 7.7 Mo décompressées) pour afficher une vingtaine de produits en promotion sur ta landing page ?
N'y avait-il pas plus simple et plus sobre pour éviter la saturation ?
Darty est loin d'être un cas unique.
Nos logiciels deviennent de plus en plus lourds et compliqués. En cas de pic de demande, ils sont des boulets qui finissent par tout bloquer.
Tous les progrès pour améliorer les débits d'Internet des 10 dernières années ont été engloutis par l'augmentation du poids des sites web.
Sans parler des photos haute-résolutions du sol ou du plafond afin d'entretenir ses flammes Snapchat (vous ne voyez pas de quoi je parle ? Demandez à vos enfants).
En 2020, c'est aussi lent de charger une page web que ça l'était en 2010. Juste parce qu'il faut 2Mo de photos et de Javascript pour afficher la première page. C'est autant de volume que pour 1 minute de musique...
Mais la lenteur du black-friday, ce n'est pas le seul problème.
Dans son édito du 30/11/2020, le délégué général du Cigref affirme que la cybersécurité et la sobriété numérique sont deux sujets de préoccupations des entreprises. Et que les fournisseurs de plateformes, de logiciels ou de contenus feraient bien de proposer des solutions dès maintenant.
En effet, le poids et la complexité numériques catalysent l'émergence des data-centers géants, dont la moitié de la consommation électrique sert ... à les refroidir !
En prime, la centralisation augmente le risque et les conséquences des cyber-attaques. Noyés dans le volume et l'enchevêtrement des logiciels, les exploitants peinent à fermer les failles de sécurité.
Un seul piratage expose à la perte ou au vol d'énormes quantités de données (Forcément, tout est au même endroit).
"J'ai une architecture ultra performante. Mes micro-services sont distribués dans des containers orchestrés dans Kubernetes".
"Cool. Et quels sont les ports TCP ouverts ?"
(silence)
Au final, les logiciels exagérément lourds et compliqués présentent pleins de défauts :
- Les performances sont difficiles à tenir, notamment en cas de pics,
- la surface d'attaque est augmentée,
- Les données personnelles sont moins protégées,
- Le code est difficile à tester et à faire évoluer,
- Les ressources de traitement et de stockage consomment trop d'énergie.
Alors comment faire ?
On éteint tout et on déménage dans une roulotte dans le Larzac ?
Pas encore.
J'observe trois tendances qui proposent une tech plus légère, sans renoncer à coder des outils innovants.
Tendance #1 : la JAMStack
J'ai déjà eu l'occasion d'en parler.
L'objectif est de mettre en ligne un site ergonomique, fluide, réactif, et faisant transiter sur le réseau le plus petit volume possibles de données.
Pour y parvenir, on pré-calcule hors ligne tout ce qui est possible pour réduire le code à exécuter pour traiter une requête. Et surtout, on chasse le moindre kilo-octet superflu :
- en supprimant les styles inutilisés,
- par la compression (voire la suppression) des images,
- et en remplaçant les bibliothèques les plus lourdes par des versions allégées.
On voit ainsi émerger des stacks légères pour gérer les interactions, comme AlpineJS ou Stimulus.
En bonus, les sites statiques de la JAMStack sont faciles à répartir sur des serveurs qui servent le contenu au plus près des utilisateurs (les CDN).
Tendance #2 : Le edge-computing.
Dans le palmarès des logiciels énergétivores, l'IA figure probablement sur le podium. Pour être performant, un modèle d'IA a besoin :
- de beaucoup de données : il faut environ 100,000 images de chats pour entraîner un modèle à reconnaître un chat (sérieusement ? Reconnaître des photos de chats ?).
- des ressources matériels conséquentes. Pour AlphaGo (qui a battu le meilleur joueur du monde de Go en 2016), c'est plus de 1,000 CPUs, et quelques dizaines de GPU et TSU (des puces dédiées aux algorithmes d'IA).
La encore, les données et la puissance de calcul sont placées dans des datacenters qui brûlent des calories et de la bande passante (Google Cloud, AWS, Microsoft Azure p.ex).
A contrario, le edge computing, c'est un peu le "circuit court" de l'IA. Une sorte de consommation locale.
Le modèle technique repose sur la décentralisation, en replaçant l'algorithme au plus près de son utilisateur.
Dans ce type d'architecture, l'enjeu est réduire le volume des données et des traitements, en tirant profit :
- de la proximité, qui permet de capter le contexte de la donnée pour la traiter plus efficacement,
- de la coopération, par exemple avec d'autres dispositifs locaux pour travailler à plusieurs sans latence,
- et de la spécialisation (on fait 1 seule fonction).
On passage, on y gagne aussi sur le respect de la vie privée : nos données personnelles restent à proximité.
Cette tendance concerne le logiciel, mais on trouve aussi des applications ailleurs. Par exemple, la puce M1 d'Apple, dont on loue les performances actuellement, repose sur un principe un peu similaire : on regroupe en un seul chip les composants jusqu'à présents disséminés sur la carte mère.
Tendance #3 : Les messages courts.
Troisième tendance illustrant cette cure d'amaigrissement : les architectures réparties qui s’échangent des messages courts, demandant peu d'énergie pour être émis et pour voyager.
Au départ, ce sont les besoins de l'IoT (l’internet des objets) qui poussent le développement de ces protocoles de communication radio de longues distances : le camion frigorifique qui signale une température anormale, le tracker de palette connectée.
SigFox, l'un des acteurs de ce marché, nomme ça la "zéro G", par opposition à la course au débit de la 3-4-5G.
Mais ces sortes de SMS simples sont aussi le moyen d’interconnecter des logiciels plus simples, plus petits, et plus indépendants. J’observe ces dernières années un engouement pour les bus de messages asynchrones, qui s’enrichissent désormais de services de stockage et de traitement (comme Apache Kafka). Il leur reste juste à acquérir eux-aussi davantage de simplicité de mise en oeuvre.
Et si l'innovation commençait par la simplification, l’allègement et l'optimisation du code, que l'on sortirait de nos fermes de serveurs surchauffées ?