Grønn koding: Bærekraftig koding for en grønnere fremtid
17. oktober 2024Innledning
Ettersom verden blir stadig mer digitalisert, er det relevant og nødvendig å rette søkelys på hvilken påvirkning digitaliseringen kan ha på miljøet. IT-sektoren er en av de raskest voksende industriene globalt, og den står for en stadig økende andel av de globale CO2-utslippene. Faktum er at IT-sektoren gir like store klimaavtrykk som flysektoren [1]. Som følge av denne utviklingen, har grønn IT og mer spesifikt grønn koding blitt et fremvoksende konsept.
I dette blogginnlegget søker jeg å gi et innblikk i hva grønn koding er, hvorfor det er viktig, og hvordan utviklere kan implementere bærekraftig kode.
Hva er grønn koding?
“Green coding is an environmentally sustainable computing practice that seeks to minimize the energy involved in processing lines of code and, in turn, help organizations reduce overall energy consumption.” [2]
Grønn koding er et segment av grønn databehandling (grønn IT). Grønn databehandling er en praksis, dvs. fabrikasjon, bruk og avhending av IT-utstyr, som har som mål å begrense teknologiens klimaavtrykk. Grønn koding dreier seg om å utvikle programvare som påvirker miljøet i så liten grad som mulig. Mer konkret vil det si å skrive kode som er energieffektiv, ressursbesparende og optimalisert for å kjøre på enheter og servere med lavt energiforbruk. Et hovedpoeng med grønn koding er altså at programkoden er effektiv. Med dette menes det at koden ikke gjør mer enn nødvendig for å oppnå sitt definerte funksjonelle formål.
Grønn koding handler også om hele programvarens livssyklus, fra utvikling og distribusjon til bruk og avvikling.
Flere open-source prosjekter og fellesskap har begynt å fokusere på bærekraft i programvareutvikling. Green Software Foundation er et eksempel på et initiativ som samler utviklere, forskere og organisasjoner for å fremme energieffektiv og bærekraftig programvare.
Hvorfor er grønn koding viktig?
Dagens digitale infrastruktur drives i utstrakt grad av datasentre. For å opprettholde drift, kjøling og sikkerhet forbruker datasentre veldig store mengder energi. Stadig økende databehandling skaper store mengder varme, som igjen krever energi for å avkjøles. Her spiller grønn koding en viktig rolle. Grønn koding kan bidra til å redusere energiforbruket i IT-sektoren, og derav redusere sektorens klimaavtrykk. Dette kan oppnås ved å optimalisere programvarens bruk av ressurser. Effektiv kode som grønn koding representerer kan redusere behovet for maskinvareoppgraderinger, forlenge levetiden til eksisterende teknologi, og altså minimere energikostnader. Alt dette uten å gå på bekostning av ytelsen.
Grønn koding vil ikke bare kunne være fordelaktig for miljøet, men også for organisasjonen som implementerer det [3]. Hvis grønn koding gjør at organisasjonen forbruker mindre energi, kan dette gi økonomiske besparelser, som vil bidra til å opprettholde forretningens bærekraft. Dessuten kan en organisasjon som forplikter seg til bærekraft, trolig få et bedre omdømme og derav potensielt øke sin markedsappell blant miljøbevisste kunder [4].
Hvordan implementere grønn kode?
En fundamental forutsetning for at en organisasjon skal kunne redusere sin miljøpåvirkning, er at organisasjonen forstår hvilken miljøpåvirkning den har. På den måten kan organisasjonen legge planer og ta veloverveide beslutninger om hvilke bærekraftige programvareutviklingstiltak de bør gjøre for å maksimere effekten. Det fins en mengde målemetoder som kan brukes for å vurdere og forstå miljøpåvirkningen. Mange programvare- og skyleverandører tilbyr verktøy og dashboards som kan synliggjøre miljøpåvirkningen til tjenester som en organisasjon benytter. Noen eksempler er AWS Carbon Footprint Tool og Azure Emissions Dashboard [3].
Hvis man har gjort tiltak for å introdusere grønn tenkning i en organisasjon, vil det øke sjansen for en kulturendring i organisasjonen med mer fokus på bærekraft i hver ansatt sitt daglige arbeid [3]. Dette vil gjøre det enklere å implementere grønn koding.
Når det gjelder IT-arkitektur, er det anbefalt ut ifra et grønt koding perspektiv å satse på mikrotjenester fremfor monolitt [3]. I en monolittisk applikasjon er alle komponenter og all funksjonalitet pakket sammen. Hvis en komponent i en monolitt opplever høy etterspørsel, må som oftest hele applikasjonen skaleres. Dette kan føre til at ressursene brukes mindre effektivt. Med en mikrotjenestearkitektur er applikasjonen delt opp i flere uavhengige tjenester som kan rulles ut og skaleres hver for seg. Det vil gi bedre ressursbruk, serverutnyttelse og generelt bedre energieffektivitet.
Et annet tiltak for å optimalisere serverbruk er containerisering (f.eks Docker) eller virtualisering [4]. Dette kan maksimere bruken av serverressurser og redusere behovet for flere fysiske servere og dermed energibruken. Hvis de brukes på riktig måte, kan skyplattformer være energibesparende. Ressursskaleringsløsninger som skyleverandører ofte tilbyr, kan optimalisere ressursforbruket i forhold til etterspørselen.
Det finnes noen mer konkrete implementasjonsråd hva angår grønn koding:
- Optimalisering av algoritmer: Ved å bruke effektive algoritmer som bruker mindre prosessorkraft og minne, kan dette redusere energien som kreves for å kjøre koden. [4]
- Unngå redundant kode: Ved å fjerne unødvendig og ubrukt kode vil mengden prosessering som trengs bli redusert, noe som igjen reduserer energibruken. Dette vil også forenkle vedlikehold av programvaren. [5]
- Begrens bruk av løkker: Løkker er ofte veldig ressursintensive, ettersom de kan utføre et stort antall beregninger. Ved å minimere antallet løkker, kan man optimalisere dataprosesseringen. [7]
- Asynkron programmering: Å kjøre prosesser i parallell (asynkront) kan øke effektiviteten og redusere energibruken. Synkronitet gir mer ventetid for prosessoren og dermed mer unødvendig energibruk. [6]
- Caching-teknikker: Implementasjon av caching av eksempelvis ofte aksesserte data i minnet, kan gi besparelser i prosesseringstid. [7]
- Lazy loading: Ved å bare laste data når det trengs, kan utviklere redusere minne-fotavtrykket i programvaren. [7]
- Oppdater til nyere versjoner: Ressursbruk kan optimaliseres ved å ta i bruk oppdaterte biblioteker og rammeverk
- Valg av programmeringsspråk: Programmeringsspråk har ulik energieffektivitet. C, C++ og Rust er kjent for å være noen av de mest energieffektive språkene. Python og Ruby er ansett for å være blant de minst energieffektive. [4]
- Open source software: Åpen kildekode-programvare kan bidra til bærekraft ved redusert behov for utvikling fra bunnen av, noe som sparer tid og ressurser. [4]
Avslutning
Grønn koding er et sentralt konsept innen grønn databehandling. Det er en mulighet til å kombinere teknologi med ansvar. Ved å gjøre små justeringer i hvordan vi skriver og optimaliserer kode, kan utviklere bidra til å redusere teknologiens miljøpåvirkning og fremme en grønnere fremtid.
Kilder
[1] https://www.tu.no/artikler/it-bransjen-har-like-stort-klimaavtrykk-som-flybransjen-hva-gjor-vi-med-det/486098
[2] https://www.ibm.com/think/topics/green-coding
[3] https://www.computer.org/publications/tech-news/trends/implementing-green-coding-practices
[4] https://green.org/2024/05/24/best-practices-of-sustainable-software-development/
[5] https://greensoftware.foundation/articles/10-recommendations-for-green-software-development
[6] https://www.asioso.com/en_BA/blog/green-code-4-principles-for-environmentally-friendly-software-development-b1001
[7] https://www.suso.academy/en/2023/03/13/green-coding-the-5-most-important-basics-for-sustainable-software-development-with-code-examples/