Sfruttare l'elasticità

Last reviewed 2024-12-06 UTC

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 regolare le risorse in modo dinamico in base alle modifiche dei requisiti del carico di lavoro.

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

Panoramica del principio

I requisiti di rendimento di un sistema influenzano direttamente quando e come il sistema esegue lo scale up verticale o lo scale out orizzontale. Devi valutare la capacità del sistema e determinare il carico che il sistema dovrebbe gestire a livello di base. Dopodiché, devi determinare in che modo vuoi che il sistema risponda agli aumenti e alle diminuzioni del carico.

Quando il carico aumenta, il sistema deve eseguire lo scale out orizzontale, fare lo scale up verticale o entrambi. Per lo scaling orizzontale, aggiungi nodi 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 eseguire fare lo scale down (orizzontale, verticale o entrambi).

Definisci le circostanze in cui il sistema esegue lo scale up o lo scale down. Pianifica di eseguire manualmente lo scale up dei sistemi per i 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à, prendi in considerazione i consigli nelle sezioni seguenti.

Pianificare i periodi di carico di picco

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

Valuta la possibilità di eseguire lo scale up del 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 fare lo scale up o fare lo scale out manualmente dei sistemi prima di questi saldi per assicurarti che il 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à dell'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 le metriche personalizzate che definisci in Cloud Monitoring.

Ad esempio, considera un'applicazione in esecuzione su un Compute Engine gruppo di istanze gestite (MIG). 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, puoi 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 una velocità 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 non più necessarie.

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

Utilizzare lo scaling predittivo

Se i componenti del sistema includono Compute Engine, devi valutare se la scalabilità automatica predittiva è adatta al tuo carico di lavoro. 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 fornisce automazione e scalabilità per impostazione predefinita. GKE scala automaticamente nodi e risorse in base al traffico. GKE gestisce i nodi, crea nuovi nodi per le tue applicazioni e configura upgrade e riparazioni automatici.