Scheduled jobs uitvoeren op het groenste moment: De Open-Source Carbon-Aware Scheduler

Bij First8 Conclusion vinden we dat softwareontwikkeling niet alleen draait om prestaties en innovatie, maar ook om duurzaamheid. Als ontwikkelaars erkennen we onze verantwoordelijkheid om bij te dragen aan een groenere toekomst. Daarom bouwen we oplossingen die aansluiten bij de Duurzame Ontwikkelingsdoelen en helpen we de milieu-impact van technologie te verminderen—één regel code tegelijk.

15 april 2025   |   Blog   |   Door: First8 Conclusion

Deel

First8 Conclusion Carbon Scheduler

Green Software Foundation

Groene software is een breed begrip. Wat houdt het precies in, en hoe ontwikkelen we het? De Green Software Foundation stelt het volgende: “Groene software is koolstofefficiënte software, wat betekent dat het zo min mogelijk CO₂ uitstoot. Slechts drie activiteiten verminderen de koolstofemissies van software; energie-efficiëntie, koolstofbewustzijn en hardware-efficiëntie.”

Volgens de Green Software Foundation kunnen we onze CO2-voetafdruk verminderen door het moment waarop onze applicaties elektriciteit verbruiken te optimaliseren, oftewel Carbon Awareness. Energie wordt niet altijd hetzelfde geproduceerd—soms wordt het meer uit fossiele brandstoffen gehaald, terwijl het op andere momenten afkomstig is van hernieuwbare bronnen zoals wind en zon. Door deze energiebronnen te combineren, berekenen we een carbonintensity-waarde, die we beschikbaar stellen via onze carbonintensity.io API.

Door simpelweg de uitvoering van taken te verschuiven naar groenere energieperiodes, kunnen organisaties emissies verminderen zonder prestaties op te offeren. Veel taken worden traditioneel op willekeurige tijdstippen ’s nachts gepland. In de meeste gevallen hoeven ze echter niet op een vast tijdstip te draaien -alleen voordat de werkdag begint. Dankzij deze flexibiliteit kunnen ontwikkelaars taken verschuiven naar periodes met schonere energie.

Om ontwikkelaars te helpen profiteren van groenere energieperiodes, hebben we een open-source scheduler gebouwd welke bewust is van de carbonintensity-waarde: GreenScheduler. Deze Java-gebaseerde library zorgt ervoor dat scheduled jobs op het groenst mogelijke moment worden uitgevoerd door gebruik te maken van real-time en voorspelde carbonintensity-waarden.

Besparing van CO₂-emissies

Hieronder zie je een voorbeeld van een typische job die ’s nachts iets interessants doet, bijvoorbeeld het genereren van een rapport. Vaak vraagt de business om dit rapport één keer per 24 uur te laten maken. Als ontwikkelaar kiezen we dan een willekeurig tijdstip in de nacht om deze job te plannen. Bijvoorbeeld: 1 uur ’s nachts. Er zijn dan weinig gebruikers actief, dus het systeem wordt niet zwaar belast — perfect moment om de database te bevragen, wat berekeningen te doen en een mooi PDF-rapport te genereren. Dat duurt ongeveer een half uur, maar niemand vindt het erg zolang het rapport maar de volgende ochtend beschikbaar is.

Maar wat als het echt niet uitmaakt wanneer in de nacht dat rapport precies gemaakt wordt? Wat als we het groenste moment zouden kunnen kiezen om de taak uit te voeren? Dan zouden we het rapport kunnen genereren op het moment dat de stroom het schoonst is — dus met de laagste CO₂-uitstoot.

Wanneer de green scheduler de planning van een taak overneemt, geven we aan binnen welke tijdspanne de taak uitgevoerd mag worden (het ‘groene venster’). Bijvoorbeeld: niet eerder dan 01:00 uur en niet later dan 09:00 uur, zodat het rapport er gewoon ligt als de werkdag begint.

De green scheduler maakt dan verbinding met de carbonintensity.io API en haalt daar een 24-uurs voorspelling op van de verwachte CO₂-uitstoot per uur. Stroom uit fossiele brandstoffen zorgt voor hoge uitstoot, terwijl zonne- en windenergie nauwelijks CO₂ veroorzaken — hun carbon intensity is vaak heel laag of zelfs nul.

Blog Carbon Scheduler

Carbon Scheduler

De scheduler kiest vervolgens het groenste moment binnen het opgegeven tijdsvenster - dus het moment met de laagste uitstoot - en plant de job op dat tijdstip in. Het kan dus zijn dat het ideale moment 05:00 uur is. En de nacht erna misschien 04:00 uur. De scheduler gebruikt steeds de nieuwste gegevens uit de API. Alleen al door het tijdstip van uitvoering te veranderen, besparen we 8,4% aan CO₂-uitstoot!

Blog Carbon Scheduler plannen

Carbon Scheduler - nog groener plannen

Vaak schijnt de zon op zijn hoogtepunt in de middag, daardoor is de carbonintensity mogelijk in de middag lager. Als het dus geen probleem is om je rapport later op de dag te ontvangen, kun je het tijdsvenster uitbreiden tot bijvoorbeeld 17:00 uur. Zo heb je een grotere kans om nog groener te plannen. Zoals je in de afbeelding hieronder ziet: door het venster te verlengen tot 17:00 uur besparen we 14% - bijna het dubbele - alleen maar door één getal aan te passen.

Hoe het werkt

Onze GreenScheduler integreert met de carbonintensity.io API, die we hebben ontwikkeld om de carbonintensity van elektriciteit in real-time te berekenen.

De planner:

  • Haalt carbonintensity-waarden op van onze API, die real-time en voorspelde carbonintensity gegevens biedt.
  • Identificeert het optimale uitvoeringsvenster door de carbonintensity voorspelling binnen een gegeven tijdsbestek te analyseren.
  • Plant niet-tijdskritische taken wanneer elektriciteit het schoonst is, waardoor de totale emissies worden verminderd.

Deze aanpak stelt ontwikkelaars in staat om hun applicaties duurzamer te maken - zonder prestaties of betrouwbaarheid op te offeren met minimale inspanning voor ontwikkelaars. Het gebruik van de koolstof-bewuste planner is eenvoudig. Hieronder is een basisvoorbeeld om je op weg te helpen:

De scheduler biedt een gebruiksvriendelijke, op annotatie gebaseerde, aanpak voor taakplanning die de standaard @Scheduled annotatie vervangt. Met de traditionele @Scheduled annotatie draait de taak altijd op een vast tijdstip, zonder rekening te houden met de carbonintensity. Met @GreenScheduled wordt automatisch het groenste moment binnen het opgegeven tijdsvenster gekozen. Hier is hoe je het kunt gebruiken in Spring Boot:

Met de @GreenScheduled annotatie zal de planner automatisch het optimale tijdstip bepalen om de taak uit te voeren op basis van de koolstofintensiteitsgegevens die door de carbonintensity.io API worden voorspeld.

Doe mee en maak software groener!

Wij geloven dat duurzaamheid een kernonderdeel van softwareontwikkeling moet zijn. In het geval van de GreenScheduler kunnen we door simpelweg de uitvoering van taken te verschuiven naar tijden waarin energie groener is, de ecologische voetafdruk van technologie aanzienlijk verminderen.

Ga vandaag nog aan de slag met GreenScheduler. Ga naar onze GitHub-repo, verken de documentatie en begin slimmer te plannen. Heb je ideeën? Open een issue of draag bij - wij willen graag samenwerken.

Duurzame software begint bij jou—plan slimmer, bespaar CO₂. 🌍

Gebouwd voor Java, maar open voor uitbreiding

Momenteel is onze GreenScheduler beschikbaar voor Java, maar we willen het uitbreiden naar andere talen. We zijn op zoek naar bedrijven en ontwikkelaars die onze visie delen en willen helpen dit concept naar andere ecosystemen te brengen, zoals Python, C# of iets anders!

We hebben dit project mede kunnen opstarten met behulp van het SIDN Fonds naar aanleiding vanuit de call ‘Duurzaamheid’ (2024). De focus binnen deze call lag op het verbeteren van de duurzaamheid van het internet of het verminderen van de milieu-impact ervan.