Bæredygtig Software - Måling og Fremtidsperspektiver
Jeg havde for nylig en meget givende samtale med en Bent Thomsen fra AAU omkring emnet bæredygtig software. Dette er en afgørende faktor i forhold til de kompetencer vi ønsker at videregive til vores studerende. Det er selvsagt vigtigt at de kan udvikle og vedligeholde software, der ikke kun er effektivt, men også miljøvenligt.
Måling af Energiaftrykket
En af de mest centrale diskussioner under vores møde drejede sig om måling af softwarens "energy footprint". Vi identificerede to overordnede tilgange:
Måling af Output gennem Stikkontakten: Dette er den mest almindelige metode, men den har en ulempe. Den måler energiudtrækket fra hele computeren, ikke kun fra CPU'en. Det er også værd at bemærke, at denne type måling kun kan tages med en frekvens af 1 x per sekund. I praksis betyder det, at det er yderst svært at teste mindre stykker kode eller ændringer.
Måling af Output gennem CPU'en: Denne metode er mere præcis, men det er vigtigt at bemærke, at ikke alle CPU'er giver denne information. RAPL (Running Average Power Limit) måling kan ske 1 gang pr. mikrosekund, hvilket giver mere præcise måling – også for mindre kodestumper, men i skrivende stund understøttes teknologien kun af nyere processorer.
Det er også vigtigt at forstå, at selv når man måler fra stikkontakten, kan baselinemålingerne variere, afhængigt af tidspunktet på dagen eller de specifikke betingelser. Det kan derfor være svært at angive nøjagtige beregninger af hvad det reelle energiaftryk er.
Arkitektoniske Overvejelser
Bent Thomsen fortalte også om et interessant resultat fra deres undersøgelser. De havde bemærket, at monolitiske systemer generelt er mere bæredygtige end arkitekturer baseret på mikroservices. Der er dog sandsynligvis et threshold, hvor denne observation ikke længere gælder, men hvor dette threshold er, har de endnu ikke identificeret.
En anden ting Bent Thomsen understregede var, at det er vigtigt at huske, at energiforbrug ikke er den eneste målestok for bæredygtighed. Man skal også tage hensyn til vedligeholdelsesaspekter, såsom hvor mange menneskelige ressourcer der kræves for at vedligeholde systemet over tid.
Kodeoptimering og Algoritmer
I vores samtale blev det diskuteret, hvordan kodeoptimering og valg af algoritmer kan påvirke energiforbruget. Selvom man teoretisk kan bruge O-notation til at evaluere dette, er det afgørende at forstå, at det kan variere betydeligt afhængigt af sprog og platform. For eksempel viser det sig, at i visse tilfælde er "try-catch" i C# dyrere end "if/else," mens det modsatte gør sig gældende i Java.
ISO-Standard for Bæredygtig Software
Et spændende fremtidsperspektiv, som blev fremlagt under samtalen, var muligheden for at etablere en ISO-standard for bæredygtig software. Hvis det kan lade sig gøre at udvikle software i overensstemmelse med denne standard, vil det indikere, at man har opnået bæredygtighed i sit arbejde. I og med en sådan standard ikke findes endnu, er det vigtigt at integrere bæredygtighed i den DevOps-proces vi pt træner vores studerende i.
Mulig integration i DevOps-cyklussen og KPI Overvågning
For at kunne teste bæredygtigheden af det software de studerende udvikler bør man integrere en form for bæredygtighedstest i DevOps-cyklussen. Med denne tilføjelse skal vi – og de studerende - overvåge energiforbruget nøje, især når der tilføjes eller ændres kode (sideløbende med unit-tests naturligvis). Under produktionsimplementering bør der etableres nøje overvågning af KPI'er, der angiver maksimalt, minimum og gennemsnitligt energiforbrug.
Indtil ISO-standarden er etableret, er dette den bedste måde at vise, at vi aktivt forsøger at skabe de mest bæredygtige løsninger i vores softwareudviklingsprojekter.
Konklusion
Bæredygtig software er en afgørende faktor i den moderne softwareudvikling. Ved at måle energiforbruget nøje, tages hensyn til arkitektoniske valg, kodeoptimering og integrere bæredygtighed i DevOps-processen. Dette kunne være én måde at skabe en mere miljøvenlig og bæredygtig softwareløsning.
-Kenneth Lodahl Nielsen