Questo principio del pilastro dell'ottimizzazione delle prestazioni del Google Cloud Well-Architected Framework fornisce consigli per aiutarti a incorporare l'elasticità, ovvero la capacità di regolare le risorse in modo dinamico in base alle variazioni dei requisiti del workload.
L'elasticità consente a diversi componenti di un sistema di scalare in modo indipendente. Questa scalabilità mirata può contribuire a migliorare le prestazioni e l'efficienza dei costi allocando le risorse esattamente dove sono necessarie, senza eseguire l'overprovisioning o l'underprovisioning delle risorse.
Panoramica del principio
I requisiti di prestazioni di un sistema influenzano direttamente quando e come il sistema esegue lo scale up o lo scale out. Devi valutare la capacità del sistema e determinare il carico che il sistema dovrebbe gestire in condizioni di base. Poi, devi determinare in che modo vuoi che il sistema risponda agli aumenti e alle diminuzioni del carico.
Quando il carico aumenta, il sistema deve fare lo scale out orizzontalmente, lo scale up verticalmente o entrambi. Per la scalabilità orizzontale, aggiungi nodi di replica per assicurarti che il sistema abbia una capacità complessiva sufficiente per soddisfare l'aumento della domanda. Per lo scale up, sostituisci i componenti esistenti dell'applicazione con componenti che contengono più capacità, più memoria e più spazio di archiviazione.
Quando il carico diminuisce, il sistema deve fare lo scale down (orizzontalmente, verticalmente o in entrambi i modi).
Definisci le circostanze in cui il sistema esegue lo scale up o lo scale down. Pianifica lo scale up manuale 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 presente i suggerimenti riportati nelle sezioni seguenti.
Pianifica i periodi di carico di picco
Devi pianificare un percorso di scalabilità efficiente per eventi noti, come i periodi previsti di aumento della domanda dei clienti.
Valuta la possibilità di fare lo scale up del sistema prima di periodi noti di traffico elevato. Ad esempio, se sei un'organizzazione di vendita al dettaglio, prevedi un aumento della domanda durante i saldi stagionali. Ti consigliamo di fare lo scale up o lo scale out dei tuoi sistemi manualmente prima di queste vendite per assicurarti che il tuo sistema possa gestire immediatamente l'aumento del carico o modificare 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 improvviso aumento della domanda o del traffico, puoi utilizzare le funzionalità di scalabilità automatica per attivare la scalabilità elastica basata sulle metriche. Queste metriche possono includere l'utilizzo della CPU, la capacità di gestione del bilanciatore del carico, la latenza e persino metriche personalizzate definite in Cloud Monitoring.
Ad esempio, considera un'applicazione eseguita su un gruppo di istanze gestite 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 una policy di scalabilità automatica che crea più istanze quando l'utilizzo della CPU raggiunge la soglia. Queste istanze appena create aiutano ad assorbire il carico, il che contribuisce a garantire che l'utilizzo medio della CPU rimanga a un livello ottimale fino al raggiungimento del numero massimo di istanze configurate per il MIG. Quando la domanda diminuisce, la policy di scalabilità automatica rimuove le istanze che non sono più necessarie.
Pianifica le prenotazioni degli slot delle risorse in BigQuery o modifica i limiti per le configurazioni di scalabilità automatica in Spanner utilizzando il gestore della scalabilità automatica gestito.
Utilizza la scalabilità predittiva
Se i componenti del sistema includono Compute Engine, devi valutare se la scalabilità automatica predittiva è adatta al tuo workload. La scalabilità automatica predittiva prevede il carico futuro in base alle tendenze storiche delle metriche, ad esempio l'utilizzo della CPU. Le previsioni vengono ricalcolate ogni pochi minuti, il che consente al gestore della scalabilità automatica di adattare rapidamente le sue previsioni alle variazioni più 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 del carico osservate in tempo reale. La scalabilità automatica predittiva utilizza sia i dati in tempo reale sia i dati storici per rispondere sia al carico attuale sia a quello previsto.
Implementa architetture serverless
Valuta la possibilità di implementare un'architettura serverless con servizi serverless intrinsecamente elastici, come i seguenti:
A differenza della scalabilità automatica in altri servizi che richiedono un'ottimizzazione delle regole (ad esempio Compute Engine), la scalabilità automatica serverless è istantanea e può fare lo scale down fino a zero risorse.
Utilizza la modalità Autopilot per Kubernetes
Per applicazioni complesse che richiedono un maggiore controllo su Kubernetes, prendi in considerazione 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 gli upgrade e le riparazioni automatici.