Energie efficiënte software

Onderwerp (Wat) Het verminderen van energieverbruik door betere keuzes te maken in het ontwikkel- en beheerproces van ICT.
Doel (Waarom) ICT verbruikt zeer veel energie  en de verwachting is dat dit alleen maar gaat toenemen.  Dit staat haaks op het SDG doel 7 dat juist wil dat het energieverbruik wordt teruggedrongen. Hoe minder energie de software gebruikt, hoe minder hardware en servers je nodig hebt en hoe minder energieopwekking überhaupt vereist is.
Beschrijving (Hoe) Het gaat om het bewust maken van afwegingen zover dat mogelijk is. Denk hierbij aan het gebruik van de juiste architectuur (desgin patterns), keuzes, keuzes tussen platforms en programmeertalen, hostingproviders (groene stroom, cradle to cradle hardware), serverside caching (doen) en grootte van afbeeldingen (zo klein mogelijk). Belangrijk hierbij is dat er vaak een afweging is tussen developers productiviteit en energie efficiëntie. Het kost bijvoorbeeld heel veel tijd om hele efficiënte code te schrijven in een machine taal, terwijl dit waarschijnlijk niet opweegt tegen de kosten aan ontwikkeltijd.
HBO-i Beroepstaak Software adviseren en ontwerpen – 2
Rol Front-end developer en UX designer, back-end, CSC
Beginnerscontent Energie efficiënte websites:

Energiezuinige software algemeen:

In het artikel van Zo maak je software energiezuinig (https://www.agconnect.nl/artikel/zo-maak-je-software-energiezuinig), staan 6 tips:

  1. Reduceer het noodzakelijke dataverkeer door alleen het broodnodige over te sturen, bijvoorbeeld door de resolutie van afbeeldingen te verlagen.
  2. Sla niet alle historische gegevens op. Het is best voorstelbaar dat het soms handig is dat soort data nog te kunnen oproepen, maar het levert wel een enorme berg gegevens op die in de praktijk maar zelden worden ingekeken. Het opslaan en archiveren van al deze data kost opslagruimte, tijd en energie. Ook het doorzoeken van grote datasets gaat gepaard met de benodigde computerkracht. Tijdig filteren van deze data voorkomt wildgroei aan gegevens en de daarbij behorende opslagkosten en energieverbruik.
  3. Verlaag het opgenomen vermogen van de applicatie in rust. Dit kan bijvoorbeeld door deze op gedeelde servers uit te rollen. Het probleem van computers is dat deze machines in rust nog steeds een significante hoeveelheid energie verbruiken en dat computers optimaal presteren onder volle belasting. Door meerdere applicaties op gedeelde servers te laten draaien wordt de kans dat de computer een hoge belasting heeft groter, waardoor het rendement toeneemt. Zorg dat de applicaties zo opgezet zijn dat ze niet afhankelijk zijn van de onderliggende hardware, zodat ze gemakkelijk op gedeelde servers kunnen worden uitgerold.
  4. Beperk maken van verbindingen. Protocollen tussen processen dienen zo opgezet te zijn dat de verschillende processen niet onnodig vaak contact maken. Een verbinding opzetten kost energie en tijd, zeker in het geval van mobiele communicatie. Door zoveel mogelijk data tegelijk te versturen wordt de efficiëntie van de dataoverdracht verhoogd.
  5. Maak in de productieomgeving gebruik van gecompileerde talen. Veel webapplicaties zijn geschreven in een programmeertaal die gebruikmaakt van een interpreter, die de programmatekst tijdens het gebruik van de applicatie naar machinecode vertaalt. Deze constructie kost de computer extra rekenkracht.
  6. Versimpel de infrastructuur door bijvoorbeeld het gebruik van proxy’s als adapter tussen systemen te verwijderen. Deze proxy’s hebben niet altijd toegevoegde waarde, zoals extra veiligheid of bescherming van de achterliggende server tegen piekbelastingen. Als er geen zichtbare toegevoegde waarde is, zou zo’n proxy geëlimineerd kunnen worden, wat kan resulteren in energiebesparingen.

Vaak wordt er gepraat over de meest duurzame programmeertaal, en krijg je overzichten zoals deze https://medium.com/codex/what-are-the-greenest-programming-languages-e738774b1957, maar vaak heeft de individuele programmeur beperkte keuze in talen en is het altijd een afwegin met developer productiviteit.

Gevorderden 1. Goed overzichtsartikel over Green IT en Green software van IEEE: https://robertoverdecchia.github.io/papers/IEEESW_2021.pdf

2. IEEE heeft ook een aparte website over sustainable ICT met oa daarop duurzame standaarden: https://sustainableict.ieee.org/

3. W3C heeft ook een aparte standaard: https://w3c.github.io/sustyweb/

4. Voor efficiënte algoritmes:

https://en.wikipedia.org/wiki/Algorithmic_efficiency

5. Promotieonderzoek van Jagroep over groene soft ware producten: https://dspace.library.uu.nl/handle/1874/354036

6. 34 best practices op deze wiki: https://wiki.cs.vu.nl/green_software/Best_practices_for_energy_efficient_software

Daar staat ook een scriptie over dit onderwerp.

8. Een kort goed boekje over dit onderwerp Duurzame IT is geen illusie: https://github.com/OrangeSeries/Sustainability

9. In deze video komt energie efficiëntie software overzichtelijk terug:

Goede voorbeelden Zes uitgangspunten voor een duurzaam web: https://www.sustainablewebmanifesto.com. Hieruit kunnen Definition of Done voor het project worden afgeleid, bijvoorbeeld:

Het opgeleverde ICT product/dienst verbruikt minder energie/CO2 dan soortgelijke ICT producten/diensten.

Kwaliteitscriteria zouden kunnen zijn:

  1. De servers van het ICT product/dienst gebruiken groene stroom.
  2. De hardware van het ICT product/dienst gebruikt zo min mogelijk materiaal, dit materiaal is herbruikbaar en geproduceerd onder verantwoorde omstandigheden