L’ottimizzazione del software e il suo impatto su costi energetici e sostenibilità
Il tema della sostenibilità ambientale delle soluzioni informatiche è più che mai centrale. Nei giorni in cui si è tenuta la conferenza globale COP28, uno studio ha stimato che la generazione di un’immagine con strumenti di IA generativa consuma quanto la ricarica di un cellulare.
In teoria, la legge di Moore e l’evoluzione delle tecnologie di processo delle CPU giocano a vantaggio dell’efficienza, prevedendo – come corollario – un aumento esponenziale della potenza di calcolo a parità di consumo energetico. È il principale motivo per cui oggi possiamo tenere in tasca uno smartphone con la potenza di calcolo di un server che alcuni anni fa consumava centinaia di wattora.
C’è però una tendenza uguale e contraria, che l’utente di pc percepisce come un “invecchiamento del suo computer, che col passare del tempo diventa più lento”. Chi si occupa di sviluppo software, amministrazione di sistemi o delle operation nei data center sa bene che l’hardware non diminuisce le prestazioni con il passare del tempo: è il software che, con i continui aggiornamenti, diventa sempre più esoso di risorse.
L’hardware è sempre più potente, ma il software diventa sempre più esoso di risorse, in una continua rincorsa
A volte questo avviene perché vengono effettivamente aggiunte funzionalità innovative, ma in molti casi il software diventa meno efficiente anche nello svolgimento delle solite e collaudate mansioni. Questo fenomeno riguarda tutti i livelli dello stack, dal sistema operativo, alle librerie software e agli applicativi, vanificando in poco tempo il vantaggio in termini di efficienza ottenuto dall’hardware.
Abbiamo discusso di questi temi con Luca De Risi, CEO di Mega International, azienda che produce software SaaS per enterprise architecture, business process analysis e governance dei dati e dei rischi, e che presta particolare attenzione all’efficienza dei suoi software.
DigitalWorld: Perché il software diventa apparentemente meno efficiente con il passare del tempo, e come si può porre un argine alla sua voracità energetica?
Luca De Risi: È una forma di effetto rimbalzo, principio ben noto in economia: i guadagni di efficienza tendono a essere contrastati dall’aumento dei consumi. Non è che il software diventi meno efficiente di per sé, ma viene appesantito da funzionalità non prioritarie che lo ‘fanno ingrassare’. Non è solo colpa di chi concepisce le applicazioni, ma anche di chi ha il compito di razionalizzare, che dovrebbe concentrarsi sulle vere esigenze funzionali, accantonare ciò che non è essenziale e seguire l’effettivo utilizzo attraverso le attività di IT Portfolio Management.
DW: Quali sono le aree o le attività del software in cui ci sono le maggiori inefficienze e dove è più conveniente intervenire?
LDR: La più grande inefficienza è rappresentata da tutto ciò che viene mantenuto e gestito, ma che non fornisce un valore aggiunto sostanziale. Come parallelo all’approccio “zero waste” (zero rifiuti), al di là dell’ottimizzazione (riciclo, riutilizzo, riparazione), il motto prioritario rimane: il miglior rifiuto è quello che non produciamo. Allo stesso modo, il maggior risparmio in termini di eco-concezione deriva dal concentrarsi su ciò che è essenziale, mantenendo il modello funzionale più semplice possibile: semplificare l’esperienza dell’utente occupandosi delle sue esigenze primarie, riducendo le funzionalità, i meccanismi e le nozioni superflue.
Serve ovviamente conoscere bene i casi d’uso degli utenti per poter alleggerire il carico senza però degradare il servizio. Questo permette di identificare meglio gli elementi su cui investire, quelli da attivare per opzione e quelli da eliminare.
Da un punto di vista più tecnico, la maggiore inefficienza è rappresentata dallo spreco di codice e di architettura: fare la stessa cosa in più punti, o più volte, o quando non è necessario. Per agire, è necessario adottare un approccio orientato ai servizi, applicando la modularità e le strategie di piattaforma per ottenere economie di scala e un riutilizzo intelligente. Inoltre, un esempio dal punto di vista della Green IT è lo spegnimento automatico delle macchine inattive, poiché è uno spreco far funzionare un servizio quando è inutilizzato.
DW: Quali KPI si possono usare per misurare l’efficienza del software?
LDR: Ogni volta che viene rilasciata una versione o un Service Pack del nostro prodotto Hopex, convalidiamo il consumo di RAM e CPU, il numero di query SQL e il tempo di esecuzione delle query tramite test interni e test di carico. L’utilizzo di questi KPI ci aiuta a verificare i progressi compiuti e l’assenza di regressioni.
Lo sviluppo dell’hardware consente di moltiplicare le operazioni di elaborazione da eseguire in parallelo. Questo aumenta il numero di richieste e quindi il numero di utenti che possono utilizzare la nostra applicazione. Inoltre, lo sviluppo delle macchine permette di effettuare trattamenti lunghi. Ciò è tanto più importante in quanto oggi le sfide legate ai dati sono notevoli. Un numero sempre maggiore di dati da elaborare richiede quindi più potenza e tempo di calcolo.
DW: Sul cloud, l’efficienza del software ha un impatto diretto sulla quantità di risorse di cui fare il provisioning e quindi sul costo del servizio. A cosa bisogna prestare attenzione?
LDR: L’architettura del cloud aiuta a semplificare e ottimizzare. Con la multi-tenancy, più clienti possono essere ospitati su un numero inferiore di server, invece di avere una corrispondenza 1:1 tra software e server. L’automazione consente anche di ottimizzare la gestione dei sistemi, riducendo il numero di amministratori.
Oltre ai parametri di efficienza visti prima, per la razionalizzazione dell’utilizzo del cloud prevede di monitorare anche questi KPI:
- Consumo della componente computing
- Dati scambiati
- Occupazione dello storage
- Percentuale del tempo di accensione della macchina (verificando la possibilità di disattivare gli ambienti di sviluppo e pre-produzione, per esempio)
È necessario però avere personale qualificato per riuscire a sfruttarlo al meglio, anche perché si tratta di operazioni delicate.
DW: Anche l’ottimizzazione ha però un suo costo: serve impiegare tempo di personale competente. Come si trova il giusto compromesso tra sforzo ed efficientamento?
LDR: Dedicare tempo all’applicazione delle best practice consente di risparmiare tempo nelle fasi di garanzia della qualità e di rielaborazione. Ciò richiede formazione. Attraverso l’apprendimento continuo e la valutazione delle competenze, gli sviluppatori e le altre persone coinvolte nei benefici del ciclo di vita del prodotto contribuiscono allo sviluppo sostenibile.
Quando si parla di efficienza del software, l’idea non è quella di perseguire tutte le idee di ottimizzazione. Per quanto riguarda i progetti di responsabilità digitale, è importante stimare i risparmi in anticipo, dare priorità agli investimenti e misurare i risparmi per contribuire alla comprensione e agli sforzi di miglioramento continuo.
Consideriamo il processo di concezione come un tutt’uno, con molteplici considerazioni: esperienza utente, sicurezza, eco-design e impatto dell’integrazione con il resto del software. Un approccio agile facilita il mantenimento di un ritmo equilibrato per puntare a un punto di equilibrio. Il processo prevede continui aggiustamenti e adattamenti.