Ohjelmistojen tehokkuudesta puhutaan aina välillä ja viime aikoina asiaa on käsitelty vihreämmällä otteella Green ICT:n ja Vihreä koodi -teemojen kautta. Etenkin Exoven Janne Kalliola on edistänyt vihreän koodin ajatusmaailmaa ja kirjoittanut aiheesta kirjan: Vihreä koodi. Helmikuun alussa (8.2.2023) Koodia Suomesta järjesti vihreästä koodista webinaarin ja tässä on muutamia muistiinpanojani siitä.
Muistiinpanot Vihreä koodi -webinaarista
ICT-ala ja kasvihuonepäästöt
- ICT-ala vastaa 4-10% maailman energiankulutuksesta ja 2.1-3.9% kasvihuonepäästöistä (lentoteollisuuden kokoinen)
- 3% => 1 580 000 000 tonnia / vuosi
- päästöt tulevat monesta asiasta, käyttäjien laitteista, siirtoverkoista, datakeskuksista
- sekä niiden rakentamisesta että käytöstä
Rauta
- elektroninen jäte on maailman nopeiten kasvata jätemäärä, vain 17% jätteestä käsitellään asiallisesti
- kierrätys on energiaintensiivista
Ohjelmistot
- Tehokkuus ja ympäristönäkökulmat ovat toissijaisia asioita kehityksessä
- Lisää rautaa rajalle (eri budjetista)
- Olisi tärkeää ulottaa vastuu sovelluskehitykseen
Energiantuotanto tuottaa eri määrän hiilijalanjälkeä riippuen maasta
- Suomi 54gCO2/kWh, Saksa 349gCO2/kWh
Laitteet ja päästöt
- Valmistus vie suurimman osan päästöistä
- Käyttö 15-18% koko elinkaaresta -> Älä osta turhaan uusia laitteita
Päästöjen mittaaminen
- Monimutkaista mitata eri osa-alueiden takia
- Joten, mitä tehokkaampi ohjelmointikieli ja mitä vähemmän aikaa se on ajossa, sen vähemmän käyttää sähköä, mitä vähemmän siirretään dataa, sen vähemmän tuottaa päästöjä -> Hukan ja päästöjen vähentäminen (Lean)
Hukan tyyppejä
- ylimääräiset sovellukset
- sovellusta käytetään vääriin tehtäviin
- käyttäjävirheet: ei saada aikaan mitä halutaan
- väärä arkkitehtuuri: ei täytä tarkoitusta tai vaatimuksia
- väärä datamalli: datamalli ei vastaa käyttöä
- ylimääräinen data: tyypillisesti vanhan datan säilyttäminen, tarpeettomat raportit ja siihen datan keruu
- ei optimoitu data: ei pakattu
- siirretään dataa varmuuden vuoksi: ei siirretä vain deltaa
- algoritmien tehottomuus: vanhalle arkkitehtuurille tehty
- käyttäjän huijaus: dark patternit
- liikaa koodia: ei poisteta vanhaa koodia (ihmiset käyttää vaan 5% kirjastojen koodista)
- väärä ohjelmointikieli: ei käytetty tehtävään optimointia kieltä
- initialisoinnin hukka: run-once ohjelmistokielet kuten PHP
- liikaa tavaraa: silmäkarkki tai videot, jotka eivät tuo arvoa käyttäjälle, esim. turha animaatio että algoritmi tekee jotain
Hukan poistaminen
- vaatii analysointia, mitä poistetaan
- iso vaikutus, pieni työmäärä => tee heti
- iso työmäärä, pieni vaikutus => mieti asiaa
- iso vaikutus, käyttökokemus heikkenee => mieti asiaa
Minimaalinen ratkaisu
- tee pieni sovellus, joka keskittyy päätoiminnallisuuksiin ja tekee ne hyvin
Käytännön ratkaisuja
- vähennetään datan määrää (jota siirretään)
- valitaan oikeat kuvamuodot (webp)
- välimuistetaan kaikki mikä järkevää
- pakataan kaikki
- minimoidaan virheiden mahdollisuudet
- vähennetään videoiden määrää, korvataan ne animaatioilla tai kuvilla
- kasvatetaan datan lähettämisen aikaväliä
- poistetaan fonteista turhat leikkaukset ja glyphit
- vähennetään koodin määrää
- poistetaan kuollut koodi
- mietitään uusien kirjastojen käyttöönottoa, tarkistetaan niiden koko, älä tee itse jos voit käyttää kirjastoa
- parsi kirjastosta se osa, jota tarviit (jos lisenssi sallii)
- paranna koodin tehokkuutta
- etsi ohjelmiston hot spotit ja optimoi ne, mutta älä muuta
- älä optimoi ennenaikaisesti, keskity isoon kuvaan
- käytä oikeita algoritmeja tehtävään
- harkitse kriittisten osien kirjoittamista eri kielellä (tehokkaammalla), jos mahdollista
Energiansäästö on matka
- tärkeintä on ottaa ensi askel