Questo principio del pilastro della sostenibilità del Google Cloud Well-Architected Framework fornisce consigli 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 computing allo spazio di archiviazione dei dati, influisce direttamente sul consumo di energia, sull'intensità idrica e sulle emissioni di anidride carbonica. Per ridurre l'impatto ambientale dei tuoi workload, devi fare scelte consapevoli quando esegui il provisioning, gestisci e utilizzi le risorse cloud.
Consigli
Per ottimizzare l'utilizzo delle risorse, prendi in considerazione i suggerimenti riportati nelle sezioni seguenti.
Implementa la scalabilità automatica e dinamica
La scalabilità automatica e dinamica garantisce un utilizzo ottimale delle risorse, contribuendo a prevenire gli sprechi di energia dovuti a un'infrastruttura inattiva o con over-provisioning. La riduzione dell'energia sprecata si traduce in costi inferiori e minori emissioni di anidride carbonica.
Utilizza le seguenti tecniche per implementare la scalabilità automatica e dinamica.
Utilizza 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, un'operazione nota come scalabilità verticale, aggiungi istanze per distribuire il carico. Ad esempio, puoi utilizzare i gruppi di istanze gestite (MIG) per fare lo scale out automatico di un gruppo di VM di Compute Engine. L'infrastruttura con scalabilità orizzontale è più resiliente perché l'errore di un'istanza non influisce sulla disponibilità dell'applicazione. La scalabilità orizzontale è anche una tecnica efficiente dal punto di vista delle risorse per le applicazioni con livelli di carico variabili.
Configura policy di scalabilità appropriate
Configura le impostazioni di scalabilità automatica in base ai requisiti dei tuoi workload. Definisci metriche e soglie personalizzate specifiche per il comportamento dell'applicazione. Anziché affidarti esclusivamente all'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à frequenti e non necessarie o flapping, definisci policy di scalabilità chiare. Ad esempio, per i workload di cui esegui il deployment in Google Kubernetes Engine (GKE), configura una policy di scalabilità automatica del cluster appropriata.
Combina la scalabilità reattiva e proattiva
Con la scalabilità reattiva, il sistema scala in risposta alle variazioni del carico in tempo reale. Questa tecnica è adatta per le applicazioni che presentano picchi di carico imprevedibili.
La scalabilità proattiva è adatta per i workload con pattern prevedibili, come orari di apertura giornalieri fissi e generazione di report settimanali. Per questi workload, utilizza la scalabilità automatica pianificata per eseguire il pre-provisioning delle risorse in modo che possano gestire un livello di carico previsto. Questa tecnica evita la competizione per le risorse e garantisce un'esperienza utente più fluida con una maggiore efficienza. Questa tecnica ti aiuta anche a pianificare in modo proattivo i picchi di carico noti, come eventi di vendita importanti e iniziative di marketing mirate.
I servizi gestiti e le funzionalità diGoogle Cloud come GKE Autopilot, Cloud Run e i MIG gestiscono automaticamente la scalabilità proattiva apprendendo dai pattern dei workload. Per impostazione predefinita, quando un servizio Cloud Run non riceve traffico, lo scale down viene eseguito fino a zero istanze.
Progetta applicazioni stateless
Affinché un'applicazione possa scalare orizzontalmente, i suoi componenti devono essere stateless. Ciò significa che la sessione o i dati di un utente specifico non sono legati a una singola istanza di computing. Quando memorizzi lo stato della sessione al di fuori dell'istanza di computing, ad esempio in Memorystore for Redis, qualsiasi istanza di computing può gestire le richieste di qualsiasi utente. Questo approccio di progettazione consente una scalabilità orizzontale semplice ed efficiente.
Utilizza 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 workload in termini di efficienza energetica e costi.
Utilizza le seguenti tecniche per implementare la pianificazione e i job batch.
Programma per un'intensità di carbonio bassa
Pianifica l'esecuzione dei job batch nelle regioni a bassa emissione di CO2 e nei periodi in cui la rete elettrica locale ha un'alta percentuale di energia pulita. Per identificare i momenti della giornata con la minore intensità di carbonio per una regione, utilizza il report Carbon Footprint.
Utilizza le VM spot per i workload non critici
Le VM spot ti consentono di usufruire della capacità di Compute Engine inutilizzata con uno sconto notevole. Le VM spot possono essere prerilasciate, ma offrono un modo conveniente per elaborare set di dati di grandi dimensioni senza la necessità di risorse dedicate sempre attive. Le VM spot sono ideali per job batch non critici e a tolleranza di errore.
Consolida e parallelizza 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 workload 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.
Utilizza i servizi gestiti
I 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.
Abbina le famiglie di macchine delle VM ai requisiti dei workload
I tipi di macchine che puoi utilizzare per le tue VM di Compute Engine sono raggruppati in famiglie di macchine, ottimizzate per workload diversi. Scegli le famiglie di macchine appropriate in base ai requisiti dei tuoi workload.
| Famiglia di macchine | Consigliato per i tipi di workload | Indicazioni sulla sostenibilità |
|---|---|---|
| Istanze per uso generico: 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 sua allocazione dinamica delle risorse. Le serie C4A, N4A e Tau T2A utilizzano processori basati su Arm, che spesso sono più efficienti dal punto di vista energetico per unità di prestazioni per workload su larga scala. |
| Istanze ottimizzate per il calcolo: 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 ottimizzato per il calcolo consente di completare più velocemente le attività ad alta intensità di CPU, riducendo il tempo di calcolo totale e il consumo energetico del job. |
| Istanze ottimizzate per la memoria: queste istanze sono progettate per 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 richiesta 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 trascorso dalla CPU in uno stato attivo. |
| Istanze ottimizzate per l'archiviazione: queste istanze forniscono spazio di archiviazione SSD locale con throughput elevato e bassa latenza. | Data warehousing, analisi dei log e database SQL, NoSQL e vettoriali. | Le istanze ottimizzate per l'archiviazione elaborano set di dati di grandi dimensioni localmente, il che contribuisce a eliminare l'energia utilizzata per il traffico di dati in uscita dalla rete tra località. Se utilizzi l'archiviazione locale per le attività con IOPS elevata, eviti l'overprovisioning di più istanze standard. |
| Istanze ottimizzate per l'acceleratore: queste istanze sono create per workload 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 molto più efficiente dal punto di vista energetico per l'addestramento di modelli di grandi dimensioni rispetto a un'alternativa solo CPU. Sebbene un'istanza con accelerazione GPU abbia un consumo energetico nominale più elevato, l'attività viene completata molto più velocemente. |
Esegui l'upgrade ai tipi di macchina più recenti
L'utilizzo dei tipi di macchine più recenti potrebbe 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, come i seguenti:
- Core specializzati: i progressi nei processori spesso includono core o istruzioni specializzati per i workload comuni. Ad esempio, le CPU potrebbero avere core dedicati per le operazioni vettoriali o acceleratori AI integrati. Quando queste attività vengono trasferite 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 workload. Queste funzionalità di gestione dell'alimentazione consentono ai chip di funzionare alla massima efficienza e di entrare in stati di basso consumo quando sono inattivi, riducendo al minimo il consumo energetico.
I miglioramenti tecnici nell'architettura dei chip offrono i seguenti vantaggi diretti per la sostenibilità e i costi:
- Prestazioni per watt più elevate: si tratta di una metrica chiave per la sostenibilità. Ad esempio, le VM C4 mostrano un rapporto prezzo/prestazioni superiore del 40% rispetto alle VM C3 a parità di consumo energetico. Il processore C4A offre un'efficienza energetica superiore del 60% rispetto a processori x86 simili. Queste funzionalità prestazionali ti consentono di completare le attività più velocemente o di utilizzare meno istanze per lo stesso carico.
- Consumo energetico totale inferiore: con processori migliorati, le risorse di computing 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'impronta di carbonio è particolarmente elevata per i workload di breve durata e ad alta intensità di calcolo, come i job batch e l'addestramento dei modelli di ML.
- Utilizzo ottimale delle risorse: i tipi di macchine più recenti sono spesso più adatti ai software moderni e sono più compatibili con le funzionalità avanzate delle piattaforme cloud. Questi tipi di macchine in genere consentono un migliore utilizzo delle risorse, riducendo la necessità di overprovisioning e contribuendo 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 aiutano a ottimizzare l'utilizzo delle risorse e ad automatizzare la gestione delle risorse.
Sfrutta la funzionalità di scalabilità fino a zero di Cloud Run
Cloud Run fornisce un ambiente serverless gestito che scala automaticamente le istanze a zero quando non è presente traffico in entrata per un servizio o quando un job è completato. La scalabilità automatica aiuta a eliminare il consumo energetico dell'infrastruttura inattiva. Le risorse vengono alimentate solo quando elaborano attivamente le richieste. Questa strategia è molto efficace per i workload intermittenti o basati su eventi. Per i workload di AI, puoi utilizzare le GPU con Cloud Run, che ti consentono di utilizzare e pagare le GPU solo quando vengono utilizzate.
Automatizza l'ottimizzazione delle risorse utilizzando GKE
GKE è una piattaforma di orchestrazione dei container che garantisce che le applicazioni utilizzino solo le risorse di cui hanno bisogno. Per aiutarti ad automatizzare l'ottimizzazione delle risorse, GKE fornisce le seguenti tecniche:
- Bin packing: GKE Autopilot raggruppa in modo intelligente più container sui 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 l'HPA, il numero di repliche di 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. Questa scalabilità dinamica impedisce l'overprovisioning delle risorse, in modo da non pagare o attivare capacità di calcolo non necessaria.
- Scalabilità automatica verticale dei pod (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 aiuta a prevenire l'overprovisioning delle risorse.
- Scalabilità automatica dei pod multidimensionale di GKE: per workload 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 il minor impatto energetico possibile per le prestazioni richieste.
- Pianificazione basata sulla topologia (TAS): TAS migliora l'efficienza della rete per i workload di 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 collocazione 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.
Configura la pianificazione basata sulle emissioni di CO2
In Google, spostiamo continuamente i nostri workload in località e orari che forniscono l'elettricità più pulita. Inoltre, riutilizziamo o recuperiamo le apparecchiature più vecchie per casi d'uso alternativi. Puoi utilizzare questa strategia di pianificazione basata sulle emissioni di CO2 per assicurarti che i tuoi workload containerizzati utilizzino energia pulita.
Per implementare la pianificazione basata sulle emissioni di CO2, 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 da macchina dal repository Energia senza emissioni di CO2 per le regioni Google Cloud in GitHub o da un set di dati pubblico BigQuery. I dati sul mix di rete e sull'intensità di carbonio orari utilizzati per calcolare il set di dati annuale sul carbonio di Google provengono da Electricity Maps.
Per implementare la pianificazione basata sulle emissioni di CO2, ti consigliamo di utilizzare le seguenti tecniche:
- Spostamento geografico: pianifica l'esecuzione dei workload 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 aiuta a ridurre l'impronta di carbonio complessiva sfruttando fonti di energia più pulite quando sono disponibili.
Progetta il ripristino di emergenza a risparmio energetico
La preparazione per ripristino di emergenza (RE) spesso comporta il pre-provisioning di risorse ridondanti in una regione secondaria. Tuttavia, le risorse inattive o sottoutilizzate possono causare un notevole spreco di energia. Scegli strategie di DR che massimizzino l'utilizzo delle risorse e riducano al minimo l'impronta di carbonio senza compromettere i tuoi 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 regione secondaria (RE):
- Dai la priorità al DR cold: mantieni le risorse nella regione di RE disattivate o in uno stato di scalabilità fino a zero. Questo approccio aiuta a eliminare l'impronta di carbonio delle risorse di computing inattive.
- Sfrutta il failover serverless: utilizza servizi serverless gestiti come Cloud Run per gli endpoint di RE. Cloud Run scala a zero quando non è in uso, in modo da poter mantenere una topologia di RE che non consuma energia finché il traffico non viene deviato verso la regione di RE.
- Automatizza il ripristino con l'infrastructure as code (IaC): anziché mantenere in esecuzione (warm) le risorse nel sito di RE, utilizza uno strumento IaC come Terraform per eseguire rapidamente il provisioning degli ambienti solo quando necessario.
Bilancia la ridondanza e l'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 di dimensioni adeguate: replica dati e servizi tra regioni solo quando la replica è necessaria per soddisfare i requisiti di alta affidabilità o RE. Ogni replica aggiuntiva aumenta il costo energetico dell'archiviazione permanente e del traffico in uscita dalla rete.