COST09-BP03 Fornitura dinamica delle risorse - Pilastro dell'ottimizzazione dei costi

COST09-BP03 Fornitura dinamica delle risorse

Viene eseguito il provisioning delle risorse in modo pianificato. La pianificazione può essere basata sulla domanda, ad esempio tramite il dimensionamento automatico, oppure sul tempo, quando la domanda è prevedibile e le risorse sono fornite in base al tempo. Questi metodi comportano la minore quantità possibile di provisioning in eccesso o in difetto.

Livello di rischio associato se questa best practice non fosse adottata: basso

Guida all'implementazione

Esistono diversi modi in cui i clienti AWS possono aumentare le risorse disponibili per le proprie applicazioni e fornire risorse per soddisfare la domanda. Una di queste opzioni consiste nell'utilizzare AWS Instance Scheduler, che automatizza l'avvio e l'arresto delle istanze Amazon Elastic Compute Cloud (Amazon EC2) e Amazon Relational Database Service (Amazon RDS). L'altra opzione è utilizzare AWS Auto Scaling, che consente di dimensionare automaticamente le risorse di calcolo in base alla richiesta dell'applicazione o del servizio. Fornire risorse in base alla domanda ti consentirà di pagare solo per le risorse che usi, di ridurre i costi lanciando le risorse quando sono necessarie e di interromperle quando non servono più.

AWS Instance Scheduler consente di configurare l'arresto e l'avvio delle istanze Amazon EC2 e Amazon RDS a orari definiti, in modo da poter soddisfare la domanda delle stesse risorse secondo uno schema orario coerente, ad esempio ogni giorno gli utenti accedono alle istanze Amazon EC2 alle otto del mattino che non servono dopo le sei di sera. Questa soluzione aiuta a ridurre i costi operativi arrestando le risorse inutilizzate e avviandole quando sono necessarie.

Diagramma che mostra l'ottimizzazione dei costi mediante AWS Instance Scheduler.

Ottimizzazione dei costi con AWS Instance Scheduler.

Puoi anche configurare in modo semplice e rapido le pianificazioni per le tue istanze Amazon EC2 nei tuoi account e nelle tue Regioni con un'interfaccia utente (UI) utilizzando Configurazione rapida di AWS Systems Manager. Puoi pianificare le istanze Amazon EC2 e Amazon RDS con AWS Instance Scheduler e arrestare e avviare le istanze esistenti. Tuttavia, non è possibile arrestare e avviare le istanze che fanno parte del proprio gruppo (ASG) Auto Scaling o che gestiscono servizi come Amazon Redshift o Amazon OpenSearch Service. I gruppi Auto Scaling hanno una propria pianificazione per le istanze del gruppo e queste istanze vengono create.

AWS Auto Scaling ti aiuta a regolare la capacità per mantenere prestazioni stabili e prevedibili al minor costo possibile per soddisfare le mutevoli esigenze. È un servizio gratuito e completamente gestito per il dimensionamento della capacità della tua applicazione, che si integra con le istanze Amazon EC2 e le serie di istanze spot, Amazon ECS, Amazon DynamoDB e Amazon Aurora. Auto Scaling fornisce il rilevamento automatico delle risorse per identificare risorse configurabili nel carico di lavoro, dispone di strategie di dimensionamento integrate volte a ottimizzare le prestazioni, i costi, o trovare un equilibrio tra i due, e fornisce il dimensionamento predittivo per risolvere i picchi ricorrenti con regolarità.

Sono disponibili diverse opzioni di dimensionamento per dimensionare il tuo gruppo Auto Scaling:

  • Conservazione dei livelli correnti di istanze in ogni momento

  • Dimensionamento manuale

  • Dimensionamento basato su una pianificazione

  • Dimensionamento basato sulla domanda

  • Utilizzo del dimensionamento predittivo

Le policy Auto Scaling sono diverse e possono essere classificate come policy di dimensionamento dinamico e pianificato. Le policy dinamiche fanno riferimento al dimensionamento manuale o dinamico, programmato o predittivo. È possibile utilizzare le policy di dimensionamento per il dimensionamento dinamico, pianificato e predittivo. Puoi anche utilizzare le metriche e gli allarmi di Amazon CloudWatch per attivare eventi di dimensionamento per il tuo carico di lavoro. Ti consigliamo di utilizzare i modelli di avvio, che consentono di accedere alle funzionalità e ai miglioramenti più recenti. Non tutte le funzionalità Auto Scaling sono disponibili quando si utilizzano le configurazioni di avvio. Ad esempio, non è possibile creare un gruppo Auto Scaling che avvii istanze spot e on demand o che specifichi più tipi di istanze. È necessario utilizzare un modello di avvio per configurare queste funzionalità. Quando utilizzi i modelli di avvio, ti consigliamo di modificare ciascuno di essi. Con il controllo delle versioni dei modelli di avvio, puoi creare un sottoinsieme del set completo di parametri. Quindi, puoi riutilizzarlo per creare altre versioni dello stesso modello di avvio.

Puoi utilizzare AWS Auto Scaling o incorporare il dimensionamento nel codice con API o SDK AWS. Ciò riduce i costi complessivi del carico di lavoro rimuovendo i costi operativi dall'apportare manualmente modifiche al tuo ambiente; le modifiche possono essere apportate molto più rapidamente. In questo modo, inoltre, il carico di lavoro viene adattato alla domanda in qualsiasi momento. Per seguire questa best practice e fornire risorse in modo dinamico all'organizzazione, è necessario comprendere il dimensionamento orizzontale e verticale in Cloud AWS e la natura delle applicazioni in esecuzione sulle istanze Amazon EC2. È meglio che il team di Cloud Financial Management collabori con i team tecnici per seguire questa best practice.

Elastic Load Balancing (Elastic Load Balancing) consente di ricalibrare le risorse distribuendo la domanda su più risorse. Utilizzando ASG e Elastic Load Balancing, puoi gestire le richieste in arrivo ottimizzando l'instradamento del traffico in modo che nessuna istanza venga sovraccaricata in un gruppo Auto Scaling. Le richieste vengono distribuite tra tutti gli obiettivi di un gruppo target in modalità Round Robin, senza tenere conto della capacità o dell'utilizzo.

Le metriche tipiche possono essere metriche standard di Amazon EC2, ad esempio l'utilizzo della CPU, la velocità di trasmissione effettiva della rete e la latenza di richiesta/risposta osservata da Elastic Load Balancing. Quando possibile, è consigliabile utilizzare un parametro indicativo dell'esperienza del cliente, in genere si tratta di un parametro personalizzato che potrebbe avere origine dal codice dell'applicazione all'interno del carico di lavoro. Per capire come soddisfare la domanda in modo dinamico in questo documento, Auto Scaling verrà suddiviso in due categorie (modello di fornitura basata sulla domanda e modello di fornitura basata sul tempo) e verrà approfondito ciascun modello.

Fornitura basata sulla domanda: sfrutta l'elasticità del cloud per fornire risorse in grado di soddisfare la domanda in continua evoluzione facendo riferimento allo stato della domanda quasi in tempo reale. Per la fornitura basata sulla domanda, utilizza API o funzionalità dei servizi per modificare in modo programmatico la quantità di risorse del cloud nella tua architettura. Ciò ti consente di dimensionare i componenti nella tua architettura e aumentare il numero di risorse durante i picchi di domanda per mantenere le prestazioni, nonché diminuire la capacità quando la domanda cala in modo da ridurre i costi.

Diagramma che descrive le policy di dimensionamento basato sulla domanda, come il dimensionamento semplice/graduale e il monitoraggio degli obiettivi.

Policy di dimensionamento dinamico basato sulla domanda

  • Dimensionamento semplice/graduale: monitora le metriche e aggiunge/rimuove le istanze secondo i passaggi definiti manualmente dai clienti.

  • Monitoraggio degli obiettivi: meccanismo di controllo simile a un termostato che aggiunge o rimuove automaticamente le istanze per mantenere le metriche in base a un obiettivo definito dal cliente.

Quando prevedi di usare una strategia basata sulla domanda in un progetto, tieni presenti due considerazioni principali. In primo luogo, devi capire con quale velocità è necessario predisporre le nuove risorse. In secondo luogo, devi capire che la dimensione del margine tra domanda e risorse fornite cambierà. Devi prepararti ad affrontare le variazioni nella domanda, nonché le risorse insufficienti.

Fornitura basata sul tempo: una strategia basata sul tempo allinea la capacità delle risorse alla domanda, che è prevedibile o ben definita nel tempo. In genere questa strategia non dipende dai livelli di utilizzo delle risorse. Una strategia basata sul tempo assicura che le risorse siano disponibili nel momento esatto in cui vengono richieste e possano essere fornite senza ritardi dovuti alle procedure di avvio e ai controlli di sistema o di coerenza. Attraverso una strategia basata sul tempo si possono fornire risorse aggiuntive o incrementare la capacità nei periodi più intensi.

Diagramma che descrive le policy di dimensionamento basato sul tempo, come il dimensionamento programmato e predittivo.

Policy di dimensionamento basato sul tempo

Puoi utilizzare il dimensionamento automatico pianificato e predittivo per implementare un approccio basato sul tempo. I carichi di lavoro possono essere programmati per eseguire il dimensionamento in determinati momenti (ad esempio, all'inizio dell'orario di lavoro), garantendo quindi la disponibilità delle risorse all'arrivo degli utenti on demand. Il dimensionamento predittivo utilizza modelli per dimensionare orizzontalmente, mentre il dimensionamento pianificato utilizza tempi predefiniti per dimensionare orizzontalmente. Puoi anche utilizzare la strategia di selezione del tipo di istanza basata sugli attributi (ABS) nei gruppi Auto Scaling che consenta di esprimere i requisiti dell'istanza come un set di attributi, ad esempio vCPU, memoria e spazio di archiviazione. È possibile utilizzare automaticamente i tipi di istanza di nuova generazione quando vengono rilasciati e accedere a una gamma più ampia di capacità con le istanze spot di Amazon EC2. Il parco istanze Amazon EC2 e Amazon EC2 Auto Scaling selezionano e avviano istanze che corrispondono agli attributi specificati, eliminando la necessità di scegliere manualmente i tipi di istanza.

Puoi anche utilizzare API e SDK AWS e AWS CloudFormation per predisporre e ritirare automaticamente interi ambienti quando ne hai bisogno. Questa strategia risulta particolarmente adatta per gli ambienti di sviluppo o di prova che operano solo in determinati orari di lavoro o periodi di tempo. Puoi usare le API per dimensionare le risorse all'interno di un ambiente (dimensionamento verticale). Ad esempio, potresti dimensionare verticalmente un carico di lavoro di produzione modificando la dimensione o la classe dell'istanza. Ciò è possibile arrestando e avviando l'istanza e selezionando una dimensione o classe diversa. Questa tecnica può essere applicata anche ad altre risorse, come gli Elastic Volumes Amazon EBS, che possono essere modificati per aumentarne le dimensioni, regolarne le prestazioni (IOPS) o modificare il tipo di volume durante l'utilizzo.

Quando prevedi una strategia basata sul tempo in un progetto, tieni presenti due considerazioni principali. In primo luogo, che livello di coerenza presenta il modello di utilizzo? In secondo luogo, qual è l'impatto se il modello cambia? Puoi migliorare l'accuratezza delle previsioni monitorando i tuoi carichi di lavoro e utilizzando la business intelligence. Se noti cambiamenti significativi nel modello di utilizzo, puoi modificare i tempi per assicurarti che la copertura sia fornita.

Passaggi dell'implementazione

  • Configura il dimensionamento pianificato: per le variazioni prevedibili della domanda, il dimensionamento basato sul tempo può fornire il numero corretto di risorse in modo tempestivo. Inoltre è utile se la creazione e la configurazione delle risorse non sono abbastanza veloci da rispondere alle variazioni della domanda. Utilizzando l'analisi del carico di lavoro, configura il dimensionamento pianificato utilizzando AWS Auto Scaling. Per configurare la pianificazione basata sul tempo, è possibile utilizzare il dimensionamento predittivo del dimensionamento pianificato per aumentare il numero di istanze Amazon EC2 nei gruppi Auto Scaling in anticipo in base alle variazioni di carico previste o prevedibili.

  • Configura il dimensionamento predittivo: il dimensionamento predittivo consente di aumentare il numero di istanze Amazon EC2 del gruppo Auto Scaling in anticipo rispetto agli schemi giornalieri e settimanali dei flussi di traffico. Se si hanno picchi di traffico regolari e applicazioni che richiedono molto tempo per avviarsi, si dovrebbe prendere in considerazione l'utilizzo del dimensionamento predittivo. Il dimensionamento predittivo può aiutare a scalare più velocemente inizializzando la capacità prima del carico previsto rispetto al solo dimensionamento dinamico, che è di natura reattiva. Ad esempio, se gli utenti iniziano a utilizzare il carico di lavoro all'inizio dell'orario di lavoro e non lo utilizzano dopo l'orario di lavoro, il dimensionamento predittivo può aggiungere capacità prima dell'orario di lavoro, eliminando i ritardi del dimensionamento dinamico per reagire alle variazioni del traffico.

  • Configura il dimensionamento automatico dinamico: per configurare il dimensionamento in base alle metriche del carico di lavoro attivo, usa Auto Scaling. Utilizza l'analisi e configura Auto Scaling per l'avvio sui livelli di risorse corretti e assicurati che il carico di lavoro si ridimensioni nel tempo richiesto. Si può avviare e dimensionare automaticamente un parco istanze on demand e istanze spot all'interno di un singolo gruppo Auto Scaling. Oltre a ricevere sconti per l'utilizzo delle istanze spot, è possibile utilizzare istanze riservate o Savings Plans per ricevere tariffe scontate rispetto al normale prezzo delle istanze on demand. La combinazione di tutti questi fattori consente di ottimizzare i risparmi sui costi delle istanze Amazon EC2 e di determinare il dimensionamento e le prestazioni desiderate per la tua applicazione.

Risorse

Documenti correlati:

Video correlati:

Esempi correlati: