

# REL07-BP01 Utilizzo dell’automazione per l’acquisizione o il dimensionamento delle risorse
<a name="rel_adapt_to_changes_autoscale_adapt"></a>

 La definizione, il provisioning e la gestione programmatici dell’infrastruttura e delle risorse sono una pietra miliare dell’affidabilità nel cloud. L’automazione aiuta a semplificare il provisioning delle risorse, facilitare implementazioni coerenti e sicure e scalare le risorse nell’intera infrastruttura. 

 **Risultato desiderato**: gestisci infrastructure as code (IaC). Il codice dell’infrastruttura viene definito e gestito nei sistemi di controllo delle versioni (VCS). Deleghi il provisioning delle risorse AWS a meccanismi automatici e sfrutti i servizi gestiti come Application Load Balancer (ALB), Network Load Balancer (NLB) e i gruppi Auto Scaling. Il provisioning delle risorse si avvale di pipeline di integrazione continua/distribuzione continua (CI/CD) in modo che le modifiche al codice avviino automaticamente gli aggiornamenti delle risorse, inclusi gli aggiornamenti delle configurazioni di dimensionamento automatico. 

 **Anti-pattern comuni:** 
+  Distribuisci le risorse manualmente utilizzando la riga di comando o la Console di gestione AWS (conosciuto anche come *ClickOps*). 
+  Accoppi strettamente i componenti o le risorse dell’applicazione, creando di conseguenza architetture poco flessibili. 
+  Implementi policy di dimensionamento rigide che non si adattano ai requisiti aziendali in evoluzione, ai modelli di traffico o ai nuovi tipi di risorse. 
+  Esegui la stima manuale della capacità di soddisfare la domanda prevista. 

 **Vantaggi della definizione di questa best practice**: l’infrastructure as code (IaC) consente di definire l’infrastruttura a livello di programmazione. Questo aiuta a gestire le modifiche all’infrastruttura attraverso lo stesso ciclo di vita dello sviluppo software delle modifiche all’applicazione, favorendo la coerenza e la ripetibilità e riducendo il rischio di attività manuali soggette a errori. Il processo di provisioning e aggiornamento delle risorse può essere semplificato ulteriormente implementando IaC con pipeline di distribuzione automatiche. È possibile implementare gli aggiornamenti dell’infrastruttura in modo affidabile ed efficiente, senza bisogno di interventi manuali. Questa agilità è particolarmente importante quando si tratta di scalare le risorse per soddisfare richieste fluttuanti. 

 È possibile ottenere una scalabilità dinamica e automatizzata delle risorse in combinazione con IaC e pipeline di distribuzione. Monitorando le metriche chiave e applicando policy di dimensionamento predefinite, il dimensionamento automatico è in grado di effettuare automaticamente il provisioning o il deprovisioning delle risorse secondo necessità, migliorando le prestazioni e l’efficienza in termini di costi. In questo modo si riduce il potenziale di errori manuali o di ritardi in risposta alle modifiche dei requisiti delle applicazioni o del carico di lavoro. 

 La combinazione di IaC, pipeline di distribuzione automatizzate e dimensionamento automatico consente alle organizzazioni di effettuare il provisioning, l’aggiornamento e il dimensionamento dei propri ambienti in tutta tranquillità. Questa automazione è essenziale per mantenere un’infrastruttura cloud reattiva, resiliente e gestita in modo efficiente. 

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

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

 Per configurare l’automazione con le pipeline CI/CD e infrastructure as code (IaC) per l’architettura AWS, scegli un sistema di controllo delle versioni come Git per archiviare i modelli e la configurazione IaC. Questi modelli possono essere scritti utilizzando strumenti quali [AWS CloudFormation](https://aws.amazon.com/cloudformation/). Per iniziare, definisci i componenti dell’infrastruttura (ad esempio, AWS VPC, gruppi Amazon EC2 Auto Scaling e database Amazon RDS) all’interno di questi modelli. 

 Successivamente, integra questi modelli IaC con una pipeline CI/CD per automatizzare il processo di implementazione. [AWS CodePipeline](https://aws.amazon.com/codepipeline/) fornisce una soluzione AWS nativa senza soluzione di continuità oppure puoi utilizzare altre soluzioni CI/CD di terze parti. Crea una pipeline che si attivi quando vengono apportate modifiche al repository di controllo delle versioni. Configura la pipeline in modo da includere le fasi di lint e validazione dei modelli IaC, distribuisci l’infrastruttura in un ambiente di gestione temporanea, esegui i test automatici e infine distribuisci in produzione. Incorpora le fasi di approvazione ove necessario per mantenere il controllo sulle modifiche. Questa pipeline automatica non solo accelera l’implementazione, ma facilita anche la coerenza e l’affidabilità tra gli ambienti. 

 Configura il dimensionamento automatico di risorse come istanze Amazon EC2, attività Amazon ECS e repliche di database nell’ambiente IaC per garantire aumento e riduzione orizzontale secondo necessità. Questo approccio migliora la disponibilità e le prestazioni delle applicazioni e ottimizza i costi regolando dinamicamente le risorse in base alla domanda. Per un elenco delle risorse supportate, consulta [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) e [AWS Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/what-is-application-auto-scaling.html). 

### Passaggi dell’implementazione
<a name="implementation-steps"></a>

1.  Crea e utilizza un repository del codice sorgente per archiviare il codice che controlla la configurazione dell’infrastruttura. Esegui il commit delle modifiche a questo repository per riflettere eventuali modifiche in corso da apportare. 

1.  Seleziona una soluzione infrastructure as code (IaC) come AWS CloudFormation per mantenere l’infrastruttura aggiornata e rilevare le incoerenze (deviazione) rispetto allo stato previsto. 

1.  Integra la piattaforma IaC con la pipeline CI/CD per automatizzare le implementazioni. 

1.  Determina e raccogli le metriche appropriate per il dimensionamento automatico delle risorse. 

1.  Configura il dimensionamento automatico delle risorse utilizzando policy appropriate per aumentare orizzontalmente e ridurre orizzontalmente le risorse per i componenti del carico di lavoro. Considera l’utilizzo di un dimensionamento pianificato per modelli di utilizzo prevedibili. 

1.  Monitora le implementazioni per rilevare guasti e regressioni. Implementa meccanismi di ripristino dello stato precedente all’interno della piattaforma CI/CD per annullare le modifiche, se necessario. 

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

 **Documenti correlati:** 
+  [AWS Auto Scaling: How Scaling Plans Work](https://docs.aws.amazon.com/autoscaling/plans/userguide/how-it-works.html) 
+  [Marketplace AWS: prodotti che possono essere utilizzati con Auto Scaling](https://aws.amazon.com/marketplace/search/results?searchTerms=Auto+Scaling) 
+  [Managing Throughput Capacity Automatically with DynamoDB Auto Scaling](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AutoScaling.html) 
+  [Uso di un bilanciatore del carico con un gruppo Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) 
+  [What Is AWS Global Accelerator?](https://docs.aws.amazon.com/global-accelerator/latest/dg/what-is-global-accelerator.html) 
+  [What Is Amazon EC2 Auto Scaling?](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) 
+  [Cos’è AWS Auto Scaling?](https://docs.aws.amazon.com/autoscaling/plans/userguide/what-is-aws-auto-scaling.html) 
+  [What is Amazon CloudFront?](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html?ref=wellarchitected) 
+  [What is Amazon Route 53?](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) 
+  [Cos'è l'Elastic Load Balancing?](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) 
+  [Cos’è un Network Load Balancer?](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 
+  [Cos’è un Application Load Balancer?](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) 
+  [Integrating Jenkins with AWS CodeBuild and AWS CodeDeploy](https://aws.amazon.com/blogs/devops/setting-up-a-ci-cd-pipeline-by-integrating-jenkins-with-aws-codebuild-and-aws-codedeploy/) 
+  [Creating a four stage pipeline with AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-four-stage-pipeline.html) 

 **Video correlati:** 
+  [Back to Basics: Deploy Your Code to Amazon EC2](https://www.youtube.com/watch?v=f2wvEQ_sWS8) 
+  [AWS Supports You \| Starting Your Infrastructure as Code Solution Using AWS CloudFormation Templates](https://www.youtube.com/watch?v=bgfx76jr7tA) 
+  [Streamline Your Software Release Process Using AWS CodePipeline](https://www.youtube.com/watch?v=zMa5gTLrzmQ) 
+  [Monitor AWS Resources Using Amazon CloudWatch Dashboards](https://www.youtube.com/watch?v=I7EFLChc07M) 
+  [Create Cross Account & Cross Region CloudWatch Dashboards \| Amazon Web Services](https://www.youtube.com/watch?v=eIUZdaqColg) 