Sfrutta l'elasticità

Last reviewed 2024-12-06 UTC

Questo principio del pilastro di ottimizzazione delle prestazioni del Google Cloud Architecture Framework fornisce consigli per aiutarti a incorporare l'elasticità, ovvero la capacità di regolare le risorse in modo dinamico in base alle modifiche dei requisiti dei carichi di lavoro.

L'elasticità consente ai diversi componenti di un sistema di scalare in modo indipendente. Questo scaling mirato può contribuire a migliorare il rendimento e l'efficienza dei costi allocando le risorse esattamente dove sono necessarie, senza eseguire un overprovisioning o un underprovisioning delle risorse.

Panoramica del principio

I requisiti di prestazioni di un sistema influiscono direttamente su quando e come il sistema si espande verticalmente o orizzontalmente. Devi valutare la capacità del sistema e determinare il carico che dovrebbe gestire in base alla linea di base. Poi, devi determinare come vuoi che il sistema risponda agli aumenti e alle diminuzioni del carico.

Quando il carico aumenta, il sistema deve eseguire lo scale out orizzontale, lo scale up verticale o entrambi. Per la scalabilità orizzontale, aggiungi nodi replica per assicurarti che il sistema abbia una capacità complessiva sufficiente per soddisfare la domanda in aumento. Per la scalabilità verticale, sostituisci i componenti esistenti dell'applicazione con componenti che contengono una maggiore capacità, più memoria e più spazio di archiviazione.

Quando il carico diminuisce, il sistema deve eseguire fare lo scale down (orizzontalmente, verticalmente o entrambi).

Definisci le circostanze in cui il sistema aumenta o riduce le dimensioni. Pianifica di eseguire manualmente l'upgrade dei sistemi per periodi noti di traffico elevato. Utilizza strumenti come la scalabilità automatica, che risponde agli aumenti o alle diminuzioni del carico.

Consigli

Per sfruttare l'elasticità, tieni presenti i consigli riportati nelle seguenti sezioni.

Pianifica i periodi di picco di carico

Devi pianificare un percorso di scalabilità efficiente per eventi noti, ad esempio periodi previsti di aumento della domanda dei clienti.

Valuta la possibilità di aumentare le dimensioni del sistema prima di periodi noti di traffico elevato. Ad esempio, se sei un'organizzazione di vendita al dettaglio, prevedi che la domanda aumenti durante i saldi stagionali. Ti consigliamo di eseguire manualmente lo scaling up o lo scaling out dei sistemi prima di queste vendite per assicurarti che il sistema possa gestire immediatamente l'aumento del carico o regolare immediatamente i limiti esistenti. In caso contrario, il sistema potrebbe impiegare diversi minuti per aggiungere risorse in risposta alle modifiche in tempo reale. La capacità della tua applicazione potrebbe non aumentare abbastanza rapidamente e causare ritardi per alcuni utenti.

Per eventi sconosciuti o imprevisti, come un aumento improvviso della domanda o del traffico, puoi utilizzare le funzionalità di scalabilità automatica per attivare la scalabilità elastica in base alle metriche. Queste metriche possono includere l'utilizzo della CPU, la capacità di gestione del bilanciatore del carico, la latenza e persino le metriche personalizzate che definisci in Cloud Monitoring.

Ad esempio, considera un'applicazione che viene eseguita su un gruppo di istanze gestite (MIG) di Compute Engine. Questa applicazione richiede che ogni istanza funzioni in modo ottimale fino a quando l'utilizzo medio della CPU non raggiunge il 75%. In questo esempio, potresti definire un criterio di scalabilità automatica che crei più istanze quando l'utilizzo della CPU raggiunge la soglia. Queste istanze appena create contribuiscono ad assorbire il carico, il che contribuisce a garantire che l'utilizzo medio della CPU rimanga a un tasso ottimale fino al raggiungimento del numero massimo di istanze configurate per il gruppo di istanze gestite. Quando la domanda diminuisce, il piano di scalabilità automatica rimuove le istanze che non sono più necessarie.

Pianifica prenotazioni di slot di risorse in BigQuery o modifica i limiti per le configurazioni di scalabilità automatica in Spanner utilizzando il modulo di scalabilità automatica gestito.

Utilizzare la scalabilità predittiva

Se i componenti di sistema includono Compute Engine, devi valutare se il ridimensionamento automatico predittivo è adatto al tuo carico di lavoro. La scalabilità automatica predittiva prevede il carico futuro in base alle tendenze storiche delle tue metriche, ad esempio l'utilizzo della CPU. Le previsioni vengono ricalcolate ogni pochi minuti, quindi il gestore della scalabilità automatica adatta rapidamente la sua previsione alle variazioni molto recenti del carico. Senza la scalabilità automatica predittiva, un gestore della scalabilità automatica può scalare un gruppo solo in modo reattivo, in base alle variazioni in tempo reale del carico osservate. La scalabilità automatica predittiva funziona sia con i dati in tempo reale sia con quelli storici per rispondere sia al carico attuale sia a quello previsto.

Implementare architetture serverless

Valuta la possibilità di implementare un'architettura serverless con servizi serverless che sono intrinsecamente elastici, ad esempio:

A differenza della scalabilità automatica in altri servizi che richiedono regole di ottimizzazione (ad esempio Compute Engine), la scalabilità automatica del serverless è istantanea e può fare lo scale down le risorse a zero.

Utilizzare la modalità Autopilot per Kubernetes

Per le applicazioni complesse che richiedono un maggiore controllo su Kubernetes, valuta la modalità Autopilot in Google Kubernetes Engine (GKE). La modalità Autopilot offre automazione e scalabilità per impostazione predefinita. GKE scala automaticamente i nodi e le risorse in base al traffico. GKE gestisce i nodi, ne crea di nuovi per le tue applicazioni e configura upgrade e riparazioni automatici.