Categories
environmental sustainability tecnologia

Green Software: Progettazione per l’Always Available

Parlando di Green software, e preparando un corso di un paio di giorni sul tema, è emersa la necessità di chiarire il tema della differenza tra “Always Available” ed “Always On“.

Il concetto di fondo è alcuni prodotti software, soprattutto quelli critici per il modello di business dell’azienda o per gli stakeholder che li devono utilizzare, debbano essere sempre disponibili, questo concetto non va letto però come avere dei server sempre accesi, ma va interpretato sull’avere un’infrastruttura che garantisca la disponibilità del software e l’eventuale scalabilità in caso di richiesta.

Nulla di nuovo l’orizzonte, si tratta alla fine di quello che promette il Cloud fin dalla sua nascita.

Il concetto di architetture “Always Available” nel contesto del Green Software implica molto più e significa ragionare in modo olistico su più aspetti del software stesso.

Ma andiamo in dettaglio.

Scalabilità e Riduzione del Consumo Energetico

Non si tratta solo di mantenere i server attivi, ma di progettare un’infrastruttura che garantisca la disponibilità del software e la scalabilità quando necessario. Questo non solo riduce il consumo energetico ma promuove anche una maggiore sostenibilità. L’implementazione di sistemi di scalabilità per un software “Always Available” rispetto a uno “Always On” comporta una gestione più efficiente delle risorse. Utilizzare meno energia per erogare un servizio non significa solo attivare o disattivare parti di un data center, ma anche eliminare il “bloatware” e semplificare l’architettura. Questo si traduce in una gestione più efficiente e sostenibile delle risorse energetiche.

Pro:

  • Efficienza Energetica: Riduzione del consumo energetico grazie alla gestione dinamica delle risorse.
  • Scalabilità su Richiesta: Capacità di adattarsi a variazioni di carico senza spreco di risorse.

Contro:

  • Complessità Iniziale: La progettazione di un’architettura scalabile richiede un maggiore impegno in fase iniziale.
  • Sviluppo Aggiuntivo: L’implementazione di sistemi scalabili può richiedere uno sforzo di sviluppo aggiuntivo.

No-Bloatware: Semplicità per Sostenibilità

La riduzione delle funzionalità del software, eliminando il “bloatware“, è un passo fondamentale per garantire la sostenibilità del software. Concentrarsi sulle funzionalità essenziali non solo semplifica la gestione e la manutenzione ma riduce anche l’impatto ambientale complessivo.

Pro:

  • Semplicità dell’Architettura: Un software più snello è più facile da gestire e manutenere (e riduce il Debito Tecnico).
  • Minor Impatto Ambientale: Riduzione dell’impatto energetico grazie alla presenza solo delle funzionalità necessarie.

Contro:

  • Possibili Limitazioni: La riduzione delle funzionalità potrebbe limitare alcune opzioni per gli utenti.
  • Costi del Refactoring: La rimozione del “bloatware” potrebbe essere particolarmente costoso in termini econimici e di tempo e distrarre il team da altri obiettivi.

Software Availability vs. Ridondanza

È cruciale distinguere “Software Availability” dal mero concetto di ridondanza.

Non si tratta solo di avere architetture ridondanti, ma di garantire un servizio di base sempre attivo, attivando o disattivando servizi secondo necessità. Tuttavia, questo obiettivo richiede una riflessione approfondita sulla progettazione dell’architettura dei servizi.

Le pratiche di Chaos Monkey e di Software Degradability vanno nella direzione corretta per caratterizzare al meglio questo tema.

Pro:

  • Efficienza del Servizio: Minimo indispensabile attivo per garantire la disponibilità del servizio.
  • Gestione Dinamica: Possibilità di adattarsi alle variazioni del carico senza duplicare risorse inutilmente.

Contro:

  • Comprensione Errata: Confondere “Software Availability” con la ridondanza potrebbe portare a implementazioni eccessivamente complesse.
  • Richiede Pianificazione: Una gestione dinamica richiede una pianificazione accurata e una progettazione attenta.

Efficienza Energetica: Il Ruolo delle Infrastrutture Cloud

Nel perseguire l’obiettivo “Always Available“, la scelta di infrastrutture Cloud che utilizzano energia verde o rinnovabile diventa prioritaria.

Pro:

  • Sostenibilità Energetica: Contribuisce alla riduzione dell’impatto ambientale grazie all’uso di energie rinnovabili.
  • Selezione Consapevole: Scelta mirata di infrastrutture che promuovono la sostenibilità usando energia rinnovabile o facendo migrazione dei processi su datacenter in base alla componente carbonica dell’energia.

Contro:

  • Limitate Opzioni: Alcune regioni potrebbero avere opzioni limitate per infrastrutture a basso impatto ambientale.
  • Possibili Costi Aggiuntivi: Alcune opzioni verdi potrebbero comportare costi leggermente superiori.

Delega delle Prestazioni

Ottimizzare il sistema per recuperare dati in modo efficiente e costruire meccanismi di caching per migliorare le prestazioni senza dover eseguire operazioni costose in tempo reale.

Pro:

  • Efficienza del Recupero Dati: Ottimizzazione per il recupero di dati in modo efficiente senza gravare sui sistemi.
  • Prestazioni Migliorate: Utilizzo di meccanismi di caching per migliorare le prestazioni senza eseguire operazioni costose in tempo reale.

Contro:

  • Possibile Obsolescenza: Meccanismi di caching potrebbero portare a risultati non sempre aggiornati.
  • Complessità di Implementazione: Richiede una pianificazione accurata per implementare efficacemente i meccanismi di caching.

Modalità di Degradazione

Creare applicazioni che possano funzionare anche in condizioni di rete limitate o senza accesso immediato ai dati. Questo contribuisce alla disponibilità continua del servizio.

Pro:

  • Continuità del Servizio: Applicazioni che funzionano anche in assenza di rete o accesso immediato ai dati garantiscono la continuità del servizio.
  • Esperienza Utente Migliorata: Gli utenti possono continuare a utilizzare l’applicazione anche in condizioni non ideali, migliorando l’esperienza complessiva.

Contro:

  • Limitazioni Funzionali: In modalità di degradazione, alcune funzionalità avanzate potrebbero non essere disponibili.
  • Complessità di Sviluppo: Creare un’applicazione che funzioni in diverse condizioni richiede uno sforzo aggiuntivo durante lo sviluppo.

Conclusioni

La progettazione per un software “Always Available” richiede un equilibrio tra efficienza energetica, scalabilità, e la semplificazione dell’architettura. Eliminare il “bloatware” e concentrarsi sulle funzionalità essenziali sono passi cruciali verso la sostenibilità del software, mantenendo al contempo un servizio affidabile e efficiente. La scelta di infrastrutture Cloud sostenibili completa questo approccio, contribuendo a un impatto ambientale complessivamente ridotto.

Do you think you need to introduce green software practices to your company?

Do you want to participate or organize a workshop on the topic? Let’s discuss it!