Questo principio del pilastro dell'ottimizzazione del rendimento del Google Cloud Well-Architected Framework fornisce consigli per aiutarti a incorporare l'elasticità, ovvero la capacità di modificare le risorse in modo dinamico in base alle variazioni dei requisiti del carico di lavoro.
L'elasticità consente di scalare in modo indipendente i diversi componenti di un sistema. Questo scalabilità mirata può contribuire a migliorare il rendimento e l'efficienza dei costi allocando le risorse esattamente dove sono necessarie, senza un provisioning eccessivo o insufficiente delle risorse.
Panoramica del principio
I requisiti di rendimento di un sistema influiscono direttamente su quando e come il sistema viene scalato verticalmente o orizzontalmente. Devi valutare la capacità del sistema e determinare il carico che il sistema dovrebbe gestire a livello di base. A questo punto, devi determinare come vuoi che il sistema risponda agli aumenti e alle diminuzioni del carico.
Quando il carico aumenta, il sistema deve fare lo scale out, verticalmente o entrambi. Per lo scaling orizzontale, aggiungi nodi di replica per assicurarti che il sistema abbia una capacità complessiva sufficiente a soddisfare l'aumento della domanda. Per lo scaling verticale, 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 di scalare manualmente i sistemi per i periodi noti di traffico elevato. Utilizza strumenti come la scalabilità automatica, che risponde agli aumenti o alle riduzioni del carico.
Consigli
Per sfruttare l'elasticità, tieni presente i consigli nelle sezioni seguenti.
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 scalare il sistema prima dei 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 aumentare o ridurre manualmente le risorse dei tuoi sistemi prima di queste vendite per assicurarti che il tuo sistema possa gestire immediatamente il carico maggiore o adeguare 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 lo scaling elastico basato sulle metriche. Queste metriche possono includere l'utilizzo della CPU, la capacità di gestione del bilanciatore del carico, la latenza e persino metriche personalizzate che definisci in Cloud Monitoring.
Ad esempio, considera un'applicazione eseguita su un gruppo di istanze gestite di Compute Engine. Questa applicazione ha un requisito che prevede che ogni istanza funzioni in modo ottimale finché 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 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 configurato per il MIG. Quando la domanda diminuisce, la norma di scalabilità automatica rimuove le istanze che non sono più necessarie.
Pianifica le prenotazioni di slot di risorse in BigQuery o regola i limiti per le configurazioni di scalabilità automatica in Spanner utilizzando lo scaler automatico gestito.
Utilizzare 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, quindi il gestore della scalabilità automatica adatta 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 funziona sia con i dati in tempo reale sia con i dati storici per rispondere al carico attuale e a quello previsto.
Implementare architetture serverless
Valuta la possibilità di implementare un'architettura serverless con servizi serverless intrinsecamente elastici, ad esempio:
A differenza della scalabilità automatica in altri servizi che richiedono regole di ottimizzazione (ad esempio Compute Engine), la scalabilità automatica serverless è istantanea e può fare lo scale down fino a zero risorse.
Utilizzare la modalità Autopilot per Kubernetes
Per le applicazioni complesse che richiedono un maggiore controllo su Kubernetes, valuta la possibilità di utilizzare la modalità Autopilot in Google Kubernetes Engine (GKE). La modalità Autopilot offre automazione e scalabilità per impostazione predefinita. GKE esegue automaticamente lo scale dei nodi e delle risorse in base al traffico. GKE gestisce i nodi, crea nuovi nodi per le tue applicazioni e configura gli upgrade e le riparazioni automatici.