Green Coding

Green coding e sostenibilità: perché sono importanti per gli ISV

Perché parlare oggi di green coding? Il software di per sé non consuma energia, ma la fa consumare al dispositivo su cui è installato. Così, meno il coding è pensato in un’ottica green maggiore è il contributo del software alla produzione di CO2

Pubblicato il 05 Nov 2021

green coding

Se ci venisse chiesto quanto è green il coding di un software probabilmente la risposta sarebbe “molto”. Niente di più sbagliato, o quantomeno di molto avventato. Infatti, anche se solitamente non ci si pensa, il modo in cui il software è stato progettato, sviluppato e distribuito può avere un impatto importante sull’ambiente. Questo comporta che anche il software abbia un ruolo attivo nella rapida crescita dell’impronta di carbonio. E gli ISV dovrebbero tenere sempre in grande considerazione questo aspetto.

La rete Bitcoin consuma la stessa energia della Svizzera

Non solo il software provoca consumo di energia, se si osserva con una certa attenzione si scopre che il comportamento delle sempre più diffuse tecnologie digitali ha iniziato a peggiorare la situazione di molti dei problemi ambientali che le stesse tecnologie dovrebbero risolvere. Per esempio, la blockchain è alla base di alcune delle più avanzate soluzioni verdi disponibili, come le microgrid che permettono ai residenti di una determinata zona di scambiare energia ecologica. La medesima tecnologia software è però anche alla base dello sviluppo delle criptovalute. E nel 2019 i ricercatori dell’Università di Cambridge hanno stimato che l’energia necessaria per mantenere la rete Bitcoin ha superato quella usata nello stesso periodo dall’intera Svizzera.

Green software, costa un po’ di più ma vale di più

A onor del vero, il software di per sé non consuma energia. La causa dei consumi sta nel modo in cui viene sviluppato e in cui viene utilizzato. D’altra parte, lo stesso sviluppo del software può richiedere molta energia, soprattutto quando è richiesto un maggiore controllo sul risultato finale. Però c’è una contropartita: le ricompense supererebbero le sfide. Infatti, il controllo precoce e maggiore che la costruzione di un software green richiede si traduce in un prodotto di qualità superiore: più snello, più pulito e più adatto al suo scopo. Queste qualità compensano anche i costi iniziali aggiuntivi. Il green coding aiuterà le grandi aziende a raggiungere i loro obiettivi ESG, una misura di performance sempre più importante per gli stakeholder.

Un compromesso tra obiettivi aziendali e ambientali

Coscienti del fatto che anche il software può esser responsabile di effetti negativi sull’ambiente, molto probabilmente i team dello sviluppo IT cercheranno di capire quale dovrebbe essere il giusto livello di tolleranza per evitare che tali effetti ambientali siano nocivi.

Quasi sempre si possono trovare dei compromessi tra obiettivi aziendali e ambientali e gli ingegneri del software devono essere in grado di determinare dove si trova la linea di demarcazione. Altrettanto importante è che la strategia usata per il green coding sia flessibile e consenta agli stessi ingegneri di improvvisare e imparare attraverso tentativi e anche errori.

Tale strategia dovrebbe anche suggerire i parametri necessari per misurare i progressi. Per gli aggiornamenti software, non dovrebbe essere difficile impostarli. Per esempio, nel caso di un upgrade si potrebbe calcolare quanta più energia consuma una nuova versione rispetto a quella precedente. Per un nuovo software, invece, potrebbe essere più difficile definire parametri utili. Inizialmente, si potrebbero considerare l’efficienza nell’uso della memoria, la quantità di dati impiegati e le operazioni in virgola mobile (matematiche) eseguite al secondo.

Green coding: Perfezionare il ciclo di sviluppo del software

Il punto di partenza per il miglioramento del ciclo di sviluppo di un software potrebbe essere porsi la domanda: qual è l’impronta ambientale più piccola che si potrebbe generare creando questa applicazione? La risposta potrebbe essere lo spunto per guidare le prime fasi del ciclo di sviluppo. Non deve però essere un dato monolitico. Può infatti cambiare man mano che si acquisisce conoscenza, tuttavia può essere di grande aiuto per definire uno studio di fattibilità e anche a prendere una decisione in qualsiasi valutazione si debba fare di fronte a compromessi tra approcci alternativi.

Quindi può essere utile per avere suggerimenti, per esempio, su algoritmi, linguaggi di programmazione, API e librerie a cui attingere per ridurre al minimo le emissioni di carbonio.

Nella fase di implementazione, si può monitorare il consumo energetico in tempo reale attraverso tecniche come l’analisi dinamica del codice. I dati raccolti saranno fondamentali per comprendere i divari tra le scelte progettuali e i profili energetici effettivi. Alcune aziende offrono strumenti per aiutare a sviluppare sistemi sempre più efficienti e attenti ai consumi. Per esempio, Intel propone agli sviluppatori Software Development Assistant che consente di eseguire misurazioni energetiche del sistema mentre esegue carichi di lavoro specifici all’interno di un’applicazione per determinarne l’efficienza. Tuttavia, questo tipo di strumenti scarseggia.

Virtualizzazione alla base del green computing (e del contenimento costi)

Le applicazioni moderne sono quasi sempre distribuite sul cloud. Ma la crescita esponenziale dei servizi basati su cloud ha portato alla rapida espansione dei data center ad alta intensità energetica. I data center consumano oggi circa il 2% dell’elettricità globale; entro il 2030, potrebbero consumare fino all’8%.

Così, nella green IT, la maggior parte degli sforzi ecologici va nella direzione di rendere i data center “più verdi”. L’adozione di architetture server più rispettose dell’ambiente sarà cruciale per il risparmio energetico. L’impiego per esempio della virtualizzazione, che consente la creazione di più ambienti simulati (o risorse dedicate) a partire da un unico sistema hardware fisico, potrebbe aiutare le aziende a scalare i server on demand, risparmiando energia nei data center aziendali.

Un contributo importante al risparmio nei consumi energetici potrebbe venire anche dalla containerizzazione, che è essenzialmente un’evoluzione dei sistemi virtuali. Infatti, il serverless computing separa le applicazioni a livello hardware, mentre la containerizzazione le separa a livello di sistema operativo. Le architetture applicative più recenti, come appunto serverless computing o Function as a service (FaaS), consentono un maggiore controllo sulla capacità computazionale e, per estensione, sul consumo di energia. Il serverless computing, per esempio, condivide in modo efficiente le risorse dell’infrastruttura eseguendo funzioni solo on demand. E poiché l’uso delle risorse si paga in base al tempo di esecuzione, i programmatori sono costretti a migliorare l’efficienza dei loro codici.

Green Coding: spegnere il software per risparmiare energia

I principi di base del risparmio energetico applicati in casa possono (e dovrebbero) essere seguiti anche alla progettazione del software. Nello stesso modo in cui si dovrebbero spegnere le luci quando nessuno è in una stanza, si dovrebbe spegnere il software quando nessuno lo sta usando. In linea con questa analogia, noi spegniamo semplicemente le luci ma non stacchiamo le spine o disattiviamo la corrente per l’intera casa. Di conseguenza, le applicazioni dovrebbero essere progettate sulla base di principi modulari in modo che possano essere spente separatamente.

Questo approccio è centrale per i microservizi e le architetture serverless. Non non solo nel caso di spegnimenti totali, ma anche per quanto riguarda la scalabilità o l’avvio e l’arresto di moduli di replica in tutto il mondo a causa delle fluttuazioni della domanda. Le decisioni basate su questo approccio si rifletteranno nell’implementazione finale e nel deployment.

Tutto dipende da chi userà il software

Quando si integrano i criteri del green coding in un progetto architetturale, si deve sempre considerare il ciclo di vita del software: la sua creazione, l’uso, la manutenzione e lo smaltimento. Per vedere il quadro generale, dobbiamo considerare chi sarà l’utilizzatore. La prima considerazione da fare è se sarà usato da utenti umani o da altri sistemi. Inoltre, quanti utenti ci aspettiamo: decine o forse migliaia? Queste linee di indagine devono continuare per assicurare che le frequenze d’uso previste e la durata delle interazioni medie con il software siano ben definite.

Tale analisi dovrebbe fornire una chiara idea di quali elementi all’interno dell’architettura richiederanno più energia. Per esempio, con un software di back-office ospitato su un server condiviso, non è insolito che ogni sviluppo generi un’impronta energetica maggiore se il software è usato solo per pochi minuti a settimana (se non è addirittura del tutto inutilizzato). Questo contrasta, per esempio, con un’applicazione usata per generare migliaia di immagini ogni ora. Risparmiare anche solo un decimo di secondo per creare una di tali immagini potrebbe far risparmiare un volume significativo di energia nell’arco dell’anno.

Green Software Engineering, la filosofia del green coding

Nell’ambito del green coding, si parla sempre più spesso di Green Software Engineering, una disciplina con principi, filosofie e competenze per definire, sviluppare ed eseguire applicazioni software sostenibili. Le applicazioni ecologiche sono normalmente più economiche da eseguire, più performanti, più resistenti e più ottimizzate, ma questa è solo una gradita integrazione. La cosa fondamentale è che in questo modo lo sviluppo di applicazioni avrà un impatto positivo sul pianeta.

Secondo la Green Software Engineering ci sono due tipi di considerazioni da fare riguardo il green coding: strutturali e comportamentali. Le considerazioni strutturali includono le misure energetiche relative ai blocchi di codice, mentre le considerazioni comportamentali riguardano il consumo energetico correlato a scenari utente, come l’invio di un’e-mail o il controllo del feed di Twitter.

Gli esempi specifici di green coding in uso già oggi sono pochi e lontani tra loro, ma diversi esempi di codice scritto per elevare l’esperienza dell’utente sono sinonimo decarbonizzazione. Questo perché le applicazioni scritte per dispositivi specifici o intuitive per gli utenti hanno un fabbisogno energetico intrinsecamente inferiore.

Vale la pena ricordare che il green coding non è in contrasto con le attuali pratiche di ingegneria del software, più che altro è una nuova caratteristica che si integra a tali pratiche.

La codifica ha il potenziale per fare di più semplicemente riducendo le emissioni. In particolare, l’approccio green coding per lo sviluppo del software può essere riassunto come segue:

  • Migliorare il software rendendolo più efficiente dal punto di vista energetico rende potenzialmente anche più facile e veloce l’utilizzo.
  • Migliorare l’esperienza dell’utente e permettere al software di essere offerto a un pubblico ancora più ampio
  • I costi operativi del software diventano più efficienti, con conseguenti importanti risparmi sui costi per le aziende.

La riduzione del CO2 in mano agli ISV

I computer sono semplicemente delle macchine. L’efficienza energetica dipende dal software che tali macchine eseguono. Tutto il codice crea un’impronta di carbonio, quindi è compito di chi sviluppa il software che questa impronta sia più piccola possibile.

Se pensiamo a questo problema in termini di prestazioni su scala globale – con i fornitori di cloud che gestiscono continuamente i server dell’infrastruttura, lavorando insieme ad altri provider e aziende – c’è un notevole potenziale di risparmio energetico e quindi anche di costi.

Tuttavia, va sottolineato che questo non vale solo per le applicazioni convenzionali come i sistemi operativi, la tecnologia d’ufficio o le applicazioni server. Scalato fino a centinaia, migliaia o addirittura milioni di dispositivi (desktop, smartphone, tablet e così via), ogni singola parte di codice può fornire un importante aiuto alla riduzione del consumo energetico, contribuendo così a ridurre le emissioni complessive di CO2.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!


Argomenti


Canali

Articoli correlati