Onderwerpen als duurzaamheid en klimaatverandering staan wereldwijd hoog op de agenda. Uiteraard moet ook de software-industrie haar verantwoordelijkheid nemen en initiatieven ontplooien om softwareproducten ‘groen’ te mogen noemen. Wat houdt dat in? Of beter, wat houdt duurzame software-engineering in?
De betekenis van duurzame software-engineering wordt treffend beschreven door Asim Hussain, green
cloud advocacy lead bij Microsoft. Op zijn persoonlijke projectwebsite onderscheidt hij acht principes van green software engineering. De focus met betrekking tot klimaatgevolgen van software ligt op de uitstoot van koolstofdioxide (CO2). Software draait immers op hardware, hardware verbruikt stroom, en het opwekken van stroom gaat nog altijd grotendeels gepaard met CO2–uitstoot.
Lange tijd dachten we in de it dat verduurzaming door middel van efficiëntere chips en it-hardware gerealiseerd zou worden. Dat blijkt niet het geval. Volgens de wet van Moore verdubbelt het aantal transistors per chip nog elke twee jaar. Helaas resulteert meer transistors per chip doorgaans ook in een hogere energieconsumptie. Daarnaast loopt genoemde wet tegen fysieke limieten aan, omdat er simpelweg niet meer transistors op een enkele chip passen. Verduurzaming van software moet dus op een andere manier gerealiseerd worden dan enkel op basis van efficiënter hardware-gebruik.
Groene principes in de praktijk
De acht principes geven handvatten om een softwareproduct te realiseren waarbij de verduurzaming voortkomt uit zowel de hardware, software, maar ook aspecten als locatie en timing. Wat betekent dat? Stel je een applicatie voor die draait op een reguliere applicatieserver, die wordt gehost op eigen hardware. Die applicatie heeft een normale belasting van rond de tien requests per seconde, maar de piekbelasting kan wel oplopen tot duizend requests per seconde.
Als we dan kijken naar Principe 4: embodied carbon, moeten we uitgaan van de CO2-uitstoot die het gevolg is van een applicatie, ofwel de ‘embodied carbon’, zelfs nog voordat deze operationeel is. In ons voorbeeld is de normale belasting van de applicatie nog relatief laag, maar om te voldoen aan de piekbelasting is het noodzakelijk om krachtigere hardware (met een hogere ‘embodied carbon’-waarde) in te zetten.
Ook relevant in dit voorbeeld is Principe 5: evenredigheid van energie. Microsoft definieert dit als volgt: ‘De evenredigheid van energie is een meetwaarde voor de relatie tussen het vermogen dat in een computersysteem wordt gebruikt en de snelheid waarmee nuttige bewerkingen worden uitgevoerd (de benutting). Als het algehele energieverbruik in verhouding staat tot de benutting van de computer, dan wordt dit ‘energieproportioneel’ genoemd.’ Ofwel, volgens deze redenering moeten we zoeken naar de meest efficiënte hardware voor de gewenste toepassing.
Vervolgens is er nog Principe 7: de vraag aanpassen. In ons voorbeeld gaan we uit van een piekbelasting van duizend requests per seconde. Stel je nu eens voor tachtig procent van deze requests zeer complexe berekeningen vragen van de server. Volgens dit principe zou de strategie dan moeten zijn om de vraag te spreiden. Stel dat de applicatie ineens achthonderd uitgebreide rekenverzoeken krijgt, dan zou hij deze kunnen bewaren om ze pas uit te voeren op het moment dat het aanbod van duurzame energie hoger is.
Deze drie principes zijn een goed hulpmiddel om met name de duurzaamheid van je applicaties in kaart te brengen. Vervolgens kan je ze met de overige principes ook daadwerkelijk ‘vergroenen’ door de efficiëntie van applicaties te verbeteren door bijvoorbeeld de code, het energie- en netwerkverbruik te optimaliseren.
Aanvullende duurzame inzichten
Bij duurzame software-engineering zijn, naast technische kennis en kunde, ook domein- en technische expertise van groot belang. Kennis van de branche en het ecosysteem helpt om software te ontwikkelen waarbij de eerdergenoemde principes voorop staan en zo goed mogelijk tot hun recht komen.
Cloud-native development is daarnaast een belangrijk middel om applicaties te bouwen die zo efficiënt mogelijk ingezet kunnen worden, bijvoorbeeld in de Microsoft Azure Cloud. Door de schaalgrootte van de cloud en schaalbaarheid per applicatie is de klimaatimpact daarvan het laagst. In Azure kan je bovendien ook de milieu-impact van de software monitoren door middel van het onlangs geïntroduceerde Emissions Impact Dashboard. Dit dashboard geeft onder andere inzicht in het verbruik over een bepaalde periode, maar ook over de locatie van de uitgestoten CO2.
Het mag duidelijk zijn dat het bij duurzame software-ontwikkeling niet alleen draait om efficiënte hardware en software. Bij de totstandkoming van duurzame software zijn kwaliteit, domeinkennis, procesoptimalisatie en duurzaam denken en werken ook van groot belang. Elk bedrijf dat software ontwikkelt zou dit moeten monitoren om de daadwerkelijke milieu-impact van zijn producten continu te meten en te verbeteren.
“Stel dat de applicatie ineens achthonderd uitgebreide rekenverzoeken krijgt, dan zou hij deze kunnen bewaren om ze pas uit te voeren op het moment dat het aanbod van duurzame energie hoger is.” Wachten tot het gaat waaien lijkt me niet een reeële optie hoewel de vraag aanpassen door van een online verwerking naar de aloude batch te gaan wel een interessant idee is. Vrees alleen dat we het dan meer over aanpassingen in het proces hebben door net als thuis alleen de was te draaien in de daluren.