Sovelluskehityksen vihreällä lehdellä

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ä.

Vihreä koodi (kirjan kansikuva)

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
Hukan vähentäminen: arvioi vaikutus ja työmäärä

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
Vihreä koodi: tärkeintä on ottaa ensiaskel.

Posted

in

,

by

Comments

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *