Wat een softwarebedrijf kan doen om zijn koolstofvoetafdruk te verminderen

Naarmate de wereld zich meer bewust wordt van de impact van klimaatverandering, nemen veel bedrijven stappen om hun koolstofvoetafdruk te verminderen, en softwarebedrijven vormen hierop geen uitzondering

Milieu

Vieolo is primair een softwarebedrijf en er is een goede kans dat jij, de lezer van dit artikel, ook werkt in de software-industrie.

De vooruitgang van software is een tweesnijdend zwaard geweest voor het milieu. Aan de ene kant heeft de software-industrie collectief ongeëvenaarde efficiëntie naar veel taken gebracht en het gebruik van biljoenen stukjes papier voorkomen. Aan de andere kant hebben we actief gewerkt aan het verhogen van het dataverbruik van gemiddelde burgers, wat op zijn beurt eigen milieuproblemen heeft veroorzaakt in de vorm van e-waste en energieverbruik.

Ongeacht het algemene positieve effect van ons werk, moeten we erkennen dat onze activiteiten en producten een negatieve impact op het milieu hebben, en we zouden ons allemaal moeten inzetten om onze eigen bijdragen te leveren om onze koolstofvoetafdruk te verminderen, hoe klein ook.

We begrijpen dat onze koolstofvoetafdruk misschien een druppel op een gloeiende plaat is vergeleken met andere bedrijven en industrieën, maar toch hebben we geprobeerd de volgende strategieën sinds begin 2022 te adopteren.


Preventie boven compensatie

Hoewel het compenseren van ons energieverbruik door middel van koolstofkredieten of andere mechanismen een belangrijk onderdeel van onze algehele duurzaamheidsstrategie kan zijn, moet het verminderen van ons energieverbruik de hoogste prioriteit hebben.

Er zijn fundamentele problemen met de huidige aanpak van koolstofcompensatie. De effectiviteit van koolstofcompensatie hangt af van de aanname dat het compensatieproject niet zou zijn gerealiseerd zonder de investering in compensatie. Dit is echter moeilijk te bewijzen, en er zijn veel gevallen geweest waarin is aangetoond dat compensatieprojecten zelfs zonder compensatiefinanciering zijn uitgevoerd.

Bovendien is er momenteel geen algemeen geaccepteerd criterium voor een succesvol compensatieproject. De effectiviteit van een project hangt voornamelijk af van de claims van de leverancier en de meeste bedrijven kunnen hun effectiviteit niet onafhankelijk verifiëren. Als gevolg hiervan houdt het kiezen van een compensatieproject, op het moment van schrijven, in dat je een project willekeurig kiest en op geluk vertrouwt.

In de meeste gevallen geven bedrijven niet om de milieueffecten en nemen ze deel aan een compensatieproject om te voldoen aan de wettelijke vereisten of als een publiciteitsstunt, hoewel zulke publiciteitsstunts meestal geen voordeel opleveren voor het publieke imago van de bedrijven.

Hoewel oprechte compensatieprogramma's hun voordelen hebben, moeten we ons eerst richten op het verlagen van ons energieverbruik in plaats van later te proberen de schade ervan te compenseren.

Natuurlijk omvat een groot deel van de energie die we gebruiken algemene operaties die vergelijkbaar zijn met elk ander bedrijf, zoals de energie die in onze kantoren en transport wordt gebruikt. Hier richten we ons op de energiebesparende strategieën die uniek zijn voor softwarebedrijven.


Programmeertalen en tools

Het draaien van een stukje code vereist energie en er is een goede kans dat de energie die jouw code verbruikt, wordt geproduceerd met fossiele brandstoffen. De energie die onze code gebruikt, wordt voornamelijk besteed aan processorkracht (CPU, GPU, enz.) en RAM. Door het CPU- en geheugengebruik te verlagen, kunnen we veilig aannemen dat we een kleinere hoeveelheid energie gebruiken.

De hoeveelheid energie die onze code gebruikt, is sterk afhankelijk van de programmeertaal die we gebruiken. Over het algemeen gebruiken geïnterpreteerde talen (die afhankelijk zijn van een runtime-omgeving) en die met een garbage collector meer RAM en CPU in vergelijking met die welke worden gecompileerd en geen garbage collector hebben.

Een simpel Python-programma gebruikt bijvoorbeeld veel meer CPU en RAM dan een vergelijkbaar programma geschreven in C, omdat het Python-programma de Python-interpreter moet starten en gebruiken, terwijl het C-programma geen dergelijke overhead heeft.

Hoewel we veilig kunnen aannemen dat talen zoals C of Rust energie-efficiënter zijn dan talen zoals Javascript en Python, is het kwantificeren van deze energie-efficiëntie vrij moeilijk. De meest betrouwbare informatiebron is een enkele studie uitgevoerd door onderzoekers aan de Universiteit van Minho in Portugal. Deze studie beweert dat bijvoorbeeld Javascript en Python respectievelijk ongeveer 4 en 75 keer meer energie verbruiken in vergelijking met C en Rust.

Hoewel we kunnen discussiëren over de nauwkeurigheid van deze meting, is de algemene theorie keer op keer bewezen, zowel in kleine als grote opstellingen. Discord bijvoorbeeld hershreef een van zijn diensten, eerder geschreven in Go, met Rust. Hoewel Go al een performante taal is, slaagde de Rust-implementatie erin om de Go-implementatie op elke metriek te verslaan terwijl het algehele geheugen- en CPU-gebruik werd verlaagd.

Het gebruik van programmeertalen en tools die niet afhankelijk zijn van interpreters en runtime-omgevingen is een van de meest betrouwbare manieren om het energieverbruik waarover we beschikken in de software-industrie te verminderen.

Op kleine schaal is het verschil in energieverbruik tussen de meeste en minst efficiënte talen verwaarloosbaar. Het energieverschil tussen een klein Python- en Rust-programma dat op je lokale machine draait, is zo klein dat je het waarschijnlijk niet eens kunt meten.

Echter, ongeacht het verwaarloosbare verschil op kleine schaal, vertrouwen ontwikkelaars op de code die al door anderen is geschreven, terwijl de code die ze schrijven uiteindelijk de basis en technische schuld van toekomstige projecten kan worden. Brendan Eich bijvoorbeeld creëerde Javascript in 1995 voor Netspace 2, naar verluidt binnen 10 dagen, om wat basisfunctionaliteiten aan websites toe te voegen. Vanaf 2023 is Javascript veranderd in de meest gebruikte programmeertaal. Hoewel de kansen zeer klein zijn, kan het project waar je nu aan werkt uiteindelijk op miljoenen apparaten draaien.

Door gebruik te maken van een programmeertaal, nemen we actief deel aan de ontwikkeling en creatie van het ecosysteem en de technische schuld ervan. Door bewust te kiezen voor efficiëntere en performantere talen die misschien buiten onze comfortzone liggen, kunnen we zorgen voor een lagere koolstofvoetafdruk van onze code in de toekomst.

Dit betekent echter niet dat we allemaal Python, Ruby en Javascript moeten verlaten en code in Rust of C moeten gaan schrijven. Elk van deze tools is om een reden gemaakt en heeft zijn eigen toepassingsgebieden.

Naast de energie die door de uiteindelijke applicatie wordt gebruikt, verbruiken wij ontwikkelaars ook een niet-verwaarloosbare hoeveelheid energie bij het ontwikkelen van de genoemde applicatie. In grootschalige applicaties is de energie die tijdens de ontwikkelingscyclus wordt gebruikt waarschijnlijk verwaarloosbaar vergeleken met de energie die wordt gebruikt om de applicatie te draaien. Maar in sommige gevallen is de energie die je gebruikt om te schrijven en te debuggen van een complexere taal zoals Rust zo hoog dat je beter af zou zijn met het gebruik van Python in de eerste plaats.

Ook door de bestaande fundamenten en codebases word je in bepaalde situaties gedwongen om een bepaalde taal te gebruiken. Als je een website maakt, MOET je Javascript gebruiken, aangezien dit de primaire taal is die browsers draaien. Zelfs als je een andere programmeertaal gebruikt, zal je code eerst worden omgezet naar Javascript. Je kunt talen zoals C of Rust gebruiken op een website via Web Assembly, maar tenzij je een specifiek gebruiksscenario hebt, zou je beter af zijn met Javascript.


Kies efficiënt hardware

Hoewel de software-industrie vaak beperkte invloed heeft op de richting van hardwareontwikkeling, hebben we meer macht in handen dan we denken.

Hoewel we afhankelijk zijn van hardwareleveranciers om onze code uit te voeren, is het commerciële succes van een hardwareproduct sterk afhankelijk van de beschikbare software die het kan draaien. Ongeacht hoe goed een stuk hardware is, het is volstrekt nutteloos als er geen compatibele kwaliteitssoftware is. Dus wanneer we besluiten om onze tijd en energie te besteden aan het schrijven van software die compatibel is met bepaalde hardware, dragen we bij aan het financiële succes en de levensduur ervan.

Als we zelf de mogelijkheid hebben om de benodigde hardware te kiezen (en te implementeren) om onze code te draaien, moeten we ons inspannen om de meest energiezuinige producten te kiezen.

Als voorbeeld zijn ARM-processoren energiezuiniger dan hun x86-tegenhangers. Een onderzoek door twee Braziliaanse onderzoekers concludeerde dat ARM-gebaseerde SOC's, wanneer gebruikt voor HTTP- en SQL-servers, 3 tot 4 keer energiezuiniger zijn dan x86-systemen. Door ervoor te kiezen om software te schrijven voor en ondersteuning te bieden aan ARM-gebaseerde SOC's in plaats van x86, dragen we bij aan het financiële succes en de verdere ontwikkeling van efficiëntere hardware.


Gebruik AI wanneer het echt nodig is

De vooruitgang in Kunstmatige Intelligentie behoort tot de grootste prestaties van moderne techniek, het oplossen van unieke problemen die conventionele architecturen niet kunnen oplossen.

Om een AI-model te produceren, moeten we een enorme dataset analyseren, voorbereiden en verwerken. Het AI-model zal de analyse van de dataset gebruiken om een bepaalde taak te voltooien wanneer het wordt gepresenteerd met een nieuw stukje data dat nooit eerder is gezien. Dit proces staat bekend als training.

Het trainen van een AI-model is een zeer energie-intensief proces. Volgens onderzoek door de Universiteit van Massachusetts Amherst, kan het trainen van een enkel AI-model evenveel koolstof uitstoten als de productie en het gebruik van vijf auto's gedurende hun hele levensduur.

Dus voordat we nadenken over het trainen van een nieuw AI-model, moeten we onszelf twee vragen stellen. Als het antwoord op beide vragen nee is, dan pas moeten we het proces van het trainen van een aangepast AI-model starten.

Kan het probleem in kwestie effectief worden opgelost door conventionele software? Zo ja, dan moeten we vasthouden aan de conventionele software. Een conventionele oplossing is bijna altijd energiezuiniger dan een AI-model en zelfs als de oplossing minder efficiënt is dan een getraind AI-model, wordt de oplossing mogelijk nooit genoeg gebruikt om het energieverbruik van de training te overtreffen.

Kan het probleem effectief worden opgelost door een voorgetraind AI-model? Zo ja, dan moeten we een voorgetraind model gebruiken. In de loop der jaren hebben veel ontwikkelaars verschillende AI-modellen getraind om veelvoorkomende problemen tot een acceptabel niveau op te lossen. Het gebruik van een voorgetraind model zal de enorme hoeveelheid energie die nodig is om een model vanaf nul te trainen, besparen.

Het energieverbruik van het trainingsproces is een van de belangrijke uitdagingen die de technologie-industrie, inclusief wij, in de komende jaren moet oplossen.


Heb een zinnig productontwikkelingsproces

Wij, ontwikkelaars, worden evenzeer beïnvloed door de hype van nieuwe technologie als elke andere groep mensen. Aan de andere kant schrijven we allemaal software die we hopen dat door een groot aantal mensen wordt gebruikt, hetzij om economische of persoonlijke redenen.

In de loop der jaren heeft de software-industrie geprobeerd om enkele van de trending technologieën op te nemen of te integreren in de producten die ze ontwikkelen. Op een gegeven moment had alles een element van blockchain of probeerden ze te decentraliseren. Op een ander moment werd alles in Javascript geschreven. Momenteel heeft alles een generatieve AI of is het "AI-powered", hoewel de toevoeging van AI volledig zinloos kan zijn. In veel gevallen vertaalt de toevoeging van deze trendy functies zich niet in het succes of de levensduur van het project. Sterker nog, het effect kan het tegenovergestelde zijn.

Het falen en de vertraging van een project betekent dat de gehele energie en vervuiling die is gecreëerd voor de ontwikkeling van het product voor niets is geweest en dat de problemen die ze probeerden op te lossen, onopgelost blijven. Door een zinniger productontwikkeling te hebben in plaats van trendy functies toe te voegen om een kortetermijnbuzz te creëren, vergroten we de levensvatbaarheid van onze producten en dragen we op de lange termijn bij aan een vermindering van onze koolstofvoetafdruk.


Uw interesses zijn afgestemd op het milieu

Naast de voor de hand liggende voordelen van het verminderen van onze koolstofvoetafdruk, is het eigenlijk in ons eigen belang om dit te doen. De meeste dingen waarover we het hierboven hadden, besparen ons ook geld en/of verbeteren onze producten.

Het verminderen van het geheugen- en CPU-gebruik van onze applicatie stelt ons in staat om onze code op goedkopere hardware of cloudinfrastructuur te draaien. Het hebben van een energiezuiniger systeem vermindert onze energierekeningen. Door ons te concentreren op de kernfuncties van onze producten in plaats van te proberen onnodige technologieën op te nemen, verlagen we de ontwikkelingskosten van onze producten en helpen we hun langetermijnsucces.

Het implementeren van enkele van deze ideeën is makkelijker gezegd dan gedaan, maar we, in de software-industrie, moeten onze bijdrage leveren om onze negatieve invloed op het milieu en het klimaat te voorkomen en te verzachten.