

# OPS 5 In che modo riduci i difetti, favorisci la correzione e migliori il flusso nella produzione?
<a name="w2aac19b5b7b7"></a>

 Adotta prassi che migliorino il flusso delle modifiche nella produzione, che consentano il refactoring e il feedback veloce su qualità e correzione di errori. Tali prassi accelerano l'ingresso in produzione delle modifiche vantaggiose, limitano i problemi distribuiti e consentono una rapida identificazione e risoluzione dei problemi introdotti attraverso le attività di distribuzione. 

**Topics**
+ [OPS05-BP01 Utilizzo del controllo delle versioni](ops_dev_integ_version_control.md)
+ [OPS05-BP02 Test e convalida delle modifiche](ops_dev_integ_test_val_chg.md)
+ [OPS05-BP03 Utilizzo di sistemi di gestione delle configurazioni](ops_dev_integ_conf_mgmt_sys.md)
+ [OPS05-BP04 Utilizzo di sistemi di gestione della compilazione e implementazione](ops_dev_integ_build_mgmt_sys.md)
+ [OPS05-BP05 Esecuzione della gestione delle patch](ops_dev_integ_patch_mgmt.md)
+ [OPS05-BP06 Condivisione degli standard di progettazione](ops_dev_integ_share_design_stds.md)
+ [OPS05-BP07 Implementazione di prassi per migliorare la qualità del codice](ops_dev_integ_code_quality.md)
+ [OPS05-BP08 Utilizzo di più ambienti](ops_dev_integ_multi_env.md)
+ [OPS05-BP09 Applicazione di modifiche frequenti, minime e reversibili](ops_dev_integ_freq_sm_rev_chg.md)
+ [OPS05-BP10 Automazione completa dell'integrazione e della distribuzione](ops_dev_integ_auto_integ_deploy.md)

# OPS05-BP01 Utilizzo del controllo delle versioni
<a name="ops_dev_integ_version_control"></a>

 Utilizza il controllo delle versioni per abilitare il monitoraggio di modifiche e rilasci. 

 Molti servizi AWS offrono funzionalità di controllo delle versioni. Utilizza una revisione o un sistema di controllo del codice sorgente come [AWS CodeCommit](https://aws.amazon.com/codecommit/) per gestire il codice e altri artefatti, come i modelli [AWS CloudFormation](https://aws.amazon.com/cloudformation/) controllati dalla versione della tua infrastruttura. 

 **Anti-pattern comuni:** 
+  Hai sviluppato e archiviato il codice sulla workstation. Si è verificato un errore di storage non recuperabile sulla workstation in cui il codice è andato perso. 
+  Dopo aver sovrascritto il codice esistente con le modifiche, riavvii l'applicazione e non è più utilizzabile. Non è possibile ripristinare la modifica. 
+  Hai un blocco di scrittura su un file di report che deve essere modificato da altri utenti. Ti contattano per chiederti di smettere di utilizzarlo in modo che possano completare le loro attività. 
+  Il team di ricerca ha lavorato a un'analisi dettagliata che definirà il tuo lavoro futuro. Qualcuno ha salvato accidentalmente la lista della spesa nel report finale. Non puoi ripristinare la modifica e dovrai ricreare il report. 

 **Vantaggi dell'adozione di questa best practice:** Grazie alle funzionalità di controllo delle versioni, puoi ripristinare facilmente gli stati validi noti, le versioni precedenti e limitare il rischio di perdita degli asset. 

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

## Guida all'implementazione
<a name="implementation-guidance"></a>
+  Utilizzo del controllo delle versioni: mantieni gli asset in repository con controllo delle versioni. In questo modo si supporta il monitoraggio delle modifiche, la distribuzione di nuove versioni, il rilevamento delle modifiche apportate alle versioni esistenti e il ripristino delle versioni precedenti, ad esempio il rollback a uno stato corretto noto in caso di errore. Integra nelle tue procedure le funzionalità di controllo delle versioni dei sistemi di gestione delle configurazioni. 
  +  [Introduzione ad AWS CodeCommit](https://youtu.be/46PRLMW8otg) 
  +  [What is AWS CodeCommit? (Che cos'è AWS CodeCommit?)](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) 

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

 **Documenti correlati:** 
+  [What is AWS CodeCommit? (Che cos'è AWS CodeCommit?)](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) 

 **Video correlati:** 
+  [Introduzione ad AWS CodeCommit](https://youtu.be/46PRLMW8otg) 

# OPS05-BP02 Test e convalida delle modifiche
<a name="ops_dev_integ_test_val_chg"></a>

 Testa e convalida le modifiche per limitare e rilevare gli errori. Automatizza il testing per ridurre gli errori causati dai processi manuali e il livello di impegno richiesto per il test. 

 Molti servizi AWS offrono funzionalità di controllo delle versioni. Utilizza una revisione o un sistema di controllo del codice sorgente come [AWS CodeCommit](https://aws.amazon.com/codecommit/) per gestire il codice e altri artefatti, come i modelli [AWS CloudFormation](https://aws.amazon.com/cloudformation/) controllati dalla versione della tua infrastruttura. 

 **Anti-pattern comuni:** 
+  Distribuisci il tuo nuovo codice alla produzione e i clienti iniziano a chiamare perché la tua applicazione non funziona più. 
+  Applichi nuovi gruppi di sicurezza per migliorare la sicurezza perimetrale. Questo metodo funziona con conseguenze impreviste e gli utenti non sono in grado di accedere alle applicazioni. 
+  Modifichi un metodo richiamato dalla nuova funzione. Anche un'altra funzione dipendeva da tale metodo e non funziona più. Il problema non viene rilevato ed entra in produzione. L'altra funzione non viene richiamata per un certo periodo di tempo e, infine, viene meno in produzione senza alcuna correlazione con la causa. 

 **Vantaggi dell'adozione di questa best practice:** Testando e convalidando le modifiche in anticipo, puoi risolvere i problemi con costi ridotti al minimo e limitare l'impatto sui clienti. Eseguendo il test prima della distribuzione, riduci al minimo la possibilità di errore. 

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

## Guida all'implementazione
<a name="implementation-guidance"></a>
+  Test e convalida delle modifiche: è necessario testare le modifiche e convalidare i risultati in tutte le fasi del ciclo di vita, ad esempio sviluppo, test e produzione. Utilizza i risultati dei test per confermare le nuove funzionalità e ridurre il rischio e l'impatto delle distribuzioni non riuscite. Automatizza i test e la convalida per assicurare la coerenza della revisione, ridurre gli errori causati dai processi manuali e ridurre il livello di impegno richiesto. 
  +  [What is AWS CodeBuild? (Che cos'è AWS CodeBuild?)](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
  +  [Supporto della creazione locale per AWS CodeBuild](https://aws.amazon.com/blogs/devops/announcing-local-build-support-for-aws-codebuild/) 

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

 **Documenti correlati:** 
+  [Strumenti per gli sviluppatori di AWS](https://aws.amazon.com/products/developer-tools/) 
+  [Supporto della creazione locale per AWS CodeBuild](https://aws.amazon.com/blogs/devops/announcing-local-build-support-for-aws-codebuild/) 
+  [What is AWS CodeBuild? (Che cos'è AWS CodeBuild?)](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 

# OPS05-BP03 Utilizzo di sistemi di gestione delle configurazioni
<a name="ops_dev_integ_conf_mgmt_sys"></a>

 L'utilizzo di sistemi di gestione delle configurazioni permette di effettuare modifiche alle stesse e tenerne traccia. Questi sistemi riducono gli errori causati dai processi manuali e il livello di impegno richiesto per la distribuzione delle modifiche. 

 Durante l'inizializzazione di una risorsa, la gestione delle configurazioni statiche consente di impostare valori che dovrebbero rimanere coerenti per tutta la vita utile della risorsa. Ne sono alcuni esempi l'azione di configurare un server web o applicativo su un'istanza oppure di definire la configurazione di un servizio AWS nella [Console di gestione AWS](https://docs.aws.amazon.com/awsconsolehelpdocs/index.html) o tramite la [AWS CLI](https://aws.amazon.com/cli/). 

 Al momento dell'inizializzazione, la gestione delle configurazioni dinamiche consente di impostare valori che possono cambiare nel corso della vita utile di una risorsa. Ad esempio è possibile impostare un interruttore funzionale in grado di abilitare una funzionalità nel codice tramite una modifica della configurazione, oppure modificare il livello di dettaglio del registro durante un incidente per acquisire un maggior numero di dati e cambiarlo in seguito per tornare al livello di dettaglio precedente, risparmiando così in numero di registri e nei relativi costi. 

 Se sulle applicazioni in esecuzione su istanze, container, funzioni serverless o dispositivi sono attive configurazioni dinamiche, è possibile utilizzare [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html) per gestirle e distribuirle fra i diversi ambienti. 

 In AWS, è possibile utilizzare [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) per monitorare in modo continuo le configurazioni delle risorse AWS [tra i diversi account e regioni](https://docs.aws.amazon.com/config/latest/developerguide/aggregate-data.html). Questa soluzione consente di tenere traccia della cronologia delle configurazioni, di capire che effetto avrebbe la modifica di una configurazione sulle altre risorse e verificarle rispetto alle configurazioni previste o desiderate tramite [Regole di AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) e [i pacchetti di conformità di AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/conformance-packs.html). 

 In AWS, puoi creare pipeline di integrazione continua/distribuzione continua (CI/CD) utilizzando servizi come gli [Strumenti per gli sviluppatori di AWS](https://aws.amazon.com/products/developer-tools/) (ad esempio, AWS CodeCommit, [AWS CodeBuild](https://aws.amazon.com/codebuild/), [AWS CodePipeline](https://aws.amazon.com/codepipeline/), [AWS CodeDeploy](https://aws.amazon.com/codedeploy/)e [AWS CodeStar](https://aws.amazon.com/codestar/)). 

 Mantieni un calendario delle modifiche e verifica quando sono pianificate attività o eventi aziendali significativi che potrebbero essere influenzati dall'implementazione del cambiamento. Regola le attività per gestire i rischi in funzione dei vari eventi. [Il calendario delle modifiche di AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar.html) fornisce un meccanismo per documentare intervalli di tempo aperti o chiusi alle modifiche e per quale motivo, e per [condividere tali informazioni](https://docs.aws.amazon.com/systems-manager/latest/userguide/change-calendar-share.html) con altri Account AWS. Gli script di AWS Systems Manager Automation possono essere configurati per rispettare lo stato del calendario delle modifiche. 

 [finestre di manutenzione di AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-maintenance.html) possono essere utilizzate per pianificare le prestazioni degli script Run Command o Automation di AWS, delle chiamate AWS Lambda o delle attività di AWS Step Functions in orari specifici. Contrassegna queste attività nel calendario delle modifiche in modo che possano essere incluse nella tua valutazione. 

 **Anti-pattern comuni:** 
+  Aggiorni manualmente la configurazione del server Web all'interno del parco istanze e un certo numero di server non risponde a causa di errori di aggiornamento. 
+  Aggiorni manualmente il parco istanze del server applicazioni nel corso di molte ore. L'incoerenza nella configurazione durante la modifica causa comportamenti imprevisti. 
+  Qualcuno ha aggiornato i tuoi gruppi di sicurezza e i server Web non sono più accessibili. Senza sapere cosa è stato modificato, dedichi molto tempo a esaminare il problema prolungando il tempo necessario per il ripristino. 

 **Vantaggi dell'adozione di questa best practice:** L'adozione di sistemi di gestione della configurazione riduce il livello di impegno necessario per apportare e tenere traccia delle modifiche e la frequenza degli errori causati dalle procedure manuali. 

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

## Guida all'implementazione
<a name="implementation-guidance"></a>
+  Utilizzo dei sistemi di gestione delle configurazioni: utilizza i sistemi di gestione delle configurazioni per tenere traccia e implementare le modifiche, ridurre gli errori causati dai processi manuali e ridurre il livello di impegno richiesto. 
  +  [Gestione della configurazione delle infrastrutture](https://aws.amazon.com/answers/configuration-management/aws-infrastructure-configuration-management/) 
  +  [AWS Config](https://aws.amazon.com/config/) 
  +  [What is AWS Config? (Che cos'è AWS Config?)](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) 
  +  [Introduzione ad AWS CloudFormation](https://youtu.be/Omppm_YUG2g) 
  +  [Che cos'è AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
  +  [AWS OpsWorks](https://aws.amazon.com/opsworks/) 
  +  [What is AWS OpsWorks? (Che cos'è AWS OpsWorks?)](https://docs.aws.amazon.com/opsworks/latest/userguide/welcome.html) 
  +  [Introduzione ad AWS Elastic Beanstalk](https://youtu.be/SrwxAScdyT0) 
  +  [Che cos'è AWS Elastic Beanstalk?](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html) 

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

 **Documenti correlati:** 
+  [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html) 
+  [Strumenti per gli sviluppatori di AWS](https://aws.amazon.com/products/developer-tools/) 
+  [AWS OpsWorks](https://aws.amazon.com/opsworks/) 
+  [Il calendario delle modifiche di AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-change-calendar.html) 
+  [finestre di manutenzione di AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-maintenance.html) 
+  [Gestione della configurazione delle infrastrutture](https://aws.amazon.com/answers/configuration-management/aws-infrastructure-configuration-management/) 
+  [Che cos'è AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
+  [What is AWS Config? (Che cos'è AWS Config?)](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) 
+  [Che cos'è AWS Elastic Beanstalk?](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html) 
+  [What is AWS OpsWorks? (Che cos'è AWS OpsWorks?)](https://docs.aws.amazon.com/opsworks/latest/userguide/welcome.html) 

 **Video correlati:** 
+  [Introduzione ad AWS CloudFormation](https://youtu.be/Omppm_YUG2g) 
+  [Introduzione ad AWS Elastic Beanstalk](https://youtu.be/SrwxAScdyT0) 

# OPS05-BP04 Utilizzo di sistemi di gestione della compilazione e implementazione
<a name="ops_dev_integ_build_mgmt_sys"></a>

 Utilizza sistemi di gestione della creazione e distribuzione Questi sistemi riducono gli errori causati dai processi manuali e il livello di impegno richiesto per la distribuzione delle modifiche. 

 In AWS, puoi compilare pipeline di integrazione continua/implementazione continua (CI/CD) utilizzando servizi come gli [Strumenti per sviluppatori in AWS](https://aws.amazon.com/products/developer-tools/) (ad esempio, AWS CodeCommit, [AWS CodeBuild](https://aws.amazon.com/codebuild/), [AWS CodePipeline](https://aws.amazon.com/codepipeline/), [AWS CodeDeploy](https://aws.amazon.com/codedeploy/)e [AWS CodeStar](https://aws.amazon.com/codestar/)). 

 **Anti-pattern comuni:** 
+  Dopo aver compilato il codice nel sistema di sviluppo, copi il file eseguibile nei sistemi di produzione e questo non si avvia. I file di log locali indicano che l'operazione è risultata impossibile a causa della mancanza di dipendenze. 
+  Hai creato l'applicazione con nuove funzionalità nel tuo ambiente di sviluppo e fornisci il codice al controllo qualità. Il controllo qualità non riesce perché mancano asset statici. 
+  Venerdì, dopo un notevole sforzo, hai creato l'applicazione manualmente nel tuo ambiente di sviluppo, incluse le nuove funzionalità codificate. Lunedì non sei in grado di ripetere le fasi che ti hanno consentito di creare correttamente la tua applicazione. 
+  Esegui i test creati per la nuova versione. Quindi passi la settimana successiva a configurare un ambiente di test ed eseguire tutti i test di integrazione esistenti seguiti dai test delle prestazioni. Il nuovo codice ha un impatto inaccettabile sulle prestazioni e deve essere risviluppato e quindi ritestato. 

 **Vantaggi dell'adozione di questa best practice:** Fornendo meccanismi per gestire le attività di compilazione e distribuzione, riduci il livello di impegno necessario per eseguire attività ripetitive, consenti ai membri del team di concentrarsi liberamente sulle loro attività creative di valore elevato e limiti l'introduzione di errori derivanti da procedure manuali. 

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

## Guida all'implementazione
<a name="implementation-guidance"></a>
+  Utilizzo di sistemi di gestione della compilazione e implementazione: utilizza sistemi di gestione della compilazione e implementazione per tenere traccia e implementare le modifiche, ridurre gli errori causati dai processi manuali e ridurre il livello di impegno richiesto. Automatizza completamente la pipeline di integrazione e distribuzione dal check-in del codice fino alle fasi di creazione, test, distribuzione e convalida. In questo modo è possibile ridurre il lead time, aumentare la frequenza delle modifiche e ridurre il livello di impegno richiesto. 
  +  [Che cos'è AWS CodeBuild?](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
  +  [Best practice di integrazione continua per lo sviluppo del software](https://www.youtube.com/watch?v=GEPJ7Lo346A) 
  +  [Slalom: CI/CD per applicazioni serverless su AWS](https://www.youtube.com/watch?v=tEpx5VaW4WE) 
  +  [Introduzione ad AWS CodeDeploy - Sviluppo di software automatizzato con Amazon Web Services](https://www.youtube.com/watch?v=Wx-ain8UryM) 
  +  [Che cos'è AWS CodeDeploy?](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 

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

 **Documenti correlati:** 
+  [Strumenti per sviluppatori in AWS](https://aws.amazon.com/products/developer-tools/) 
+  [Che cos'è AWS CodeBuild?](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
+  [Che cos'è AWS CodeDeploy?](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 

 **Video correlati:** 
+  [Best practice di integrazione continua per lo sviluppo del software](https://www.youtube.com/watch?v=GEPJ7Lo346A) 
+  [Introduzione ad AWS CodeDeploy - Sviluppo di software automatizzato con Amazon Web Services](https://www.youtube.com/watch?v=Wx-ain8UryM) 
+  [Slalom: CI/CD per applicazioni serverless su AWS](https://www.youtube.com/watch?v=tEpx5VaW4WE) 

# OPS05-BP05 Esecuzione della gestione delle patch
<a name="ops_dev_integ_patch_mgmt"></a>

 La gestione delle patch consente di ottenere funzionalità, risolvere problemi e rispettare i requisiti di governance. Automatizza la gestione delle patch per ridurre gli errori causati dai processi manuali e il livello di impegno richiesto per applicare le patch. 

 La gestione delle patch e delle vulnerabilità fa parte delle attività di gestione dei rischi e dei vantaggi. È preferibile disporre di infrastrutture immutabili e distribuire carichi di lavoro in stati noti verificati. Se ciò non è realizzabile, l'applicazione di patch sul posto è l'alternativa. 

 Aggiornare immagini di macchine, immagini di container o, nel caso di Lambda, [runtime personalizzati e librerie aggiuntive](https://docs.aws.amazon.com/lambda/latest/dg/security-configuration.html) per rimuovere le vulnerabilità fa parte della gestione delle patch. È consigliabile gestire gli aggiornamenti alle [Amazon Machine Image](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) (AMI) per immagini Linux o Windows Server utilizzando [EC2 Image Builder](https://aws.amazon.com/image-builder/). Puoi utilizzare [Amazon Elastic Container Registry](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) con la pipeline esistente per [gestire le immagini di Amazon ECS](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_ECS.html) e [gestire le immagini di Amazon EKS](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_EKS.html). AWS Lambda include [caratteristiche di](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) gestione della versione. 

 L'applicazione di patch non deve essere eseguita sui sistemi di produzione senza prima eseguire test in un ambiente sicuro. Le patch devono essere applicate solo se supportano risultati operativi o aziendali. In AWS, è possibile utilizzare [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) per automatizzare il processo di applicazione di patch ai sistemi gestiti e pianificare l'attività utilizzando le [finestre di manutenzione di AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-maintenance.html). 

 **Anti-pattern comuni:** 
+  Ti viene assegnato il compito di applicare tutte le nuove patch di sicurezza entro 2 ore, il che provoca più interruzioni a causa dell'incompatibilità dell'applicazione con le patch. 
+  Una libreria senza patch comporta conseguenze indesiderate in quanto parti sconosciute utilizzano vulnerabilità al suo interno per accedere al carico di lavoro. 
+  L'applicazione di patch agli ambienti per sviluppatori viene eseguita automaticamente senza avvisare gli sviluppatori. Gli sviluppatori ti inviano più reclami perché il loro ambiente non funziona come previsto. 
+  Non hai applicato patch al software pronto all'uso commerciale su un'istanza persistente. Quando hai problemi con il software e contatti il fornitore, questo ti informerà che la versione non è supportata e dovrai applicare le patch a un livello specifico per ricevere assistenza. 
+  Una patch rilasciata di recente per il software di crittografia utilizzato offre miglioramenti significativi in termini di prestazioni. Il sistema privo di patch presenta problemi di prestazioni che rimangono in vigore a causa della mancata applicazione di patch. 

 **Vantaggi dell'adozione di questa best practice:** Stabilendo un processo di gestione delle patch, inclusi i criteri per l'applicazione di patch e la metodologia per la distribuzione tra gli ambienti, sarai in grado di realizzarne i vantaggi e controllarne l'impatto. In questo modo sarà possibile adottare le caratteristiche e le funzionalità desiderate, eliminare i problemi e mantenere la conformità alla governance. Implementa sistemi di gestione delle patch e automazione per ridurre il livello di impegno per distribuire le patch e limitare gli errori causati dai processi manuali. 

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

## Guida all'implementazione
<a name="implementation-guidance"></a>
+  Gestione delle patch: applica patch ai sistemi per correggere gli errori, ottenere le funzionalità o le capacità desiderate e assicurare la conformità alle policy di governance e ai requisiti di supporto del fornitore. Nei sistemi immutabili, distribuisci con il set di patch appropriato per raggiungere il risultato desiderato. Automatizza il meccanismo di gestione delle patch per ridurre il tempo necessario per applicare le patch, ridurre gli errori causati dai processi manuali e il livello di impegno richiesto per applicare le patch. 
  +  [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) 

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

 **Documenti correlati:** 
+  [Strumenti per gli sviluppatori di AWS](https://aws.amazon.com/products/developer-tools/) 
+  [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-patch.html) 

 **Video correlati:** 
+  [CI/CD per applicazioni serverless su AWS](https://www.youtube.com/watch?v=tEpx5VaW4WE) 
+  [Progettare nell'ottica Ops](https://youtu.be/uh19jfW7hw4) 

   **Esempi correlati:** 
+  [Well-Architected Labs - Inventory and Patch Management (Gestione di inventario e patch)](https://wellarchitectedlabs.com/operational-excellence/100_labs/100_inventory_patch_management/) 

# OPS05-BP06 Condivisione degli standard di progettazione
<a name="ops_dev_integ_share_design_stds"></a>

 Condividi le best practice con i team per incrementare la consapevolezza e potenziare al massimo i vantaggi delle attività di sviluppo. 

 In AWS, applicazione, elaborazione, infrastruttura e operazioni possono essere definite e gestite utilizzando metodologie di codice. In questo modo le operazioni di rilascio, condivisione e adozione saranno più semplici. 

 Molti servizi e risorse AWS sono progettati per essere condivisi tra account, mettendo prodotti e conoscenze a disposizione di tutti i team. Ad esempio, puoi condividere repository [CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/cross-account.html) , [Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-permissions.html) funzioni, [bucket Amazon S3](https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-s3/)e [AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-explicit.html) con account specifici. 

 Quando pubblichi risorse o aggiornamenti, utilizza Amazon SNS per fornire [notifiche tra account diversi](https://docs.aws.amazon.com/lambda/latest/dg/with-sns-example.html). Gli iscritti possono utilizzare Lambda per ottenere le nuove versioni. 

 Se nella tua organizzazione vengono applicati standard condivisi, è fondamentale che esistano meccanismi per richiedere aggiunte, modifiche ed eccezioni agli standard a supporto delle attività dei team. Senza questa opzione, gli standard diventano un ostacolo per l'innovazione. 

 **Anti-pattern comuni:** 
+  Hai creato il tuo meccanismo di autenticazione utente, così come tutti gli altri team di sviluppo nella tua organizzazione. Gli utenti devono mantenere un set separato di credenziali per ogni parte del sistema cui desiderano accedere. 
+  Hai creato il tuo meccanismo di autenticazione utente, così come tutti gli altri team di sviluppo nella tua organizzazione. All'organizzazione viene assegnato un nuovo requisito di conformità che deve essere soddisfatto. Ogni singolo team di sviluppo deve ora investire le risorse per implementare il nuovo requisito. 
+  Hai creato il tuo layout dello schermo, così come tutti gli altri team di sviluppo nella tua organizzazione. Gli utenti si lamentano della difficoltà di navigazione nelle interfacce incoerenti. 

 **Vantaggi dell'adozione di questa best practice:** Utilizza standard condivisi per supportare l'adozione delle best practice e per massimizzare i vantaggi degli sforzi delle attività di sviluppo laddove gli standard soddisfano i requisiti di più applicazioni o organizzazioni. 

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

## Guida all'implementazione
<a name="implementation-guidance"></a>
+  Condivisione degli standard di progettazione: condividi le best practice esistenti, gli standard di progettazione, gli elenchi di controllo, le procedure operative e i requisiti su linee guida e governance tra i team per ridurre la complessità e sfruttare al massimo i vantaggi derivanti dalle attività di sviluppo. Assicurati che siano state predisposte procedure per richiedere modifiche, aggiunte ed eccezioni agli standard di progettazione a supporto del miglioramento e dell'innovazione continua. Verifica che i team siano a conoscenza del contenuto pubblicato affinché possano avvalersene e limitare ripetizioni e sprechi di energie. 
  +  [Delega dell'accesso all'ambiente AWS](https://www.youtube.com/watch?v=0zJuULHFS6A&t=849s) 
  +  [Condivisione di un repository AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-share-repository.html) 
  +  [Autorizzazione semplificata delle funzioni AWS Lambda](https://aws.amazon.com/blogs/compute/easy-authorization-of-aws-lambda-functions/) 
  +  [Condivisione di un'AMI con Account AWS specifici](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-explicit.html) 
  +  [Condivisione più rapida dei modelli con un URL di AWS CloudFormation Designer](https://aws.amazon.com/blogs/devops/speed-template-sharing-with-an-aws-cloudformation-designer-url/) 
  +  [Utilizzo di AWS Lambda con Amazon SNS](https://docs.aws.amazon.com/lambda/latest/dg/with-sns-example.html) 

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

 **Documenti correlati:** 
+  [Autorizzazione semplificata delle funzioni AWS Lambda](https://aws.amazon.com/blogs/compute/easy-authorization-of-aws-lambda-functions/) 
+  [Condivisione di un repository AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-share-repository.html) 
+  [Condivisione di un'AMI con Account AWS specifici](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-explicit.html) 
+  [Condivisione più rapida dei modelli con un URL di AWS CloudFormation Designer](https://aws.amazon.com/blogs/devops/speed-template-sharing-with-an-aws-cloudformation-designer-url/) 
+  [Utilizzo di AWS Lambda con Amazon SNS](https://docs.aws.amazon.com/lambda/latest/dg/with-sns-example.html) 

 **Video correlati:** 
+  [Delega dell'accesso all'ambiente AWS](https://www.youtube.com/watch?v=0zJuULHFS6A&t=849s) 

# OPS05-BP07 Implementazione di prassi per migliorare la qualità del codice
<a name="ops_dev_integ_code_quality"></a>

 Implementa prassi per migliorare la qualità del codice e ridurre al minimo i difetti, ad esempio sviluppo basato su test, revisioni del codice e adozione di standard. 

 In AWS è possibile integrare servizi come [Amazon CodeGuru](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) nella pipeline per identificare [automaticamente possibili problemi legati al codice e alla sicurezza](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/how-codeguru-reviewer-works.html) tramite analisi del programma e machine learning. CodeGuru fornisce consigli su come implementare le best pratice di AWS per affrontare tali problemi. 

 **Anti-pattern comuni:** 
+  Per poter testare prima la tua funzionalità, hai deciso di non integrare la libreria di purificazione degli input standard. Dopo i test, esegui il commit del codice, ma dimentichi di completare l'incorporazione della libreria. 
+  Hai poca esperienza con il set di dati che stai elaborando e non sai che questo può presentare dei casi limite. Questi casi limite non sono compatibili con il codice che hai implementato. 

 **Vantaggi dell'adozione di questa best practice:** L'adozione di pratiche per migliorare la qualità del codice ti consente di ridurre al minimo i problemi di produzione. 

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

## Guida all'implementazione
<a name="implementation-guidance"></a>
+  Implementazione di prassi per migliorare la qualità del codice: implementa prassi per migliorare la qualità del codice e ridurre al minimo i difetti e il rischio che vengano distribuiti, ad esempio sviluppo basato su test, programmazione in coppia, revisioni del codice e adozione di standard. 
  +  [Amazon CodeGuru](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) 

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

 **Documenti correlati:** 
+  [Amazon CodeGuru](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) 

# OPS05-BP08 Utilizzo di più ambienti
<a name="ops_dev_integ_multi_env"></a>

 Utilizza ambienti multipli per sperimentare, sviluppare e testare il carico di lavoro. Utilizza livelli crescenti di controlli man mano che gli ambienti si avvicinano alla fase di produzione per avere la certezza che il carico di lavoro funzionerà come previsto una volta distribuito. 

 **Anti-pattern comuni:** 
+  Stai sviluppando in un ambiente di sviluppo condiviso e un altro sviluppatore sovrascrive le tue modifiche al codice. 
+  I controlli di sicurezza restrittivi nell'ambiente di sviluppo condiviso impediscono di sperimentare nuovi servizi e funzionalità. 
+  Esegui test di carico sui tuoi sistemi di produzione e causa un'interruzione per i tuoi utenti. 
+  Si è verificato un errore critico che ha causato la perdita di dati nella produzione. Nel tuo ambiente di produzione tenti di ricreare le condizioni che portano alla perdita di dati in modo da poter identificare come si è verificata e impedire che si ripeta. Per evitare un'ulteriore perdita di dati durante il test, devi rendere l'applicazione non disponibile per i tuoi utenti. 
+  Stai operando un servizio multi-tenant e non sei in grado di supportare la richiesta di un cliente per un ambiente dedicato. 
+  Non esegui sempre test, ma quando lo fai è in produzione. 
+  Ritieni che la semplicità di un singolo ambiente prevalga sulla portata dell'impatto che possono avere modifiche all'interno dell'ambiente. 

 **Vantaggi dell'adozione di questa best practice:** Con la distribuzione di più ambienti, puoi supportare più ambienti di sviluppo, test e produzione simultanei senza creare conflitti tra sviluppatori o community di utenti. 

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

## Guida all'implementazione
<a name="implementation-guidance"></a>
+  Utilizzo di più ambienti: fornisci agli sviluppatori ambienti sandbox con controlli minimi per abilitare la sperimentazione. Fornisci ambienti di sviluppo individuali per abilitare il lavoro in parallelo, incrementando l'agilità dello sviluppo. Implementa controlli più rigorosi negli ambienti che si avvicinano alla produzione per consentire agli sviluppatori di innovare. Utilizza l'approccio Infrastructure-as-Code e sistemi di gestione delle configurazioni per distribuire ambienti configurati in modo coerente con i controlli presenti in produzione per assicurare che i sistemi funzionino nel modo previsto quando vengono distribuiti. Quando gli ambienti non vengono utilizzati, disattivali per evitare costi associati alle risorse inattive, ad esempio i sistemi di sviluppo nelle ore serali e nei fine settimana. Distribuisci ambienti equivalenti alla produzione quando esegui i test di carico per ottenere risultati validi. 
  +  [Che cos'è AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 
  +  [Come arrestare e riavviare le istanze Amazon EC2 a intervalli regolari con AWS Lambda?](https://aws.amazon.com/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/) 

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

 **Documenti correlati:** 
+  [Come arrestare e riavviare le istanze Amazon EC2 a intervalli regolari con AWS Lambda?](https://aws.amazon.com/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/) 
+  [Che cos'è AWS CloudFormation?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 

# OPS05-BP09 Applicazione di modifiche frequenti, minime e reversibili
<a name="ops_dev_integ_freq_sm_rev_chg"></a>

 Le modifiche frequenti, minime e reversibili riducono la portata e l'impatto di una modifica. Questo semplifica la risoluzione dei problemi, consente tempi di correzione più rapidi e permette di eseguire il rollback di una modifica. 

 **Anti-pattern comuni:** 
+  Viene distribuita trimestralmente una nuova versione dell'applicazione. 
+  Le modifiche vengono apportate frequentemente allo schema del database. 
+  Esegui aggiornamenti manuali sul posto, sovrascrivendo le installazioni e le configurazioni esistenti. 

 **Vantaggi dell'adozione di questa best practice:** Riconosci più rapidamente i vantaggi derivanti dalle attività di sviluppo grazie alla distribuzione frequente di piccole modifiche. Quando le modifiche sono piccole, è molto più facile identificare se hanno conseguenze indesiderate. Quando le modifiche sono reversibili, è meno rischioso implementare la modifica poiché il ripristino è più semplice. 

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

## Guida all'implementazione
<a name="implementation-guidance"></a>
+  Applicazione di modifiche frequenti, minime e reversibili: le modifiche frequenti, minime e reversibili riducono la portata e l'impatto di una modifica. Questo semplifica la risoluzione dei problemi, consente tempi di correzione più rapidi e permette di eseguire il rollback di una modifica. Inoltre, aggiunge più rapidamente valore al business. 

# OPS05-BP10 Automazione completa dell'integrazione e della distribuzione
<a name="ops_dev_integ_auto_integ_deploy"></a>

 Automatizza la creazione, la distribuzione e il test del carico di lavoro. Questo riduce gli errori causati dai processi manuali e l'impegno necessario per distribuire le modifiche. 

 Applica i metadati utilizzando i [tag delle risorse](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html) e [AWS Resource Groups](https://docs.aws.amazon.com/ARG/latest/APIReference/Welcome.html) seguendo una [strategia di applicazione dei tag](https://aws.amazon.com/answers/account-management/aws-tagging-strategies/) coerente per consentire l'identificazione delle risorse. Applica tag alle risorse per organizzare, monitorare i costi e controllare gli accessi e ottimizza l'esecuzione delle attività operative automatizzate. 

 **Anti-pattern comuni:** 
+  Venerdì termini la creazione del nuovo codice per il ramo delle funzionalità. Lunedì, dopo aver eseguito gli script di test di qualità del codice e ciascuno degli script dei test di unità, verificherai nel codice la prossima versione pianificata. 
+  Ti verrà assegnato di codificare una correzione per un problema critico che interessa un numero elevato di clienti nella produzione. Dopo aver testato la correzione, esegui il commit del codice e richiedi via e-mail alla gestione delle modifiche l'approvazione per distribuirlo in produzione. 

 **Vantaggi dell'adozione di questa best practice:** Implementando sistemi di gestione automatizzati di compilazione e distribuzione, riduci gli errori causati dai processi manuali e l'impegno necessario per distribuire le modifiche, consentendo ai membri del team di concentrarsi su attività aziendali più importanti. 

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

## Guida all'implementazione
<a name="implementation-guidance"></a>
+  Utilizzo di sistemi di gestione della creazione e distribuzione: utilizza sistemi di gestione della creazione e distribuzione per tenere traccia e implementare le modifiche, ridurre gli errori causati dai processi manuali e ridurre il livello di impegno richiesto. Automatizza completamente la pipeline di integrazione e distribuzione dal check-in del codice fino alle fasi di creazione, test, distribuzione e convalida. In questo modo è possibile ridurre il lead time, aumentare la frequenza delle modifiche e ridurre il livello di impegno richiesto. 
  +  [What is AWS CodeBuild? (Che cos'è AWS CodeBuild?)](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
  +  [Best practice di integrazione continua per lo sviluppo del software](https://www.youtube.com/watch?v=GEPJ7Lo346A) 
  +  [Slalom: CI/CD for serverless applications on AWS (Slalom: CI/CD per applicazioni serverless su AWS)](https://www.youtube.com/watch?v=tEpx5VaW4WE) 
  +  [Introduction to AWS CodeDeploy - automated software deployment with Amazon Web Services (Introduzione ad AWS CodeDeploy – Implementazione automatica del software con Amazon Web Services)](https://www.youtube.com/watch?v=Wx-ain8UryM) 
  +  [What is AWS CodeDeploy? (Che cos'è AWS CodeDeploy?)](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 

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

 **Documenti correlati:** 
+  [What is AWS CodeBuild? (Che cos'è AWS CodeBuild?)](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) 
+  [What is AWS CodeDeploy? (Che cos'è AWS CodeDeploy?)](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) 

 **Video correlati:** 
+  [Best practice di integrazione continua per lo sviluppo del software](https://www.youtube.com/watch?v=GEPJ7Lo346A) 
+  [Introduction to AWS CodeDeploy - automated software deployment with Amazon Web Services (Introduzione ad AWS CodeDeploy – Implementazione automatica del software con Amazon Web Services)](https://www.youtube.com/watch?v=Wx-ain8UryM) 
+  [Slalom: CI/CD for serverless applications on AWS (Slalom: CI/CD per applicazioni serverless su AWS)](https://www.youtube.com/watch?v=tEpx5VaW4WE) 