Eco-Index
E
Nombre de requêtes : 35
Taille du DOM : 12298
Eco-Index
E
Nombre de requêtes : 30
Taille du DOM : 12198
]
???
Réduction du nb de requêtes et taille DOM
Pas de manière significative
---
background-image: url(mattia-ascenzo-1559579-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 1. Refuser
]
.smokescreen_slide[
### Eviter les animations Javascript/CSS coûteuses
local_floristlocal_floristlocal_florist
]
???
Bonne pratique #48
Dans notre cas, nous avons une animation sur les graphiques lors de l'affichage. Est-elle vraiment nécessaire ?
---
background-image: url(mattia-ascenzo-1559579-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 1. Refuser
]
.smokescreen_slide[
### Eviter les animations Javascript/CSS coûteuses
Eco-Index
E
Taille du DOM : 12198
Eco-Index
E
Taille du DOM : 9267
]
???
Réduction taille du DOM
Ne change en rien l'utilisabilité de l'application
---
background-image: url(mattia-ascenzo-1559579-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 1. Refuser
]
.smokescreen_slide[
### Supprimer tous les warnings et toutes les notices
local_floristlocal_floristlocal_florist
]
???
Bonne pratique #65
Suppression de tous les warnings dans la console (variables non utilisées, imports inutiles, ...)
---
background-image: url(mattia-ascenzo-1559579-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 1. Refuser
]
.smokescreen_slide[
### Supprimer tous les warnings et toutes les notices
Eco-Index
E
Taille du DOM : 9267
Eco-Index
E
Taille du DOM : 9267
]
???
Aucune modification au niveau des indicateurs de l'éco-index.
Par contre, la charge CPU va être diminuée car il n'aura pas à calculer tous ces warnings.
---
background-image: url(mattia-ascenzo-1559579-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 1. Refuser
]
.smokescreen_slide[
Eco-Index
E
Nombre de requêtes : 35
Taille de la page (kb) : 7201
Taille du DOM : 12298
GES (gCO2e) : 2.5
Eau (cl) : 3.75
EcoIndex : 25
Eco-Index
E
Nombre de requêtes : 26
Taille de la page (kb) : 7132
Taille du DOM : 9267
GES (gCO2e) : 2.46
Eau (cl) : 3.69
EcoIndex : 27
]
???
Réduction de près d'un tiers la taille du DOM, ainsi que le nombre de requêtes.
Valeurs sont encore trop importantes pour avoir un réel impact sur l'éco-index.
---
background-image: url(state1.png)
background-position: top;
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 1. Refuser
]
???
PENSER A MONTRER L'APPLI
---
background-image: url(i-yunmai-5jctAMjz21A-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 2. Réduire
]
???
Passons maintenant à la 2ème règle : Réduire
[Photo by i yunmai on Unsplash]
---
background-image: url(i-yunmai-5jctAMjz21A-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 2. Réduire
]
.smokescreen_slide[
### "Est-ce que j'en ai vraiment besoin d'une telle quantité ?"
]
???
La question à se poser est "Est-ce que j'en ai vraiment besoin d'une telle quantité ?"
On peut ainsi commencer à:
- Réduire la taille des applications en réduisant
- la taille (et la quantités) des librairies embarquées
- la taille des CSS, des images
- l'utilisation de CMS ou de frameworks "magiques" (qui embarquent la moitié d'internet)
- Réduire les communications réseau en réduisant
- le nombre de requêtes vers le serveur
- les résultats remontés de la base de données (pas de select *, pagination)
- Réduite la quantité de mémoire utilisée en
- Surveillant le garbage collector
- Utilisant un profiler pour optimiser les parties du code très consommatrices en mémoire
---
background-image: url(i-yunmai-5jctAMjz21A-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 2. Réduire
]
.smokescreen_slide[
### Quantifier précisément le besoin
local_floristlocal_floristlocal_florist
]
???
Bonne pratique #2 :
Diminution de la quantité de données envoyées par le serveur.
Actuellement, les web-services retournent tous les enregistrements.
Nous n'avons besoin d'afficher que les 50 derniers.
=> Modification du code côté back-end pour qu'il ne retourne que les 50 derniers éléments.
Refresh des données toutes les 10s inutile => A supprimer
---
background-image: url(i-yunmai-5jctAMjz21A-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 2. Réduire
]
.smokescreen_slide[
### Quantifier précisément le besoin
Eco-Index
E
Taille du DOM : 9267
Eco-Index
D
Taille du DOM : 717
]
???
Ces modifications ont permis de réduire drastiquement la taille du DOM.
Notre éco-index est passé de E à D !
---
background-image: url(i-yunmai-5jctAMjz21A-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 2. Réduire
]
.smokescreen_slide[
### Redimensionner les images en dehors du navigateur
local_floristlocal_floristlocal_florist
]
???
Bonne pratique #20 :
Image de fond actuelle de 5.4 Mo affichée partiellement.
=> Réduction à 200 ko en réduisant qualité et portion image affichée
---
background-image: url(i-yunmai-5jctAMjz21A-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 2. Réduire
]
.smokescreen_slide[
### Redimensionner les images en dehors du navigateur
Eco-Index
D
Taille de la page (kb) : 7132
Eco-Index
C
Taille de la page (kb) : 1337
]
???
Cette réduction de la taille de l'image a permis de grandement réduire la taille de la page.
Par la même occasion, on est passé d'un éco-index D à C !
---
background-image: url(i-yunmai-5jctAMjz21A-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 2. Réduire
]
.smokescreen_slide[
### Limiter le nombre de requêtes HTTP
local_floristlocal_floristlocal_florist
]
???
Bonne pratique #9
Actuellement, pour chaque graphique et chaque donnée, nous effectuons une requête différente vers le back-end.
Ces appels peuvent être fusionnés pour n'en faire qu'un seul.
---
background-image: url(i-yunmai-5jctAMjz21A-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 2. Réduire
]
.smokescreen_slide[
### Limiter le nombre de requêtes HTTP
Eco-Index
C
Nombre de requêtes : 26
Eco-Index
C
Nombre de requêtes : 22
]
???
La majorités des requêtes réalisées par l'application ne s'adresse pas au back-end, mais aux librairies externes.
Le nombre de requêtes a pu être diminué, mais pas énormément.
---
background-image: url(i-yunmai-5jctAMjz21A-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 2. Réduire
]
.smokescreen_slide[
Eco-Index
E
Nombre de requêtes : 26
Taille de la page (kb) : 7132
Taille du DOM : 9267
GES (gCO2e) : 2.46
Eau (cl) : 3.69
EcoIndex : 27
Eco-Index
C
Nombre de requêtes : 22
Taille de la page (kb) : 1194
Taille du DOM : 717
GES (gCO2e) : 1.92
Eau (cl) : 2.88
EcoIndex : 54
]
???
"Réduire" => grande amélioration de l'éco-Index
Pas d'impact sur l'expérience utilisateur
La réduction de la taille de l'image a majoritairement permis de réduire la taille de la page, et la réduction du nombre de données envoyées a pu réduire la taille du DOM.
---
background-image: url(state2.png)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 2. Réduire
]
???
PENSER A MONTRER L'APPLI
---
background-image: url(recycle-57136_1920.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 3. Réutiliser
]
???
Appliquons maintenant la 3ème règle : "Réutiliser"
[Image par Shirley Hirst de Pixabay]
---
background-image: url(recycle-57136_1920.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 3. Réutiliser
]
.smokescreen_slide[
### "Est-ce que je peux réutiliser quelque chose d'existant ?"
]
???
La question à se poser dans ce cas est "Est-ce que je peux réutiliser quelque chose d'existant ?"
Réutilisation : coeur de notre métier. Utilisation de composants ou de bibliothèques.
Bonne pratique de code "Don't repeat yourself"
=> utilisation de variables pour garder en mémoire les éléments souvent accedés
Conception modulaire des applications
---
background-image: url(recycle-57136_1920.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 3. Réutiliser
]
.smokescreen_slide[
### Favoriser les polices standards
local_floristlocal_floristlocal_florist
]
???
Bonne pratique #17
Police de caractère particulière => utilisation des polices déjà présentes sur les postes client
---
background-image: url(recycle-57136_1920.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 3. Réutiliser
]
.smokescreen_slide[
### Favoriser les polices standards
Eco-Index
C
Nombre de requêtes : 22
Eco-Index
C
Nombre de requêtes : 16
]
???
En évitant de télécharger de nouvelles polices, nous avons donc réussi à réduire le nombre de requêtes réalisées par l'application.
De la même manière, en remplaçant les images par des glyphs, on réutilise des caractères déjà présents dans la police et on limite le nombre de nouveaux éléments à charger.
---
background-image: url(recycle-57136_1920.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 3. Réutiliser
]
.smokescreen_slide[
### Mettre en cache les réponses Ajax
local_floristlocal_florist
### Ajouter des en-têtes Expires ou Cache-Control
local_floristlocal_floristlocal_florist
]
???
Bonnes pratiques #107 & #105
Mise en place d'un cache pour toutes les requêtes sauf celles vers le back-end
---
background-image: url(recycle-57136_1920.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 3. Réutiliser
]
.smokescreen_slide[
### Mettre en cache les réponses Ajax
### Ajouter des en-têtes Expires ou Cache-Control
Eco-Index
C
Nombre de requêtes : 16
Taille de la page (kb) : 1156
Eco-Index
C
Nombre de requêtes : 4
Taille de la page (kb) : 37
]
???
Pas de modif au 1er chargement, mais grande diminution au refresh
Cache mis en place que côté front. On peut imaginer en utiliser un également côté back-end pour éviter les allers-retours redondants.
---
background-image: url(recycle-57136_1920.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 3. Réutiliser
]
.smokescreen_slide[
Eco-Index
C
Nombre de requêtes : 22
Taille de la page (kb) : 1194
Taille du DOM : 717
GES (gCO2e) : 1.92
Eau (cl) : 2.88
EcoIndex : 54
Eco-Index
C
Nombre de requêtes : 4
Taille de la page (kb) : 37
Taille du DOM : 706
GES (gCO2e) : 1.72
Eau (cl) : 2.58
EcoIndex : 64
]
???
La réutilisation des polices de caractères a donc permis de réduire le nombre de requêtes, mais n'a pas eu d'impact significatif sur l'éco-index
Cache => Réduction du nombre de requêtes.
Notre éco-index a diminué mais reste classé en C (la limite pour passer à B est à 65 ^^)
---
background-image: url(state4.png)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 3. Réutiliser
]
???
PENSER A MONTRER L'APPLI
---
background-image: url(pawel-czerwinski-RkIsyD_AVvc-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 4. Recycler
]
???
4ème règle à appliquer : Recycler.
[Photo by Paweł Czerwiński on Unsplash]
---
background-image: url(pawel-czerwinski-RkIsyD_AVvc-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 4. Recycler
]
.smokescreen_slide[
### "Est-ce que je peux recycler quelque chose d'existant ?"
]
???
Nous pouvons nous poser la question "Est-ce que je peux recycler quelque chose d'existant ?"
Le recyclage concerne les objets en fin de vie.
=> Peut-on recycler les applis en fin de vie ?
Si oui, comment ?
---
background-image: url(pawel-czerwinski-RkIsyD_AVvc-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 4. Recycler
]
.smokescreen_slide[
- Recyclage des données des applications en fin de vie
- Recyclage du code
]
???
Données des applis en fin de vie
=> Migration des données de ces applications vers successeur.
=> Bien penser en amont au format des données pour en faciliter le transfert
Recyclage du code
=> Extraire des composants, des bibliothèques pour donner une 2nde vie au code dans une autre appli
=> code libre bien sûr :-P
---
background-image: url(alvin-engler-7OC877W77yw-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 5. Composter
]
???
Dernière règle du Zéro-Déchet : le compostage.
[Photo by Alvin Engler on Unsplash]
---
background-image: url(alvin-engler-7OC877W77yw-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 5. Composter
]
.smokescreen_slide[
### "Le compostage est le recyclage des déchets organiques pour produire naturellement un fertilisant, le compost."
]
???
Si on reprend une définition du compostage, on nous dit que "Le compostage est le recyclage des déchets organiques pour produire naturellement un fertilisant, le compost.".
Peut-on faire un parallèle avec le développement ? Comment crée-t-on du compost en informatique ?
Ou comment produire du fertilisant à partir de nos déchets ?
---
background-image: url(alvin-engler-7OC877W77yw-unsplash.jpg)
.smokescreen_slide_title[
# Zéro Déchet logiciel
## 5. Composter
]
.smokescreen_slide[
- Conférences
- Binômage
- Mentoring
]
???
Donner des conférences, écrire des articles, binômer, mentorer les moins expérimentés, ... tout ceci permet aux plus expérimentés d'entre nous de partager leurs connaissances, leurs erreurs passées
et d'aider les autres à monter en compétences, un peu comme si il leurs apportaient de l'engrais.
---
background-image: url(clement-h-95YRwf6CNw8-unsplash.jpg)
.smokescreen_slide_title[
# Zéro déchet logiciel
## Bilan
]
.smokescreen_slide[
- Suppression des fonctionnalités non essentielles
- Suppression des animations coûteuses
- Suppression des warnings
- Réduction de la quantité d'information
- Réduction de la taille des images
- Réduction du nombre de requêtes HTTP
- Utilisation de polices standards
- Mise en place de cache
]
???
Voici en condensé la liste des actions que nous avons mises en oeuvre sur l'application.
[Photo by Clément H on Unsplash]
---
background-image: url(clement-h-95YRwf6CNw8-unsplash.jpg)
.smokescreen_slide_title[
# Zéro déchet logiciel
## Bilan
]
.smokescreen_slide[
Eco-Index
F
Nombre de requêtes : 81
Taille de la page (kb) : 30606
Taille du DOM : 12333
GES (gCO2e) : 2.72
Eau (cl) : 4.08
EcoIndex : 14
Eco-Index
C
Nombre de requêtes : 4
Taille de la page (kb) : 37
Taille du DOM : 706
GES (gCO2e) : 1.72
Eau (cl) : 2.58
EcoIndex : 64
]
???
Si on fait un rapide bilan de toutes nos modifications, nous pouvons constater que l'éco-index a été le plus impacté par :
- la diminution de la taille des ressources
- la diminution de la taille du DOM
A noter que le calcul de l'éco-index pondère différemment les 3 données qui sont le nombre de requêtes, la taille de la page et la taille du DOM.
L avaleur est une moyenne pondérée à 3 pour le DOM, 2 pour le nombre de requêtes HTTP et 1 pour la taille de la page.
Malgré tous nos efforts, nous n'avons pas réussi à franchir la barre du C (même si on n'est qu'à un point du B !), mais nous avons tout de même pas mal amélioré la situation :D
Il est également à noter qu'en souhaitant diminuer l'impact écologique de notre application, nous en sommes arrivés à améliorer ses performances et potentiellement faciliter son utilisation en simplifiant la présentation des informations.
---
background-image: url(vanilla-flower-542019_1920.jpg)
.smokescreen_slide_title[
# Et si ...
]
.smokescreen_slide[
On supprimait ReactJS pour passer en VanillaJS ?
]
???
L'application a été réalisée en ReactJS. On s'est donc posé la question de savoir si on l'avait réalisée en vanillaJS, est-ce que l'éco-index aurait été meilleur ?
Est-ce que React ne grossit pas artificiellement notre page ?
[Image parBinesh A B de Pixabay]
---
background-image: url(vanilla-flower-542019_1920.jpg)
.smokescreen_slide_title[
# Passage en VanillaJS
]
.smokescreen_slide[
Eco-Index
C
Nombre de requêtes : 4
Taille de la page (kb) : 37
Taille du DOM : 706
GES (gCO2e) : 1.72
Eau (cl) : 2.58
EcoIndex : 64
Eco-Index
C
Nombre de requêtes : 19
Taille de la page (kb) : 75
Taille du DOM : 632
GES (gCO2e) : 1.72
Eau (cl) : 2.58
EcoIndex : 64
]
???
Au final, on se retrouve avec exactement la même valeur d'éco-index.
En creusant un peu plus les raisons, c'est la présence des graphiques qui fait grossir la taille du DOM. La librairie que nous avons utilisée n'est donc pas la plus légère en terme d'éco-index.
Etant donné que nous voulions garder le même rendu graphique, nous n'avons pas changé cette librairie, mais la question peut se poser de chercher des composants et librairies plus légers.
---
background-image: url(nail-gilfanov-TuyneoFacJg-unsplash.jpg)
.smokescreen_slide_title[
# A quoi ressemble un site classé 'A' ?
]
???
Le but n'est pas d'avoir un classement 'A' à tout prix, mais surtout de diminuer son impact et prendre en compte cette contrainte lors des développements.
---
background-image: url(perduCom.png)
.smokescreen_slide_title[
## A quoi ressemble un site classé 'A' ?
]
.footnote[http://perdu.com/]
---
background-image: url(lowTechMag.png)
.smokescreen_slide_title[
## A quoi ressemble un site classé 'A' ?
]
.footnote[https://solar.lowtechmagazine.com/]
---
background-image: url(allianceGreenIt.png)
.smokescreen_slide_title[
## A quoi ressemble un site classé 'A' ?
]
.footnote[http://alliancegreenit.org/]
---
background-image: url(nail-gilfanov-TuyneoFacJg-unsplash.jpg)
.smokescreen_slide_title[
# Pour aller plus loin
]
.smokescreen_slide[
Eco-conception des services numériques
]
???
Si vous voulez approfondir un peu plus la question, vous pouvez vous tourner vers l'éco-conception des services numériques.
L'éco-conception consiste à intégrer les questions environnementales dès la conception d'un produit ou d'un service, et lors de toutes les étapes de son cycle de vie.
Les points que nous avons abordés interviennent essentiellement en phase de conception et de réalisation, mais beaucoup de choses peuvent être améliorées par la suite.
On peut citer par exemple les problématiques d'hébergement, d'optimisation ...
Par exemple, nous aurions pu utiliser sur notre application des outils comme webpack, babel et consorts pour minifier le code, compresser les feuilles de style, réaliser du tree-shaking sur les librairies, etc...
Nous aurions également pu mettre en oeuvre un reverse proxy pour améliorer les temps de réponse à nos requêtes.
Concernant l'hébergement, il peut être intéressant de se pencher sur la question des hébergements dits "verts", ou des fournisseurs d'électricités "verte".
---
background-image: url(nail-gilfanov-TuyneoFacJg-unsplash.jpg)
.smokescreen_slide_title[
# Références
]
.smokescreen_slide[
http://www.greenIT.fr
Livre "Ecoconception web: les 115 bonnes pratiques" de Frédéric Bordage
Livre blanc "Eco-conception des services numérique" de l'Alliance Green IT
Le Think Tank "The Shift Project"
Notre vie de tous les jours ;)
]
---
background-image: url(nail-gilfanov-TuyneoFacJg-unsplash.jpg)
.smokescreen_slide_title[
# Merci
]
.smokescreen_slide[
Avez-vous des questions ?
]