Blog

Je webshop verduurzamen? De dans van development & duurzaamheid

Van laptops en mobiele telefoons tot servers en draadloze verbindingen die de wereld doorkruisen, de infrastructuur van het internet zorgt voor een ongelooflijke hoeveelheid CO2-uitstoot.

We zijn wereldwijd met meer dan vijf miljard internetgebruikers in 2022 (bron), en dit aantal groeit met ongeveer één miljoen per dag. Tegelijkertijd zijn er ongeveer 1,8 miljard websites en gebruiken we maar liefst 44 miljard gigabyte aan data per dag. Elke minuut wordt er zo’n 300 uur aan video’s geupload en alleen al op YouTube worden er dagelijks vijf miljard video’s bekeken.

Deze cijfers concluderen dat we met het internet haast dezelfde jaarlijkse CO2-voetafdruk hebben als de hele luchtvaartindustrie. Hier kunnen - en moeten - we iets mee.

Duurzaamheid in e‑commerce development

Tijdens een innovatiesprint ontwikkelden we een dashboard om inzicht te krijgen hoe energiezuinig een webshop is. In deze blog ondervragen we backend developer Justin over de dans van duurzaamheid en development, wat je als developer kunt doen en wat je er als webshopeigenaar aan hebt.

Wil je jezelf even voorstellen?

“Yes, ik ben Justin van Schaick. Ik ben backend developer bij Bluebird Day en ik zit al elf jaar in het vak. Of ik zelf iets met duurzaamheid heb? Jazeker! Ik probeer in ieder geval op de plekken waar ik verschil kán maken, dit ook te doen.

Biologische groenten en duurzaam voedsel staan bijvoorbeeld geregeld op mijn boodschappenlijstje en ik kijk ook naar de hoeveelheid afval die ik produceer. Datzelfde geldt voor stroom. Bij beide vraag ik mijzelf af of het minder kan. Verder heb ik de Azoren hoog op mijn lijst van vakantiebestemming staan, maar die plek ligt midden in de oceaan. Dan vraag ik mezelf af: is een plaats waar ik met de auto heen kan rijden misschien net zo leuk?”

Waarom het onderwerp duurzaamheid?

“Een innovatiesprint is een initiatief binnen Bluebird Day om ook op andere vlakken onszelf te blijven vernieuwen. Vaak doen we dat met nieuwe technieken, zodat we vooruit kunnen lopen in het vak.

In deze sprint kozen we voor het thema duurzaamheid, omdat het nu hartstikke actueel is. Steeds meer mensen en organisaties spreken over klimaatproblemen, maar doen er nog niet heel veel aan. Daarom dachten we: hier liggen nog volop kansen!”

Hoe zijn jullie gestart?

“We begonnen met een brainstorm. Wat leek ons het meest interessant? We kwamen uit op twee onderwerpen.

In eerste instantie dachten we aan het verlagen van de footprint. Dan kun je denken aan manieren om retouren te beperken of pakketjes efficiënter te versturen. Iedereen was er enthousiast over. Maar toen we dit concreet probeerden te maken, kwamen we tot de conclusie dat dit lastig te optimaliseren is, omdat we niet alles in eigen hand hebben.

Het tweede onderwerp was het inzichtelijk maken van hoeveel stroom er verbruikt wordt door een webshop en of dit efficiënter kon. Hierbij gaat het vooral om interne processen en daar hebben we meer invloed op. We kozen daarom hiervoor. Het feit dat bijna niemand bezig is met hoeveel stroom een server gebruikt en hoe je dit proces minder intensief kan maken - bijvoorbeeld op rustige momenten -, maakte het voor mij extra boeiend.”

Wat hebben jullie precies ontwikkeld?

“Het doel was duidelijk: we wilden een dashboard bouwen voor klanten zodat zij inzicht krijgen over hoe energiezuinig hun shop is en hoeveel stroom de server verbruikt. In de praktijk kwam dit neer op het uittrekken van data vanuit verschillende bronnen en deze in een dashboard visualiseren. Op basis van die inzichten zouden klanten kunnen bijsturen.”

Oké, aan welke inzichten moet ik denken?

“Bij een klant was er bijvoorbeeld een module actief die e-mails stuurde naar klanten die een product op het oog hadden dat niet op voorraad was. Wanneer het product wél op voorraad was, zouden ze een mail krijgen en konden ze het product afrekenen.

Er zat een MySQL Query in die module, die puur de conversie berekende. Alleen, die berekening ging over een database van een paar gigabyte waardoor de MySQL Query bijna heel de nacht aan het draaien was. Je kunt je wel voorstellen dat dit best zwaar op het systeem is en het veel stroom verbruikt. Met dit soort berekeningen en inzichten kun je de afweging maken of dit met elkaar in verhouding staat.”

Hoe hebben jullie dit ontwikkeld?

“We hebben gebruik gemaakt van microservices, die ieder - zoals de naam al doet vernoemen - verantwoordelijk zijn voor één taak. Ze worden onafhankelijk van elkaar gebouwd en geïmplementeerd, wat het voordeel heeft dat een fout van een bepaald onderdeel niet de gehele architectuur beïnvloedt.

De microservices halen informatie op en terug, maken grafieken en zorgen dat vergelijkingen met historische data mogelijk zijn. Alle microservices halen data op uit verschillende applicaties en die worden geïmporteerd naar het dashboard waar de klant ziet hoeveel stroom en vermogen (CPU) hun shop en de server verbruikt.

De microservices hebben we ontwikkeld in Python en in Node.js. In Node.js hebben we een container gemaakt waar de API calls binnenkomen.”

Waarom hebben jullie dit zo gedaan?

“We wilden veel functionaliteiten samenbrengen en daarom lag het voor de hand om te kiezen voor microservices. Je ziet dit ook steeds meer: developers willen liever vanuit een best-of-breed gedachte werken en daarmee niet alles in één applicatie hebben. Een belangrijk voordeel hiervan? Je bent enorm schaalbaar doordat je een extra service kunt toevoegen of weghalen.”

Wordt het dashboard al in gebruik genomen?

“We hebben dit in een innovatiesprint ontwikkeld, dus er ligt nu een proof of concept. Het zou zonde zijn als we er geen vervolg aan geven, dus die gaat er waarschijnlijk wel komen. Het is nu kijken hoe we dat het beste kunnen doen. Je wil er namelijk niet steeds aan werken, dan stoppen en er dan weer mee beginnen.”

Voor welke organisaties is het (niet) relevant?

“Voor de meeste organisatie is het praktisch om te gebruiken, omdat het waardevolle inzichten kan geven over hoeveel stroom en resources een server gebruikt en hoe ze dat beter kunnen instellen. Misschien is het wel interessanter voor klanten die veel omzet draaien en meer bezoekers hebben, in tegenstelling tot een wat kleinere webshop die bijvoorbeeld maar drie producten per dag verkoopt, omdat daar minder processen draaien die waarschijnlijk ook minder intensief qua stroomverbruik zijn.”

Stel ik wil dit ook, waar moet ik beginnen?

“Ten eerste is het belangrijk om te kijken welke informatie er allemaal is en wat je met die informatie kunt doen. Ook de voorkant is belangrijk, in dit geval zijn dat de grafieken en dashboards. Waar je nog meer op moet letten? Het gaat om heel veel data en het is best een zware taak om dat allemaal te verzamelen en op te slaan. Dus je moet uitkijken dat de applicatie zelf niet een energieslurper wordt, maar juist efficiënt en schaalbaar blijft werken.”

Welke duurzaamheids features wil je meer zien?

“Een belangrijk onderdeel van e-commerce is bezorging. Ik denk dat je daar veel winst mee kunt behalen. Ik zou graag zien dat bezorging veel efficiënter gebeurt, dat is zowel goed voor het klimaat als voor de omzet van de klant. Anderzijds lijkt het mij mooi om klanten te motiveren minder terug te sturen en ervoor te zorgen dat aankoop voldoet aan de verwachting van hem of haar. In geval van kleding kun je dan denken aan perfect maatadvies. En we kunnen nog veel meer doen om een webshop te verduurzamen.”

  • Verminder de tools van derden zoals Hotjar

  • Definieer een budget voor het paginagewicht

  • Vermijd Hero images en parallax effect

  • Comprimeer afbeeldingen automatisch

  • Gebruik lazyload afbeeldingen

  • Stel video's niet in op autoplay

  • Gebruik donkere tinten / dark themes

  • Beperk redirects en crawls

  • Verminder, splits en bundel JavaScript

  • Verklein CSS, JavaScript en HTML

Hoe word je een ‘duurzame’ developer?

“Ha, goede vraag! Ik zou eerst kijken naar welke specifieke dingen in de code heel erg resource-consumerend zijn. Als je dat nog niet weet, kun je daar tools voor gebruiken of zelf iets schrijven. Er kunnen best verrassende dingen uitkomen of quick wins die je meteen kunt doorvoeren. Verder denk ik dat het belangrijk is om bewustzijn te creëren. Dat kan op het kleinste niveau.

Bijvoorbeeld: PHP heeft een functie om te controleren of variabelen ‘NULL’ is en die functie heet ‘is_null’. Alleen, die functie aanroepen kost geheugen en daarmee ook stroom. Je kunt simpelweg ook ‘====null’ gebruiken waardoor je geen functie aanroept en minder stroom verbruikt.

Het is een heel kleine ingreep die op zichzelf weinig effect heeft, maar als iedereen het doet kunnen we een verschil maken. In de klimaatcrisis hebben we het altijd over grote oplossingen, maar ik denk dat ook kleine aanpassingen het verschil kan maken zolang we het samen doen.”

Wat heb je geleerd van de innovatiesprint?

“Ik vond het allereerst leuk en verfrissend, omdat we meestal met technieken zoals Magento en Shopware werken. Ik heb zo wat meer geleerd over Node.js. Daarnaast ook interessant om te kijken naar duurzaamheid binnen development. Het is iets waar veel developers nog niet veel mee bezig zijn, terwijl je daar wel al naar kunt kijken. De vraag is dan: hoe kun je hetzelfde bereiken met minder code?”