Ottimizzare l'utilizzo delle risorse per la sostenibilità

Last reviewed 2026-01-28 UTC

Questo principio del pilastro della sostenibilità del Google Cloud framework Well-Architected fornisce suggerimenti per aiutarti a ottimizzare l'utilizzo delle risorse da parte dei tuoi workload in Google Cloud.

Panoramica del principio

L'ottimizzazione dell'utilizzo delle risorse è fondamentale per migliorare la sostenibilità del tuo ambiente cloud. Ogni risorsa di cui viene eseguito il provisioning, dai cicli di calcolo all'archiviazione dei dati, influisce direttamente sul consumo energetico, sull'intensità idrica e sulleemissioni di anidride carbonicao. Per ridurre l'impronta ambientale dei tuoi carichi di lavoro, devi fare scelte informate quando esegui il provisioning, gestisci e utilizzi le risorse cloud.

Consigli

Per ottimizzare l'utilizzo delle risorse, prendi in considerazione i suggerimenti nelle sezioni seguenti.

Implementare la scalabilità automatica e dinamica

Il dimensionamento automatico e dinamico garantisce un utilizzo ottimale delle risorse, il che contribuisce a evitare sprechi energetici dovuti a un'infrastruttura inattiva o con provisioning eccessivo. La riduzione dello spreco di energia si traduce in costi inferiori e minoriemissioni di anidride carbonicao.

Utilizza le seguenti tecniche per implementare la scalabilità automatica e dinamica.

Utilizzare la scalabilità orizzontale

La scalabilità orizzontale è la tecnica di scalabilità preferita per la maggior parte delle applicazioni cloud-first. Anziché aumentare le dimensioni di ogni istanza, operazione nota come scalabilità verticale, aggiungi istanze per distribuire il carico. Ad esempio, puoi utilizzare i gruppi di istanze gestite (MIG) per scalare automaticamente un gruppo di VM di Compute Engine. L'infrastruttura scalata orizzontalmente è più resiliente perché l'errore di un'istanza non influisce sulla disponibilità dell'applicazione. La scalabilità orizzontale è anche una tecnica efficiente in termini di risorse per le applicazioni con livelli di carico variabili.

Configura le policy di scalabilità appropriate

Configura le impostazioni di scalabilità automatica in base ai requisiti dei tuoi carichi di lavoro. Definisci metriche e soglie personalizzate specifiche per il comportamento dell'applicazione. Anziché basarti esclusivamente sull'utilizzo della CPU, prendi in considerazione metriche come la profondità della coda per le attività asincrone, la latenza delle richieste e le metriche personalizzate delle applicazioni. Per evitare scalabilità frequente e non necessaria o flapping, definisci criteri di scalabilità chiari. Ad esempio, per i carichi di lavoro di cui esegui il deployment in Google Kubernetes Engine (GKE), configura un'policy di scalabilità automatica del cluster appropriata.

Combinare scalabilità reattiva e proattiva

Con la scalabilità reattiva, il sistema viene scalato in risposta alle variazioni del carico in tempo reale. Questa tecnica è adatta alle applicazioni con picchi di carico imprevedibili.

Lo scaling proattivo è adatto ai workload con pattern prevedibili, ad esempio orari di lavoro giornalieri fissi e generazione di report settimanali. Per questi carichi di lavoro, utilizza la scalabilità automatica pianificata per eseguire il provisioning preliminare delle risorse in modo che possano gestire un livello di carico previsto. Questa tecnica impedisce una corsa alle risorse e garantisce un'esperienza utente più fluida e una maggiore efficienza. Questa tecnica ti aiuta anche a pianificare in modo proattivo i picchi di carico noti, come i principali eventi di vendita e le iniziative di marketing mirate.

I servizi e le funzionalità gestitiGoogle Cloud come GKE Autopilot, Cloud Run e i MIG gestiscono automaticamente la scalabilità proattiva apprendendo dai pattern dei carichi di lavoro. Per impostazione predefinita, quando un servizio Cloud Run non riceve traffico, viene scalato a zero istanze.

Progettare applicazioni stateless

Affinché un'applicazione possa essere scalata orizzontalmente, i suoi componenti devono essere stateless. Ciò significa che la sessione o i dati di un utente specifico non sono collegati a una singola istanza di calcolo. Quando memorizzi lo stato della sessione al di fuori dell'istanza di calcolo, ad esempio in Memorystore for Redis, qualsiasi istanza di calcolo può gestire le richieste di qualsiasi utente. Questo approccio di progettazione consente uno scaling orizzontale fluido ed efficiente.

Utilizzare la pianificazione e i batch

L'elaborazione batch è ideale per workload su larga scala e non urgenti. I job batch possono aiutarti a ottimizzare i tuoi carichi di lavoro in termini di efficienza energetica e costi.

Utilizza le seguenti tecniche per implementare la pianificazione e i job batch.

Pianificazione per una bassa intensità di carbonio

Pianifica l'esecuzione dei job batch in regioni a basse emissioni di carbonio e durante i periodi in cui la rete elettrica locale ha una percentuale elevata di energia pulita. Per identificare i momenti della giornata con le emissioni di carbonio più basse per una regione, utilizza il report Carbon Footprint.

Utilizza le VM spot per i workload non critici

Le VM spot ti consentono di sfruttare la capacità inutilizzata di Compute Engine a un prezzo molto scontato. Le VM spot possono essere prerilasciate, ma forniscono un modo conveniente per elaborare set di dati di grandi dimensioni senza la necessità di risorse dedicate e sempre attive. Le VM spot sono ideali per job batch non critici e a tolleranza di errore.

Consolidare e parallelizzare i job

Per ridurre l'overhead per l'avvio e l'arresto dei singoli job, raggruppa job simili in un unico batch di grandi dimensioni. Esegui questi carichi di lavoro ad alto volume su servizi come Batch. Il servizio esegue automaticamente il provisioning e la gestione dell'infrastruttura necessaria, il che contribuisce a garantire un utilizzo ottimale delle risorse.

Utilizzare i servizi gestiti

Servizi gestiti come Batch e Dataflow gestiscono automaticamente il provisioning, la pianificazione e il monitoraggio delle risorse. La piattaforma cloud gestisce l'ottimizzazione delle risorse. Puoi concentrarti sulla logica dell'applicazione. Ad esempio, Dataflow scala automaticamente il numero di worker in base al volume di dati nella pipeline, in modo da non pagare per le risorse inattive.

Abbinare le famiglie di macchine VM ai requisiti del workload

I tipi di macchine che puoi utilizzare per le tue VM Compute Engine sono raggruppati in famiglie di macchine, ottimizzate per diversi carichi di lavoro. Scegli le famiglie di macchine appropriate in base ai requisiti dei tuoi carichi di lavoro.

Famiglia di macchine Consigliato per i tipi di workload Indicazioni sulla sostenibilità
Istanze per uso generico (E2, N2, N4, Tau T2A/T2D): Queste istanze forniscono un rapporto bilanciato tra CPU e memoria. Server web, microservizi, database di piccole e medie dimensioni e ambienti di sviluppo. La serie E2 è altamente conveniente ed efficiente dal punto di vista energetico grazie alla distribuzione dinamica delle risorse. La serie Tau T2A utilizza processori basati su Arm, che spesso sono più efficienti dal punto di vista energetico per unità di prestazioni per carichi di lavoro su larga scala.
Istanze ottimizzate per il calcolo (C2, C3): queste istanze forniscono un rapporto vCPU/memoria elevato e prestazioni elevate per core. Computing ad alte prestazioni (HPC), elaborazione batch, server di gioco e analisi dei dati basata su CPU. Un'istanza della serie C ti consente di completare più rapidamente le attività ad alta intensità di CPU, riducendo il tempo di calcolo totale e il consumo energetico del job.
Istanze ottimizzate per la memoria (M3, M2): queste istanze sono progettate per i workload che richiedono una grande quantità di memoria. Database in memoria e data warehouse di grandi dimensioni, come SAP HANA o analisi in memoria. Le istanze ottimizzate per la memoria consentono il consolidamento dei workload che richiedono molta memoria su un numero inferiore di nodi fisici. Questo consolidamento riduce l'energia totale necessaria rispetto all'utilizzo di più istanze più piccole. La memoria ad alte prestazioni riduce la latenza di accesso ai dati, il che può ridurre il tempo totale che la CPU trascorre in uno stato attivo.
Istanze ottimizzate per l'archiviazione (Z3) : queste istanze forniscono spazio di archiviazione SSD locale a bassa latenza e velocità effettiva elevata. Data warehousing, analisi dei log e database SQL, NoSQL e vettoriali. Le istanze ottimizzate per l'archiviazione elaborano localmente set di dati di grandi dimensioni, il che contribuisce a eliminare l'energia utilizzata per il traffico in uscita dalla rete tra località diverse. Quando utilizzi l'archiviazione locale per attività con IOPS elevati, eviti il provisioning eccessivo di più istanze standard.
Istanze ottimizzate per l'acceleratore (A3, A2, G2): queste istanze sono create per carichi di lavoro accelerati da GPU e TPU, come AI, ML e HPC. Addestramento e inferenza di modelli ML e simulazioni scientifiche.

Le TPU sono progettate per un'efficienza energetica ottimale. Offrono un numero maggiore di calcoli per watt.

Un'istanza con accelerazione GPU come la serie A3 con GPU NVIDIA H100 può essere notevolmente più efficiente dal punto di vista energetico per l'addestramento di modelli di grandi dimensioni rispetto a un'alternativa solo CPU. Sebbene un'istanza accelerata da GPU abbia un consumo energetico nominale più elevato, l'attività viene completata molto più rapidamente.

Eseguire l'upgrade ai tipi di macchine più recenti

L'utilizzo dei tipi di macchine più recenti può contribuire a migliorare la sostenibilità. Quando i tipi di macchina vengono aggiornati, spesso sono progettati per essere più efficienti dal punto di vista energetico e per fornire prestazioni più elevate per watt. Le VM che utilizzano i tipi di macchine più recenti potrebbero completare la stessa quantità di lavoro con un consumo energetico inferiore.

CPU, GPU e TPU spesso traggono vantaggio dai progressi tecnici nell'architettura dei chip, ad esempio:

  • Core specializzati: i progressi nei processori spesso includono core o istruzioni specializzati per carichi di lavoro comuni. Ad esempio, le CPU potrebbero avere core dedicati per operazioni vettoriali o acceleratori AI integrati. Quando queste attività vengono scaricate dalla CPU principale, vengono completate in modo più efficiente e consumano meno energia.
  • Gestione dell'alimentazione migliorata: i progressi nelle architetture dei chip spesso includono funzionalità di gestione dell'alimentazione più sofisticate, come la regolazione dinamica della tensione e della frequenza in base al carico di lavoro. Queste funzionalità di gestione dell'alimentazione consentono ai chip di funzionare con la massima efficienza e di entrare in stati di basso consumo energetico quando sono inattivi, il che riduce al minimo il consumo energetico.

I miglioramenti tecnici nell'architettura dei chip offrono i seguenti vantaggi diretti per la sostenibilità e i costi:

  • Prestazioni più elevate per watt: si tratta di una metrica chiave per la sostenibilità. Ad esempio, le VM C4 dimostrano un rapporto prezzo/prestazioni superiore del 40% rispetto alle VM C3 per lo stesso consumo energetico. Il processore C4A offre un'efficienza energetica superiore del 60% rispetto ai processori x86 comparabili. Queste funzionalità di rendimento ti consentono di completare le attività più rapidamente o utilizzare meno istanze per lo stesso carico.
  • Riduzione del consumo energetico totale: con processori migliorati, le risorse di calcolo vengono utilizzate per un periodo di tempo più breve per una determinata attività, il che riduce il consumo energetico complessivo e l'impronta di carbonio. L'impatto di carbonio è particolarmente elevato per i carichi di lavoro di breve durata e ad alta intensità di calcolo, come i job batch e l'addestramento di modelli ML.
  • Utilizzo ottimale delle risorse: i tipi di macchine più recenti sono spesso più adatti al software moderno e sono più compatibili con le funzionalità avanzate delle piattaforme cloud. Questi tipi di macchine in genere consentono un migliore utilizzo delle risorse, il che riduce la necessità di un provisioning eccessivo e contribuisce a garantire che ogni watt di energia venga utilizzato in modo produttivo.

Esegui il deployment di applicazioni containerizzate

Puoi utilizzare servizi completamente gestiti basati su container come GKE e Cloud Run nell'ambito della tua strategia per il cloud computing sostenibile. Questi servizi consentono di ottimizzare l'utilizzo delle risorse e automatizzare la gestione delle risorse.

Sfrutta la funzionalità di scalabilità a zero di Cloud Run

Cloud Run fornisce un ambiente serverless gestito che scala automaticamente le istanze a zero quando non c'è traffico in entrata per un servizio o quando un job viene completato. La scalabilità automatica contribuisce a eliminare il consumo energetico dell'infrastruttura inattiva. Le risorse vengono attivate solo quando elaborano attivamente le richieste. Questa strategia è molto efficace per i carichi di lavoro intermittenti o basati su eventi. Per i carichi di lavoro AI, puoi utilizzare le GPU con Cloud Run, che ti consente di utilizzare e pagare le GPU solo quando vengono utilizzate.

Automatizzare l'ottimizzazione delle risorse utilizzando GKE

GKE è una piattaforma di orchestrazione dei container che garantisce che le applicazioni utilizzino solo le risorse necessarie. Per aiutarti ad automatizzare l'ottimizzazione delle risorse, GKE fornisce le seguenti tecniche:

  • Bin packing: GKE Autopilot inserisce in modo intelligente più container nei nodi disponibili. Il bin packing massimizza l'utilizzo di ogni nodo e riduce il numero di nodi inattivi o sottoutilizzati, contribuendo a ridurre il consumo energetico.
  • Scalabilità automatica orizzontale dei pod (HPA): Con HPA, il numero di repliche del container (pod) viene regolato automaticamente in base a metriche predefinite come l'utilizzo della CPU o metriche personalizzate specifiche dell'applicazione. Ad esempio, se la tua applicazione registra un picco di traffico, GKE aggiunge pod per soddisfare la domanda. Quando il traffico diminuisce, GKE riduce il numero di pod. Questo scalabilità dinamica impedisce il provisioning eccessivo delle risorse, in modo da non pagare o attivare capacità di calcolo non necessarie.
  • Scalabilità automatica pod verticale (VPA): Puoi configurare GKE in modo che regoli automaticamente le allocazioni e i limiti di CPU e memoria per i singoli container. Questa configurazione garantisce che a un container non vengano allocate più risorse di quelle necessarie, il che contribuisce a evitare il provisioning eccessivo delle risorse.
  • Scalabilità automatica pod multidimensionale GKE: Per i carichi di lavoro complessi, puoi configurare HPA e VPA contemporaneamente per ottimizzare sia il numero di pod sia le dimensioni di ogni pod. Questa tecnica contribuisce a garantire l'impronta energetica più piccola possibile per le prestazioni richieste.
  • Pianificazione topologia consapevole (TAS): TAS migliora l'efficienza di rete per i carichi di lavoro AI e ML in GKE posizionando i pod in base alla struttura fisica dell'infrastruttura del data center. TAS colloca strategicamente i workload per ridurre al minimo gli hop di rete. Questa colocation contribuisce a ridurre la latenza di comunicazione e il consumo energetico. Ottimizzando l'allineamento fisico dei nodi e dell'hardware specializzato, TAS accelera il completamento delle attività e massimizza l'efficienza energetica dei workload di AI e ML su larga scala.

Configurare la pianificazione in base alle emissioni di carbonio

In Google, spostiamo continuamente i nostri carichi di lavoro in località e orari che forniscono l'elettricità più pulita. Inoltre, riutilizziamo o recuperiamo apparecchiature più vecchie per casi d'uso alternativi. Puoi utilizzare questa strategia di pianificazione rispettosa del clima per garantire che i tuoi carichi di lavoro containerizzati utilizzino energia pulita.

Per implementare la pianificazione in base alle emissioni di carbonio, hai bisogno di informazioni sul mix energetico che alimenta i data center di una regione in tempo reale. Puoi ottenere queste informazioni in un formato leggibile dalla macchina dal repository Carbon free energy for Google Cloud regions in GitHub o da un set di dati pubblico BigQuery. I dati orari sul mix di rete e sull'intensità di emissioni di anidride carbonica utilizzati per calcolare il set di dati annuali sulle emissioni di anidride carbonica di Google provengono da Electricity Maps.

Per implementare la pianificazione consapevole delle emissioni di carbonio, ti consigliamo le seguenti tecniche:

  • Spostamento geografico: pianifica l'esecuzione dei carichi di lavoro in regioni che utilizzano una percentuale maggiore di fonti di energia rinnovabile. Questo approccio ti consente di utilizzare reti elettriche più pulite.
  • Spostamento temporale: per i workload flessibili e non critici come l'elaborazione batch, configura i workload in modo che vengano eseguiti durante le ore non di punta o quando l'energia rinnovabile è più abbondante. Questo approccio è noto come spostamento temporale e contribuisce a ridurre l'impronta di carbonio complessiva sfruttando le fonti di energia più pulite quando sono disponibili.

Progettare ripristino di emergenza efficiente dal punto di vista energetico

La preparazione al ripristino di emergenza (RE) spesso comporta il provisioning preliminare di risorse ridondanti in una regione secondaria. Tuttavia, le risorse inattive o sottoutilizzate possono causare un notevole spreco di energia. Scegli strategie di ripristino di emergenza che massimizzino l'utilizzo delle risorse e riducano al minimo l'impatto di carbonio senza compromettere gli obiettivi di tempo di ripristino (RTO).

Ottimizza per l'efficienza dell'avvio a freddo

Utilizza i seguenti approcci per ridurre al minimo o eliminare le risorse attive nella tua regione secondaria (RE):

  • Dai la priorità al DR a freddo: mantieni le risorse nella regione di RE disattivate o in uno stato di scalabilità a zero. Questo approccio contribuisce a eliminare l'impatto ambientale delle risorse di calcolo inattive.
  • Sfrutta il failover serverless: utilizza servizi serverless gestiti come Cloud Run per gli endpoint di RE. Cloud Run viene scalato a zero quando non è in uso, in modo da poter mantenere una topologia di RE che non consuma energia finché il traffico non viene reindirizzato alla regione di RE.
  • Automatizza il ripristino con Infrastructure as Code (IaC): anziché mantenere le risorse nel sito di RE in esecuzione (warm), utilizza uno strumento IaC come Terraform per eseguire rapidamente il provisioning degli ambienti solo quando necessario.

Trovare un equilibrio tra ridondanza e utilizzo

La ridondanza delle risorse è uno dei principali fattori di spreco energetico. Per ridurre la ridondanza, utilizza i seguenti approcci:

  • Preferisci la modalità attiva-attiva a quella attiva-passiva: in una configurazione attiva-passiva, le risorse nel sito passivo sono inattive, il che comporta uno spreco di energia. Un'architettura attivo-attivo di dimensioni ottimali garantisce che tutte le risorse di cui è stato eseguito il provisioning in entrambe le regioni gestiscano attivamente il traffico. Questo approccio ti aiuta a massimizzare l'efficienza energetica della tua infrastruttura.
  • Ridondanza dimensionata correttamente: replica dati e servizi in più regioni solo quando la replica è necessaria per soddisfare i requisiti di alta disponibilità o di RE. Ogni replica aggiuntiva aumenta il costo energetico dell'archiviazione permanente e del traffico in uscita dalla rete.