

# COST 9 Come gestisci la domanda e fornisci le risorse?
<a name="w2aac19c13c11b5"></a>

Per avere un carico di lavoro con costo e prestazioni bilanciate, assicurati che venga utilizzato tutto ciò per cui paghi ed evita le istanze molto sottoutilizzate. Un parametro di utilizzo distorto, in qualsiasi delle suddette direzioni, ha un impatto negativo sull'organizzazione, sia per i costi operativi (basse prestazioni a causa di un utilizzo eccessivo) che per le spese inerenti a AWS sprecate (a causa di un provisioning eccessivo).

**Topics**
+ [COST09-BP01 Analisi della domanda del carico di lavoro](cost_manage_demand_resources_cost_analysis.md)
+ [COST09-BP02 Implementazione di un buffer o del throttling per gestire la domanda](cost_manage_demand_resources_buffer_throttle.md)
+ [COST09-BP03 Fornitura dinamica delle risorse](cost_manage_demand_resources_dynamic.md)

# COST09-BP01 Analisi della domanda del carico di lavoro
<a name="cost_manage_demand_resources_cost_analysis"></a>

 Analizza la domanda del carico di lavoro nel tempo. Verifica che l'analisi copra l'andamento stagionale e rappresenti accuratamente le condizioni operative per l'intera durata del carico di lavoro. L'attività di analisi deve riflettere i potenziali benefici, ad esempio che il tempo speso sia proporzionale al costo del carico di lavoro. 

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

## Guida all'implementazione
<a name="implementation-guidance"></a>

è importante conoscere i requisiti del carico di lavoro. I requisiti dell'organizzazione devono indicare i tempi di risposta del carico di lavoro per le richieste. Il tempo di risposta può essere utilizzato per determinare se la domanda è gestita o se l'offerta di risorse cambierà per soddisfare la domanda.

L'analisi deve includere la prevedibilità e la ripetibilità della domanda, la velocità di variazione della domanda e la quantità di variazione della domanda. Assicurati che l'analisi venga eseguita per un periodo sufficientemente lungo da incorporare qualsiasi variazione stagionale, ad esempio l'elaborazione di fine mese o i picchi legati alle festività.

Assicurati che le attività di analisi siano commensurate ai potenziali vantaggi dell'implementazione del dimensionamento. Osserva il costo totale previsto del componente, ed eventuali aumenti o riduzioni di utilizzo e costi durante il ciclo di vita del carico di lavoro.

Puoi utilizzare [AWS Cost Explorer](https://aws.amazon.com/aws-cost-management/aws-cost-explorer/) oppure [Amazon Quick](https://aws.amazon.com/quicksight/) con AWS Cost and Usage Report (CUR) o i log dell'applicazione per eseguire un'analisi visiva della domanda del carico di lavoro.

**Passaggi dell'implementazione**
+ ** Analizza i dati del carico di lavoro esistenti: **Analizza i dati provenienti dal carico di lavoro esistente, dalle versioni precedenti del carico di lavoro o dai modelli di utilizzo previsti. Utilizza i file di log e i dati di monitoraggio per ottenere informazioni su come i clienti utilizzano il carico di lavoro. I parametri tipici sono la domanda effettiva in termini di richieste al secondo, le volte in cui il tasso delle richieste cambia o si trova a livelli diversi e il tasso di variazione delle richieste. Assicurati di analizzare un ciclo completo del carico di lavoro, raccogliendo dati per eventuali variazioni stagionali, ad esempio eventi di fine mese o di fine anno. L'attività che emerge dall'analisi deve riflettere le caratteristiche del carico di lavoro. L'impegno maggiore dovrebbe riguardare i carichi di lavoro di alto valore che presentano le maggiori variazioni della domanda. Il minimo impegno dovrebbe riguardare carichi di lavoro di basso valore che hanno variazioni minime nella domanda. I parametri più comuni per il valore sono rischio, conoscenza del marchio, ricavi o costi del carico di lavoro. 
+ ** Esegui previsioni dell'influenza dei fattori esterni: **Incontra i membri del team di tutta l'organizzazione che possono influenzare o modificare la domanda del carico di lavoro. I team più comuni sono le vendite, il marketing o il business development. Collabora con loro per conoscere i cicli secondo cui operano e se ci sono eventi che potrebbero modificare la domanda del carico di lavoro. Prevedi la richiesta del carico di lavoro con questi dati. 

## Risorse
<a name="resources"></a>

 **Documenti correlati:** 
+  [AWS Auto Scaling](https://aws.amazon.com/autoscaling/) 
+  [AWS Instance Scheduler](https://aws.amazon.com/answers/infrastructure-management/instance-scheduler/) 
+  [Nozioni di base su Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) 
+ [AWS Cost Explorer](https://aws.amazon.com/aws-cost-management/aws-cost-explorer/)
+ [Amazon Quick](https://aws.amazon.com/quicksight/)

# COST09-BP02 Implementazione di un buffer o del throttling per gestire la domanda
<a name="cost_manage_demand_resources_buffer_throttle"></a>

 Buffering e throttling modificano la domanda sul carico di lavoro, attenuando eventuali picchi. Implementa il throttling quando i client eseguono nuovi tentativi. Implementa il buffering per archiviare la richiesta e rinviare l'elaborazione a un secondo momento. Verifica che le esecuzioni di throttling e buffering siano progettate in modo che i client ricevano una risposta nel tempo richiesto. 

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

## Guida all'implementazione
<a name="implementation-guidance"></a>

**Throttling:** se l'origine della richiesta dispone di funzionalità di ripetizione dei tentativi, è possibile implementare il throttling. Il throttling indica alla sorgente che, se non è in grado di soddisfare la richiesta all'ora corrente, dovrebbe riprovare più tardi. La sorgente attenderà per un determinato periodo di tempo e quindi riproverà a effettuare la richiesta. L'implementazione del throttling ha il vantaggio di limitare la quantità massima di risorse e i costi del carico di lavoro. In AWS puoi utilizzare [Amazon API Gateway](https://aws.amazon.com/api-gateway/) per implementare il throttling. Consulta il [whitepaper sul principio dell'affidabilità secondo il Canone di architettura](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/welcome.html) per ulteriori dettagli sull'implementazione del throttling.

**Basato su buffer: **analogamente al throttling, il buffering rinvia l'elaborazione delle richieste, consentendo alle applicazioni eseguite a velocità diverse di comunicare in modo efficace. Un approccio basato sul buffering impiega una coda per l'accettazione dei messaggi (unità di lavoro) dai produttori. I messaggi vengono letti ed elaborati dai consumatori e ciò consente ai messaggi di essere eseguiti alla velocità che soddisfa i requisiti aziendali del consumatore stesso. Non devi preoccuparti del fatto che i produttori debbano gestire i problemi legati al throttling, come la durabilità e la contropressione dei dati (per cui i produttori rallentano per adeguarsi alla velocità dei consumatori).

Su AWS puoi scegliere fra più servizi per l'implementazione di una strategia di buffering. [Amazon Simple Queue Service(Amazon SQS)](https://aws.amazon.com/sqs/) un servizio gestito che offre code che consentono a un singolo consumatore di leggere singoli messaggi. [Amazon Kinesis](https://aws.amazon.com/kinesis/) offre un flusso che consente a più consumatori di leggere gli stessi messaggi.

Durante la progettazione con un approccio basato sul buffering, assicurati di progettare il carico di lavoro per soddisfare la richiesta nel tempo richiesto e di essere in grado di gestire le richieste duplicate per il lavoro.

**Passaggi dell'implementazione**
+ ** Analizza i requisiti del client: **Analizza le richieste del client per determinare se sono in grado di eseguire nuovi tentativi. Per i client che non possono eseguire nuovi tentativi, è necessario implementare i buffer. Analizza la domanda complessiva, la velocità di modifica e il tempo di risposta richiesto per determinare le dimensioni del throttling o del buffer richiesto. 
+ ** Implementa un buffer o il throttling:** Implementa un buffer o un throttling nel carico di lavoro. Una coda come Amazon Simple Queue Service (Amazon SQS) può offrire un buffer ai componenti del carico di lavoro. Amazon API Gateway può fornire una funzionalità di throttling ai componenti del carico di lavoro. 

## Risorse
<a name="resources"></a>

 **Documenti correlati:** 
+  [AWS Auto Scaling](https://aws.amazon.com/autoscaling/) 
+  [AWS Instance Scheduler](https://aws.amazon.com/answers/infrastructure-management/instance-scheduler/) 
+  [Amazon API Gateway](https://aws.amazon.com/api-gateway/) 
+  [Amazon Simple Queue Service](https://aws.amazon.com/sqs/) 
+  [Nozioni di base su Amazon SQS](https://aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) 
+  [Amazon Kinesis](https://aws.amazon.com/kinesis/) 

# COST09-BP03 Fornitura dinamica delle risorse
<a name="cost_manage_demand_resources_dynamic"></a>

 Le risorse sono fornite in modo pianificato. La pianificazione può essere basata sulla domanda, ad esempio tramite l'auto scaling, oppure sul tempo, quando la domanda è prevedibile e le risorse sono fornite in base al tempo. Questi metodi comportano il minor numero possibile di sovra o sotto-provisioning. 

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

## Guida all'implementazione
<a name="implementation-guidance"></a>

Puoi utilizzare [AWS Auto Scaling](https://aws.amazon.com/autoscaling/)o incorporare il dimensionamento nel codice con [API o SDK AWS](https://aws.amazon.com/developer/tools/). Ciò riduce i costi complessivi del carico di lavoro rimuovendo i costi operativi dall'apportare manualmente modifiche al tuo ambiente e può essere eseguito molto più rapidamente. In questo modo è possibile garantire che le risorse del carico di lavoro soddisfino al meglio la domanda, in qualsiasi momento.

**Fornitura basata sulla domanda:** sfrutta l'elasticità del cloud per fornire risorse in grado di soddisfare le mutevoli esigenze. Sfrutta API o funzionalità dei servizi per modificare in modo programmatico e dinamico la quantità di risorse del cloud nella tua architettura. Ciò ti consente di dimensionare i componenti nella tua architettura e aumentare automaticamente 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.

[AWS Auto Scaling](https://aws.amazon.com/autoscaling/) ti aiuta a regolare la capacità per mantenere prestazioni stabili e prevedibili al minor costo possibile. Si tratta di un servizio completamente gestito e gratuito che si integra con istanze e serie di istanze Spot Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Service (Amazon ECS), Amazon DynamoDB e Amazon Aurora.

Auto Scaling fornisce il rilevamento automatico delle risorse per aiutare a trovare risorse nel carico di lavoro che possono essere configurate, dispone di strategie di dimensionamento integrate per ottimizzare le prestazioni, i costi o un equilibrio tra i due e fornisce il dimensionamento predittivo per aiutare a risolvere i picchi ricorrenti con regolarità.

Auto Scaling può implementare il ridimensionamento manuale, programmato o in base alla domanda. Puoi anche utilizzare le metriche e gli allarmi di [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) per attivare eventi di dimensionamento per il tuo carico di lavoro. I parametri tipici possono essere parametri standard di Amazon EC2, ad esempio l'utilizzo della CPU, il throughput di rete e la latenza di richiesta/risposta osservata da [Elastic Load Balancing(ELB) ](https://aws.amazon.com/elasticloadbalancing/). 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.

Quando prevedi 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.

[ELB](https://aws.amazon.com/elasticloadbalancing/) consente di ricalibrare le risorse distribuendo la domanda su più risorse. Man mano che implementi altre risorse, le aggiungi al load balancer per soddisfare la domanda. Elastic Load Balancing dispone di supporto per istanze Amazon EC2, container, indirizzi IP e funzioni AWS Lambda.

**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 puoi fornire risorse aggiuntive o incrementare la capacità nei periodi più intensi.

Puoi utilizzare Auto Scaling pianificato per implementare un approccio in base al 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.

Puoi anche sfruttare [API e SDK AWS](https://aws.amazon.com/developer/tools/) e [AWS CloudFormation](https://aws.amazon.com/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 interrompendo 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 Elastic Block Store (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 la pianificazione in base al tempo: **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. 
+ ** Configura il dimensionamento automatico: **Per configurare il dimensionamento in base ai parametri del carico di lavoro attivi, utilizza Amazon Auto Scaling. Utilizza l'analisi e configura l'auto scaling per attivare i livelli di risorse corretti e assicurati che il carico di lavoro si ridimensioni nel tempo richiesto. 

## Risorse
<a name="resources"></a>

 **Documenti correlati:** 
+  [AWS Auto Scaling](https://aws.amazon.com/autoscaling/) 
+  [AWS Instance Scheduler](https://aws.amazon.com/answers/infrastructure-management/instance-scheduler/) 
+  [Nozioni di base su Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/GettingStartedTutorial.html) 
+  [Nozioni di base su Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) 
+  [Dimensionamento programmato per Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/schedule_time.html) 