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 calcolo all'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 informate quando esegui il provisioning, la gestione e l'utilizzo delle risorse cloud.
Consigli
Per ottimizzare l'utilizzo delle risorse, prendi in considerazione i consigli nelle sezioni seguenti.
Implementa la scalabilità automatica e dinamica
La scalabilità automatica e dinamica garantisce un utilizzo ottimale delle risorse, contribuendo a prevenire lo spreco di energia da infrastrutture inattive o con provisioning eccessivo. 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, 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 in termini di 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é 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 dell'applicazione. 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 esegue lo scale in risposta alle modifiche del carico in tempo reale. Questa tecnica è adatta per le applicazioni con 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 impedisce la ricerca di 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 i principali eventi di vendita e gli sforzi di marketing mirati.
Google Cloud I servizi e le funzionalità gestiti come GKE Autopilot, Cloud Run e MIG gestiscono automaticamente la scalabilità proattiva apprendendo dai pattern dei workload. Per impostazione predefinita, quando un servizio Cloud Run non riceve traffico, viene eseguito lo scale fino a zero istanze.
Progetta 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 associati a una singola istanza di calcolo. Quando memorizzi lo stato della sessione all'esterno 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 fluida ed efficiente.
Utilizza la pianificazione e i batch
L'elaborazione batch è ideale per i workload su larga scala e non urgenti. I job batch possono aiutarti a ottimizzare i workload per l'efficienza energetica e i costi.
Utilizza le seguenti tecniche per implementare la pianificazione e i job batch.
Pianifica in base alla 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 gli orari del giorno con la minore intensità di carbonio per una regione, utilizza il report sull'impronta di carbonio.
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 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 i job batch non critici e a tolleranza di errore.
Consolida e parallelizza i job
Per ridurre il sovraccarico per l'avvio e l'arresto dei singoli job, raggruppa i job simili in un unico batch di grandi dimensioni. Esegui questi workload a volumi elevati su servizi come Batch. Il servizio esegue automaticamente il provisioning e la gestione dell'infrastruttura necessaria, contribuendo 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, quindi non paghi per le risorse inattive.
Abbina le famiglie di macchine VM ai requisiti dei workload
I tipi di macchine che puoi utilizzare per le VM di Compute Engine sono raggruppati in famiglie di macchine, ottimizzate per diversi workload. Scegli le famiglie di macchine appropriate in base ai requisiti dei tuoi workload.
| Famiglia di macchine | Consigliata 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 efficiente in termini di costi ed energia grazie all'allocazione 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 i workload su larga scala. |
| Istanze ottimizzate per il calcolo (C2, C3): queste istanze forniscono un elevato rapporto vCPU-memoria 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, il che riduce 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 state. |
| Istanze ottimizzate per l'archiviazione (Z3): queste istanze forniscono spazio di archiviazione SSD locale a bassa latenza e ad alto throughput. | Data warehousing, analisi dei log e database SQL, NoSQL e vettoriali. | Le istanze ottimizzate per l'archiviazione elaborano set di dati di grandi dimensioni in locale, il che contribuisce a eliminare l'energia utilizzata per l'uscita dei dati di rete tra località. Quando utilizzi lo spazio di archiviazione locale per le attività con IOPS elevate, eviti di eseguire il provisioning eccessivo di più istanze standard. |
| Istanze ottimizzate per l'accelerazione (A3, A2, G2): queste istanze sono create per i 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 accelerata da 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. |
Esegui l'upgrade ai tipi di macchine più recenti
L'utilizzo dei tipi di macchine più recenti potrebbe contribuire a migliorare la sostenibilità. Quando i tipi di macchine 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.
Le CPU, le GPU e le TPU spesso beneficiano dei progressi tecnici nell'architettura dei chip, ad esempio:
- Core specializzati: i progressi nei processori spesso includono core o istruzioni specializzate per i workload comuni. Ad esempio, le CPU potrebbero avere core dedicati per le 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 workload. 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, riducendo al minimo il consumo di energia.
I miglioramenti tecnici nell'architettura dei chip offrono i seguenti vantaggi diretti per la sostenibilità e i costi:
- Prestazioni più elevate per watt: questa è una metrica chiave per la sostenibilità. Ad esempio, le VM C4 mostrano 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 prestazioni ti consentono di completare le attività più rapidamente o di utilizzare un numero inferiore di istanze per lo stesso carico.
- Consumo energetico totale inferiore: con i processori migliorati, le risorse di calcolo vengono utilizzate per una durata inferiore 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 ad alta intensità di calcolo di breve durata, 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 provisioning eccessivo e contribuisce a garantire che ogni watt di potenza 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 contribuiscono 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 fino a zero quando non è presente traffico in entrata per un servizio o quando un job viene completato. La scalabilità automatica contribuisce a eliminare il consumo energetico da parte 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 AI, puoi utilizzare le GPU con Cloud Run, che ti consente 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 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 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 il provisioning eccessivo delle risorse, quindi non paghi o non alimenti la capacità di calcolo non necessaria.
- Scalabilità automatica verticale dei pod (VPA): puoi configurare GKE per regolare 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, contribuendo a evitare il provisioning eccessivo delle risorse.
- Scalabilità automatica dei pod multidimensionale di GKE: per i 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 la minore impronta energetica possibile per le prestazioni richieste.
- Pianificazione con riconoscimento della topologia (TAS): TAS migliora l'efficienza della rete per i workload AI e ML in GKE inserendo 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 AI e ML su larga scala.
Configura la pianificazione con riconoscimento del carbonio
In Google, spostiamo continuamente i nostri workload in località e orari che forniscono l'elettricità più pulita. Inoltre, riutilizziamo o recuperiamo, le apparecchiature meno recenti per casi d'uso alternativi. Puoi utilizzare questa strategia di pianificazione con riconoscimento del carbonio per assicurarti che i tuoi workload containerizzati utilizzino energia pulita.
Per implementare la pianificazione con riconoscimento del carbonio, hai bisogno di informazioni in tempo reale sul mix energetico che alimenta i data center in una regione. 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 pubblici BigQuery. I dati orari sul mix di rete e sull'intensità di carbonio utilizzati per calcolare il set di dati annuali sul carbonio di Google provengono da Electricity Maps.
Per implementare la pianificazione con riconoscimento del carbonio, 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 contribuisce a ridurre l'impronta di carbonio complessiva sfruttando le fonti di energia più pulite quando sono disponibili.
Progetta ripristino di emergenza efficiente dal punto di vista energetico
La preparazione per il 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 gli obiettivi del tempo di ripristino (RTO).
Ottimizza l'efficienza dell'avvio a freddo
Utilizza i seguenti approcci per ridurre al minimo o eliminare le risorse attive nella regione secondaria (RE):
- Dai priorità al DR a freddo: mantieni le risorse nella regione di RE disattivate o in uno stato di scalabilità fino a zero. Questo approccio contribuisce a eliminare l'impronta di carbonio delle risorse di calcolo inattive.
- Sfrutta il failover serverless: utilizza servizi serverless gestiti come Cloud Run per gli endpoint di RE. Cloud Run esegue lo scale fino a zero quando non è in uso, quindi puoi 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 in esecuzione nel sito di RE (a caldo), utilizza uno strumento IaC come Terraform per eseguire rapidamente il provisioning degli ambienti solo quando necessario.
Trova un equilibrio tra ridondanza e utilizzo
La ridondanza delle risorse è uno dei principali fattori di spreco di energia. Per ridurre la ridondanza, utilizza i seguenti approcci:
- Preferisci la modalità attiva-attiva alla modalità attiva-passiva: in una configurazione attiva-passiva, le risorse nel sito passivo sono inattive, il che comporta uno spreco di energia. Un'architettura attiva-attiva con 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.
- Ridimensiona correttamente la ridondanza: replica i dati e i servizi tra le regioni solo quando la replica è necessaria per soddisfare i requisiti di alta disponibilità o di RE. Ogni replica aggiuntiva aumenta il costo energetico dello spazio di archiviazione permanente e dell'uscita di rete.