Jul 24, 2022

Green Computing: l’impegno di Fiberdroid per la Green Economy

Green Computing: l’impegno di Fiberdroid per la Green Economy

Oggi vi parliamo di Green Coding, un tema molto caro a noi di Fiberdroid, che amiamo l'ambiente, la natura e gli animali.

Nell’estate 2022 ci siamo resi conto che il clima è importante. L’ondata di calore ha raggiunto ampiezze e temperature mai viste prima. I rilievi della NASA disegnano un quadro desolante: il numero di Paesi che non ha sperimentato temperature anomale può contarsi sulle dita di una mano in tutto l’emisfero orientale. La lotta ai cambiamenti climatici è un fatto serio, che deve essere affrontato senza pregiudizi e che deve trovare applicazione in ogni campo. Il Green Coding è il contributo che può fornire l’informatica contro il riscaldamento globale. E noi di Fiberdroid facciamo la nostra parte.

Noi di Fiberdroid lo sappiamo bene: abbiamo sviluppato noi stessi i software che utilizziamo, dal CMS con cui vi raccontiamo ogni settimana le nostre storie, alla nostra area clienti.

Siamo convinti che ognuno possa fare la sua parte, e il contributo di tutti può fare la differenza.

Cos’è il Green Coding

Con i termini Green Coding si intendono i principi e le pratiche di codifica dei software che abbiano il risparmio energetico tra le sue priorità. Secondo questo concetto, la programmazione del codice è eseguita allo scopo di produrre algoritmi che minimizzino il consumo delle risorse, quella energetica in primo luogo. L’idea di fondo è che un codice che sprechi meno risorse per eseguire i comandi assegnati contribuisca a rendere meno esosa la richiesta di energia dei macchinari che ne fanno uso: se ragioniamo su scala globale, per il solo funzionamento degli oltre 7 milioni di data center in tutto il mondo si consuma circa l’1% di tutta l’energia elettrica prodotta.

Questo non è solo un problema di risparmio economico: ancora nel 2021 quasi il 62% dell’elettricità è stata prodotta da gas, petrolio o carbone: fonti che contribuiscono all’immissione di CO2 in atmosfera. Il Green Coding è il contributo che la programmazione può dare alla lotta ai cambiamenti climatici: ridurre la domanda di energia elettrica può moltiplicare i vantaggi di una transizione verso le fonti rinnovabili. La sfida è ancora più pressante se si considera che il numero dei datacenter nel mondo è destinato a una progressiva crescita.

Una questione di principi

Immaginate di non avere il vostro cellulare. Di non avere il pc. Il vostro televisore, l’auto… Immaginate di non avere a disposizione nessuno strumento elettronico. La vostra vita sarebbe diversa, vero? Tutto questo, e molto altro lo facciamo con l’informatica. Aspettate, il suo impatto è ancora più ampio: ogni prodotto che vi circonda, ogni cosa che potete vedere dalla vostra finestra, compresa la finestra stessa, in un modo o nell’altro sono stati fatti anche grazie ai computer e a qualche software che questo ha computato. Senza l’informatica, senza i programmatori, torneremmo indietro di mezzo secolo almeno.

Tutte quelle persone, precise e rigorose, che scrivono righe al computer che molti altri non capiscono, sono degli eroi moderni. Ci hanno regalato il fuoco della tecnologia, come Prometeo. E spesso ci aiutano, con infinita pazienza, quando non sappiamo come accenderlo. Anche se ci sono voluti secoli per creare macchine che ci aiutassero a pensare, l’idea era chiara da molto tempo: la prima programmatrice della Storia, Ada Lovelace, figlia di Lord Byron, aveva scritto il primo algoritmo per risolvere avanzati problemi di matematica nel 1840. Oggi ci interroghiamo se l’Intelligenza Artificiale che abbiamo creato sia già cosciente. In quasi due secoli ne abbiamo fatta di strada. Domani, anche se non sappiamo bene quando, la Singolarità potrebbe cambiare la vita come la conosciamo: ancora fatichiamo a immaginarlo, ma più o meno dovrebbe essere qualcosa di fantascientifico: robot senzienti, computer in grado di imparare meglio degli esseri umani e di aiutarci a risolvere problemi che ancora fatichiamo a immaginare.

Per arrivare a questo futuro, dobbiamo gestire al meglio le risorse naturali che abbiamo. Come farlo è anche una questione di principi: principi informatici, come quelli definiti da Asim Hussain Green Cloud Advocacy Lead di Microsoft, rivolti a chiunque crea, distribuisce o gestisce applicazioni. Un Green Software Engineer dovrebbe prestare attenzione a questi elementi nel suo lavoro:

  • Il Carbonio: creando applicazioni efficienti dal punto di vista delle emissioni di carbonio.
  • L’Elettricità: creando applicazioni efficienti dal punto di vista energetico.
  • L’Intensità di carbonio: consumando elettricità con la più bassa intensità di carbonio.
  • Il Carbonio incarnato: creando applicazioni efficienti dal punto di vista hardware.
  • La Proporzionalità energetica: massimizzando l'efficienza energetica dell'hardware.
  • La Rete: riducendo la quantità di dati e la distanza che deve percorrere attraverso la rete.
  • La Modellazione della domanda: creando applicazioni attente al carbonio.
  • La Misurazione e ottimizzazione: Concentrandosi sulle ottimizzazioni passo dopo passo che aumentano l'efficienza complessiva del carbonio.

Noi di Fiberdroid ci occupiamo di telecomunicazioni: sappiamo bene cosa vuol dire utilizzare dei codici che non sono ottimizzati per il risparmio energetico. Sin dagli esordi, abbiamo deciso di affrontare questo problema alla base, evitando di utilizzare i software spaghetti. Sarebbe stato molto più semplice: usare soluzioni come WordPress, ci avrebbe fatto risparmiare molto tempo. Ma noi siamo per le cose fatte bene. E poi ricontrollate periodicamente. Un buon codice è un progetto, che deve essere pianificato bene in partenza, e poi verificato ogni volta che lo si modifica.

Programmi come WordPress invece, hanno codici troppo contorti, che preferiscono istruzioni GOTO rispetto ai costrutti di programmazione. Questi software spaghetti finiscono per avere vita breve. Può sembrare che siano veloci da introdurre in azienda ma alla fine, il gioco non vale la candela: affidabilità, consumi e scalabilità non mantengono le promesse. I consumi possono arrivare a superare il kilowatt anche per semplici siti. Se vogliamo veramente andare verso un’economia green, questa non è la soluzione. L’Intero internet emette 1.6 miliardi di tonnellate di gas serra. WordPress è usato sul 37% dei siti e su oltre il 60% dei CMS. Potremmo risparmiare quantità impressionanti di emissioni se usassimo codici migliori. È per questo che non abbiamo fatto ricorso a soluzioni come WordPress. Tutto il nostro software è costruito in house. Anche il nostro CMS. Le soluzioni migliori sono quelle progettate bene.

Come si fa il Green Coding

Perché parlare di Green coding? Perché un codice, per quanto possa essere ritenuto rivoluzionario, se è progettato senza tener conto del suo impatto ambientale può contribuire ad aggravare la crisi climatica. Un esempio su tutti: il Bitcoin, che per permettere ai miners di contribuire alla tenuta dei registri distribuiti li ricompensa con le criptovalute ottenute tramite la Proof of Work. Con questa soluzione, in sé elegante in quanto permette di far convergere le esigenze dei miners con la prosecuzione della blockchain, anello dopo anello, Satoshi Nakamoto ha posto le basi per un codice impressionantemente energivoro. Secondo i ricercatori dell’Università di Cambridge, nel 2019 la blockchain di Bitcoin ha consumato la stessa energia della Svizzera.

Non è solo un problema della Blockchain. Anche l’Intelligenza Artificiale ha le sue colpe. Addestrare un singolo modello di rete neurale oggi può emettere grandi quantità di gas serra. E la potenza di calcolo per eseguire modelli di addestramento di intelligenza artificiale di grandi dimensioni è raddoppiata ogni 4 mesi circa.

La Performance Optimization risponde a questo problema, indicando come modificare un software per farlo funzionare in maniera più efficiente e migliorare la sua velocità di esecuzione. Per attuare questa ottimizzazione è necessario monitorare le prestazioni nelle varie condizioni e analizzare le possibili risposte alle migliorie. La difficoltà risiede nel compromesso da attuare sulle prestazioni da migliorare. Vi sono diversi livelli di ottimizzazione possibili. A livello di progettazione, ottimizzare la performance significa sfruttare al meglio le risorse disponibili, una volta determinati gli obiettivi e il carico previsto. A livello di Algoritmi e strutture dati, è opportuno assicurarsi che gli algoritmi non abbiano una complessità quadratica O(n2) o superiore: in questi casi, al crescere delle dimensioni dell’input, il tempo di calcolo crescerebbe in maniera più che proporzionale, con un dispendio eccessivo di risorse. Nell’’ottimizzazione rientrano le considerazioni sul codice sorgente e la possibilità di disabilitare funzionalità del software che non siano richieste durante la compilazione. È un po’ come spegnere la luce quando si esce da una stanza. Se lo fa una sola persona, cambia poco. Se lo fa una città intera, la differenza si inizia a sentire.

In linea di massima, la Performance Optimization considera l’impatto del miglioramento dell’efficienza su:

  • Memoria
  • Storage
  • CPU
  • Trasferimento dati

Ciascuno di questi influenza il consumo energetico di un software attraverso il funzionamento della macchina che lo esegue. Perché un’applicazione sia ottimizzata è necessario considerare l’impatto del codice tanto sul lato server, quanto su quello client. Non è sufficiente che l’interfaccia utente o un browser web abbiano tempi di caricamento o download di risorse soddisfacenti; è anche necessario che il tempo di esecuzione sul server sia preso in considerazione.

Come si mette a punto una strategia per applicare i principi del Green Coding? Secondo Sanjay Podder, Adamo fardello, Shalabh Kumar Singh, e Regina Maruca, questo è un processo in tre parti. La strategia dovrebbe definire alcuni limiti di emissione; dovrebbe quindi considerare tutto il ciclo di vita dello sviluppo del software e rendere ecologico anche il cloud.

In primo luogo, dovrebbero essere stabiliti i limiti di emissione accettabili per il software che si sta sviluppando. In azienda, questo può anche portare alla negoziazione tra i dipartimenti che emettono più CO2, per stabilire come ripartire il carico di emissioni massimo.

In secondo luogo, dovrebbe essere rivisto e ottimizzato l’intero ciclo di vita del software. Nelle prime fasi di sviluppo, in cui bisognerebbe partire dal minor livello possibile di emissioni che il software genererebbe. Nelle ulteriori fasi di sviluppo sarà necessaria una valutazione costante dell’incremento delle emissioni e delle possibili alternative. Nella fase di implementazione, è importante monitorare il consumo energetico in tempo reale. In sostanza, lo sviluppo degli aggiornamenti dovrebbe sempre essere guidato da questo criterio: l’aumento delle prestazioni giustifica l’aumento del consumo energetico? La risposta non sempre potrebbe essere affermativa. Infine, la strategia dovrebbe definire quali metriche utilizzare per monitorare i progressi. Proprio per valutare l’opportunità di un incremento nei consumi energetici è necessario avere misurazioni oggettive e rappresentative del funzionamento, tanto del software quanto dell’hardware. Ad esempio, un nuovo software potrebbe essere misurato in base all’efficienza nell’uso della memoria, nella quantità di dati utilizzati o nelle operazioni a virgola mobile. Per gli aggiornamenti, l’obiettivo dovrebbe essere confrontare i loro consumi con le precedenti versioni del software.

In terzo luogo, il green coding dovrebbe prestare particolare attenzione al cloud. Con il successo di questo tipo di servizi, i data center consumano quasi il 2% della corrente globale, con previsioni di crescita fino all’8% entro fine decennio. Questo livello di consumo non si risolve con la sola ottimizzazione hardware: disporre di macchinari efficienti e aggiornati è solo il primo passo. Il lato software può fare molto. Ad esempio, riducendo la ridondanza dei dati o la loro dimensione in blocchi più piccoli. È possibili ottimizzare i consumi di un server grazie alla virtualizzazione e alla containerizzazione: con la prima si ottengono ambienti simulati da un unico hardware fisico; con la seconda si raccoglie il sistema operativo e tutti componenti necessari per condividere il kernel del sistema operativo. In questo modo non è più necessario avere un sistema operativo distinto per ogni container ed è possibile eseguire il software su ogni macchina.

Noi in Fiberdroid seguiamo da sempre questa filosofia in due ambiti. Il nostro segreto è una buona pianificazione dei nostri codici. Prima di iniziare a programmare, per noi è importante decidere non solo cosa vogliamo ottenere dal codice, ma anche come potrà evolvere nel tempo. Una buona progettazione deve essere lungimirante. Tutte le buone imprese cercano di pensare alla crescita, in ogni suo aspetto: dall’aumento delle risorse, a quello dei clienti a quello del personale. La programmazione non fa eccezione. La vera crescita è quella lungimirante.

Ma una buona pianificazione non basta. Nella realtà, ci sono tanti fattori che possono evolversi diversamente da come si è programmato. È importante essere flessibili e verificare sempre quali sono i percorsi migliori. Noi in Fiberdroid applichiamo questo principio anche all’informatica. Il refactoring è per noi una fase imprescindibile dello sviluppo dei nostri software. Le nostre release sono pensate per migliorare i nostri codici, per quanto riguarda la velocità o i volumi dei clienti serviti. Lavoriamo costantemente per rilasciare nuove release che ci portino verso un percorso di miglioramento continuo. Ma questo non basta. È importante verificare che queste release valgano i consumi di memoria, storage, cpu e trasferimento dati. Facciamo queste verifiche con le periodiche attività di refactoring. Per fare questo, riprendiamo tutto il codice sorgente del nostro sito per analizzarlo. Per noi di Fiberdroid è un investimento continuo, che può richiedere anche settimane di lavoro, ma che ci permette di avere costantemente un sito veloce ed energeticamente efficiente.

Perché è importante il Green Coding

Programmare con l’approccio Green Coding non è solo un’attività fine a sé stessa. Il risparmio energetico è solo uno dei vantaggi possibili. Creare software e app con questa filosofia permette di ottenere un prodotto più sintetico e adatto per il suo scopo. Gli eventuali maggiori tempi di sviluppo sarebbero più che compensati da un programma che dovrebbe essere utilizzato ripetutamente. Produrre meno C02 permetterebbe alle aziende di raggiungere meglio i propri obiettivi di sostenibilità ambientali, senza dover limitare il controllo delle emissioni agli altri fattori: in sistema informatico più green, permetterebbe minori tagli al parco macchine, ad esempio.

Venti anni fa, il consumo energetico dei programmi era molto inferiore a quelli attuali: i codici erano limitati in lunghezza e dimensioni. Col tempo, la lunghezza dei codici ha avuto la meglio sulla loro qualità ed è aumentato il numero di framework e librerie condivise; la trasformazione digitale ha avuto una considerevole accelerazione. Un futuro verso una società carbon neutral richiede che anche i suoi softwares lo diventino, o ci si avvicinino il più possibile. La strada è quella della riduzione delle dimensioni dei files di testo, delle immagini e dei video. A beneficarne non sarebbero solo i consumi energetici ma la velocità di condivisione online, con migliori esperienze di navigazione. Noi di Fiberdroid, che di navigazione ce ne intendiamo, siamo qui per fare la nostra parte. Il nostro sito e il nostro applicativo sono pensati per ottimizzare le prestazioni e ridurre al massimo i consumi energetici e la produzione di CO2. Grazie al nostro impegno costante, i nostri clienti possono contribuire a fare di internet un’attività ecologicamente sostenibile. Questo è il nostro impegno per la Green Economy: insieme ce la possiamo fare.

Altri articoli
creati dal nostro team

Logo Fiberdroid

Iscriviti per ricevere
i nuovi articoli al volo

Qualche argomento da suggerire? Siamo a tutt'orecchi!

Iscrivendoti, sei soggetto ad accettare la nostra Informativa sulla privacy.
Puoi annullare l'iscrizione in qualsiasi momento.