Applicazioni Cloud Native Green: Ottimizzare Kubernetes per le energie rinnovabili

6 minutes Leggi
11 Dicembre 2024

Questo articolo è stato pubblicato in origine su The New Stack.

 

In un anno, l’energia consumata da una casella di posta elettronica media, con circa 10.000 e-mail, equivale a guidare un’auto per 212 metri. Moltiplicando questo consumo energetico per l’uso globale delle e-mail, si generano emissioni di CO₂ pari a quelle prodotte da 7 milioni di automobili in circolazione

Il settore delle tecnologie dell’informazione e della comunicazione genera circa l’1,4% delle emissioni globali, pari a 1,6 miliardi di tonnellate di emissioni di gas serra. Questo significa che ogni utente di Internet è responsabile di circa 400 kg di CO₂ all’anno.

La carbon footprint digitale globale potrebbe ridursi fino all’80% se l’energia passasse dai combustibili fossili alle fonti rinnovabili. Colossi tecnologici come Google e Meta stanno facendo passi importanti in questa direzione, investendo risorse significative per azzerare le emissioni di carbonio, contribuendo a una collaborazione industriale più ampia e sostenibile.

Tuttavia, la responsabilità ambientale nell’uso delle risorse non può ricadere solo sulle grandi aziende tecnologiche: è una responsabilità condivisa. Ogni azienda, indipendentemente dalle dimensioni, dovrebbe essere consapevole della propria impronta di carbonio e impegnarsi a ridurla, adottando le misure necessarie per migliorare la sostenibilità ambientale.

Ecco alcune strategie per aumentare la sostenibilità ambientale delle applicazioni cloud native implementando ottimizzazioni nei runtime Kubernetes. Analizzeremo i metodi per indirizzare l’uso delle risorse verso fonti di energia rinnovabile e minimizzare i cosiddetti “zombie del cloud”.

Un primo passo verso un’esperienza Cloud Native più ecologica

Uno degli aspetti più impegnativi del green software è capire da dove cominciare. Prima di affrontare questioni più complesse, un buon punto di partenza è riconoscere i “zombie” nascosti nella nostra infrastruttura. Con questo termine ci riferiamo a carichi di lavoro inutilizzati che non apportano alcun valore, causando uno spreco di risorse ambientali ed economiche.

I carichi di lavoro utilizzati per scopi di test e sviluppo, attivi tipicamente solo durante l’orario di lavoro, ne sono un esempio comune. Considerando che il rapporto medio tra ore lavorative e non lavorative in una settimana è di circa 1 a 4 a favore delle ore non lavorative, è evidente che occorre intervenire per gestirli in modo efficiente.

Una soluzione efficace è kube-green, uno strumento open source sviluppato da Davide Bianchi, senior technical leader di Mia-Platform. Kube-green gestisce il ridimensionamento dei cluster Kubernetes per ottimizzare il consumo energetico dell’infrastruttura IT, riducendo in media le emissioni di CO2 di circa il 30%. Questo strumento agisce come un controller Kubernetes che definisce una Custom Resource Definition (CRD) denominata SleepInfo, che consente di mettere in pausa e riavviare i pod all’interno di uno specifico namespace. Con kube-green è possibile ridurre a zero il numero di distribuzioni e limitare l’esecuzione di cron job solo durante l’orario di lavoro.

Kube-green è entrato a fare parte della sezione di scheduling e orchestrazione della Cloud Native Computing Foundation (CNCF) nel 2022. Il numero di utenti che adottano kube-green è in continuo aumento e molti riportano benefici significativi, non solo in termini di riduzione dell’impatto ambientale ma anche nella gestione dei costi del cloud, con un risparmio medio di circa il 30%.

Carbon Intensity

Essere consapevoli della intensità di carbonio, o carbon intensity, ovvero la quantità di anidride carbonica emessa per ogni chilowattora di energia consumata nelle zone (region) in cui il cloud service provider mette a disposizione le risorse, consente di ottimizzare l’esecuzione dei carichi di lavoro, privilegiando l’energia proveniente da fonti rinnovabili. Il principio è semplice: quando la produzione energetica è maggiormente orientata verso le fonti rinnovabili, si aumenta l’esecuzione dei carichi di lavoro; al contrario, quando non è così, si riducono.

Per bilanciare i carichi di lavoro con l’uso delle fonti energetiche del cloud service provider, ci sono due possibili strategie da adottare: lo slittamento della domanda, o temporal shifting, che sposta i carichi di lavoro principali quando l’uso di energia rinnovabile è più basso nella region del cluster in uso, e lo slittamento spaziale, o spatial shifting, che prevede meccanismi di federazione multi-region per spostare i carichi di lavoro in luoghi fisici in cui l’intensità di carbonio della rete è più bassa.

La scelta tra i due approcci dipende dal tipo di carico di lavoro considerato. Per elaborazioni estremamente sensibili al tempo (time-sensitive), come i pagamenti digitali, è meglio adottare l’approccio temporal shifting. Dall’altra parte, per le elaborazioni non particolarmente time-sensitive, come l’addestramento di modelli di machine learning, si può adottare anche l’approccio spatial shifting. Ad esempio, Google ha implementato lo spatial shifting per la gestione dei file multimediali su piattaforme come Google Drive e YouTube. Un’altra considerazione importante è la presenza di politiche che richiedono l’uso di una region specifica: In questo caso, temporal shifting è l’unica strada percorribile.

Indipendentemente dalla scelta tra temporal shifting e spatial shifting, un requisito fondamentale è l’accesso ai dati sulla carbon intensity della rete nelle region di interesse. Per ottenere tali informazioni, sono disponibili due servizi: WattTime ed Electricity Maps. La differenza principale tra i due è che WattTime fornisce dati sulla carbon intensity marginale, mentre Electricity Maps offre valori sulla carbon intensity media. Pertanto, WattTime è preferibile per ottimizzare gli impatti immediati, mentre Electricity Maps risulta più adatto per ottimizzazioni a lungo termine.

La Green Web Foundation ha semplificato l’accesso a questo tipo di dati fornendo grid-intensity-go, una libreria Go progettata per essere integrata in Kubernetes e altri scheduler. Ciò consente di usare i valori di carbon intensity values per prendere decisioni in merito a dove e quando eseguire i job.

Conclusioni

Mentre continuiamo a progredire con tecnologie sempre più innovative, garantire la sostenibilità ambientale del cloud computing è fondamentale per il successo a lungo termine e per il progresso  all’avanguardia del settore. La domanda di servizi digitali continua a crescere in modo esponenziale, così come il consumo energetico e la carbon footprint associati all’alimentazione dei data center. Pertanto, adopting pratiche green e privilegiare le fonti di energia rinnovabile nell’infrastruttura cloud è indispensabile per mitigare l’impatto ambientale e aprire la strada a un futuro digitale sostenibile.

Con questo approccio, non solo si affrontano le sfide ecologiche, ma si ottengono dei miglioramenti significativi nell’ambito FinOps. Ottimizzando l’allocazione delle risorse si aumenta l’efficienza, si riducono gli sprechi e si contribuisce ad avere un pianeta più sano, spingendo al contempo l’innovazione tecnologica verso nuovi orizzonti.

Torna all'inizio ↑
INDICE
Un primo passo verso un’esperienza Cloud Native più ecologica
Carbon Intensity
Conclusioni