

# Processo di miglioramento
<a name="improvement-process"></a>

 Migliorare l'architettura significa capire quali sono le risorse a tua disposizione e cosa puoi fare per migliorare il tuo approccio, selezionando obiettivi di miglioramento, testando i risultati ottenuti, adottando le migliorie più riuscite, quantificando il successo ottenuto e condividendo quanto appreso in modo che possa essere replicato da altri e ripetendo quindi il ciclo. 

 Gli obiettivi dei tuoi miglioramenti possono essere: 
+  Eliminare sprechi, scarso utilizzo o risorse inattive o inutilizzate 
+  Massimizzare il valore di risorse utilizzate 

**Nota**  
Usa tutte le risorse di cui esegui il provisioning e completa la stessa attività con il minimo di risorse possibile. 

 In una fase iniziale del processo di ottimizzazione, concentrati sulle aree con sprechi o utilizzo ridotto per poi passare a ottimizzazioni maggiormente finalizzate in linea con il tuo carico di lavoro specifico. 

 Monitora le variazioni d'uso delle risorse nel tempo. Identifica dove le modifiche accumulate nel tempo causano aumenti significativi e inefficienze nell'uso delle risorse. Definisci le migliorie necessarie per contenere i cambiamenti in termini di consumi e implementa gli interventi più prioritari. 

 I passaggi seguenti sono stati ideati per generare un processo iterativo che valuta, assegna le priorità, testa e implementa migliorie focalizzate sulla sostenibilità per carichi di lavoro cloud. 

1.  **Identificazione degli obiettivi in termini di miglioramento:** esamina i carichi di lavoro rispetto alle best practice di sostenibilità indicate in questo documento e identifica gli obiettivi in termini di miglioramento. 

1.  **Valutazione di miglioramenti specifici:** valuta le modifiche specifiche per identificare i miglioramenti potenziali, i costi previsti e i rischi aziendali. 

1.  **Assegnazione di priorità e pianificazione dei miglioramenti:** assegna le priorità alle modifiche che offrono i miglioramenti più sostanziali al costo e con i rischi più bassi e definisci un piano per test e implementazione. 

1.  **Test e convalida dei miglioramenti:** implementa le modifiche negli ambienti di test per convalidare il loro potenziale in termini di miglioramenti. 

1.  **Implementazione delle modifiche nella produzione:** implementa le modifiche negli ambienti di produzione. 

1.  **Misurazione dei risultati e replica dei successi:** cerca le opportunità per replicare i successi nei carichi di lavoro e annullare le modifiche con risultati inaccettabili. 

## Scenario di esempio
<a name="example-scenario"></a>

 Lo scenario di esempio seguente viene utilizzato più avanti in questo documento per illustrare ogni fase del processo di miglioramento. 

 La tua azienda ha un carico di lavoro che esegue complesse manipolazioni delle immagini su EC2 istanze Amazon e archivia i file modificati e originali per l'accesso degli utenti. Le attività di elaborazione sono CPU intensive e i file di output sono estremamente grandi. 

# Identifica gli obiettivi in termini di miglioramento
<a name="identify-targets-for-improvement"></a>

 Comprendi le best practice che ti aiutano a raggiungere gli obiettivi di sostenibilità. Più avanti nel presente documento, troverai spiegazioni dettagliate di queste [best practice](best-practices-for-sustainability-in-the-cloud.md) e consigli per il miglioramento. 

 Esamina i carichi di lavoro e le risorse utilizzate. Identifica gli *hot spot* come grandi implementazioni e risorse utilizzate di frequente. Valuta questi hot spot per avere la possibilità di migliorare l'utilizzo effettivo delle risorse e ridurre le risorse totali necessarie per ottenere i risultati aziendali auspicati. 

 Esamina il carico di lavoro rispetto alle best practice e identifica i candidati per il miglioramento. 

 Applicando questo esempio allo [Scenario di esempio](improvement-process.md#example-scenario), identifichi le seguenti best practice come obiettivi probabili per il miglioramento: 
+  Utilizza la quantità minima di hardware per soddisfare le tue esigenze 
+  Utilizza tecnologie che supportano al meglio l'accesso ai dati e i modelli di storage 

## Risorse
<a name="resources-1"></a>
+  [Ottimizzazione AWS dell'infrastruttura per la sostenibilità, parte I: Elaborazione](https://aws.amazon.com/blogs/architecture/optimizing-your-aws-infrastructure-for-sustainability-part-i-compute/) 
+  [Ottimizzazione dell' AWS infrastruttura per la sostenibilità, parte II: storage](https://aws.amazon.com/blogs/architecture/optimizing-your-aws-infrastructure-for-sustainability-part-ii-storage/) 
+  [Ottimizzazione AWS dell'infrastruttura per la sostenibilità, parteIII: networking](https://aws.amazon.com/blogs/architecture/optimizing-your-aws-infrastructure-for-sustainability-part-iii-networking/) 

# Valuta miglioramenti specifici
<a name="evaluate-specific-improvements"></a>

 Scopri le risorse allocate dal tuo carico di lavoro per completare un'unità di lavoro. Valuta le migliorie potenziali e stima il loro impatto previsto, il costo dell'implementazione e i rischi associati. 

 Per misurare i miglioramenti nel tempo, occorre innanzitutto comprendere quali risorse sono state fornite AWS e in che modo tali risorse vengono consumate. 

 Inizia con una panoramica completa dell' AWS utilizzo e utilizza i report sui AWS costi e sull'utilizzo per identificare i punti critici. Utilizza questo [codice AWS di esempio](https://github.com/aws-samples/aws-usage-queries) per esaminare e analizzare i report con l'aiuto di Amazon Athena. 

## Metriche proxy
<a name="proxy-metrics"></a>

 Quando valuti modifiche specifiche devi anche valutare quali metriche sono in grado di quantificare meglio l'effetto di tale modifica sulla risorsa associata. Queste metriche sono chiamate *metriche proxy*. Seleziona le metriche proxy che meglio rappresentano il tipo di miglioramento che stai valutando e le risorse coinvolte nel miglioramento. Queste metriche possono evolvere con il tempo. 

 Le risorse allocate per supportare il carico di lavoro includono elaborazione, archiviazione e risorse di rete. Valuta le risorse allocate usando le metriche proxy per vedere come queste risorse vengono utilizzate. 

 Usa le metriche proxy per misurare le risorse allocate per raggiungere i risultati aziendali. 


|  **Risorsa**  |  **Metriche proxy di esempio**  |  **Obiettivi di miglioramento**  | 
| --- | --- | --- | 
|  Calcolo  |  v CPU minuti  |  Ottimizza l'utilizzo delle risorse allocate  | 
|  Storage  |  GB allocati  |  Riduci il totale allocato  | 
|  Rete  |  GB o pacchetti trasferiti  |  Riduci il totale trasferito e la distanza trasferita  | 

## Metriche aziendali
<a name="business-metrics"></a>

 Seleziona metriche aziendali per quantificare il raggiungimento degli obiettivi di business. Le metriche aziendali devono riflettere il valore fornito dal carico di lavoro, ad esempio il numero di utenti attivi simultaneamente, API le chiamate effettuate o il numero di transazioni completate. Queste metriche possono evolvere con il tempo. Fai attenzione quando valuti metriche aziendali basate su aspetti finanziari, poiché l'incoerenza del valore delle transazioni rende nulli i paragoni. 

## Indicatori chiave delle prestazioni
<a name="key-performance-indicators"></a>

 Usando la formula seguente, dividi le risorse allocate in base ai risultati di business ottenuti per stabilire le risorse fornite per unità di lavoro. 

![\[Diagramma che mostra questa formula: risorse allocate per unità di lavoro = metrica proxy per le risorse fornite/metrica aziendale per il risultato\]](http://docs.aws.amazon.com/it_it/wellarchitected/latest/sustainability-pillar/images/key-performance-indicators-formula.png)


 Usa le tue risorse per unità di lavoro come se fossero tueKPIs. Stabilisci previsioni in base alle risorse allocate come base per i paragoni. 


|  **Risorsa**  |  **Esempio KPIs**  |  **Obiettivi di miglioramento**  | 
| --- | --- | --- | 
|  Calcolo  |  v CPU minuti per transazione  |  Ottimizza l'utilizzo delle risorse allocate  | 
|  Storage  |  GB per transazione  |  Riduci il totale allocato  | 
|  Rete  |  GB trasferiti per transazione o pacchetti trasferiti per transazione  |  Riduci il totale trasferito e la distanza trasferita  | 

## Stima del miglioramento
<a name="estimate-improvement"></a>

 Stima il miglioramento come riduzione quantitativa delle risorse allocate (come indicato dalle metriche proxy) e la percentuale di modifica rispetto alle risorse principali fornite per unità di lavoro. 


|  **Risorsa**  |  **Esempio KPIs**  |  **Obiettivi di miglioramento**  | 
| --- | --- | --- | 
|  Calcolo  |  % di riduzione dei vCPUs minuti per transazione  |  Ottimizza l'utilizzo  | 
|  Storage  |  % di riduzione di GB per transazione  |  Riduci il totale allocato  | 
|  Rete  |  % di riduzione dei GB trasferiti per transazione o pacchetti trasferiti per transazione  |  Riduci il totale trasferito e la distanza trasferita  | 

## Stima dei miglioramenti
<a name="evaluate-improvements"></a>

 Valuta i miglioramenti potenziali rispetto ai vantaggi netti previsti. Valuta i tempi, i costi e il livello di impegno per l'implementazione e la manutenzione, nonché i rischi aziendali per gli impatti non previsti. 

 I miglioramenti target spesso rappresentano compromessi tra i tipi di risorse utilizzati. Ad esempio, per ridurre l'uso di elaborazioni, puoi archiviare un risultato, limitare i dati trasferiti o elaborare i dati prima di inviare il risultato a un cliente. I [compromessi](sustainability-as-a-non-functional-requirement.md) sono discussi più avanti in maggior dettaglio. 

 Nella fase di valutazione dei rischi per il tuo carico di lavoro includi requisiti non funzionali, tra cui sicurezza, affidabilità, efficienza delle performance, ottimizzazione dei costi e impatto dei miglioramenti sulla tua capacità di gestire il carico di lavoro. 

 Applicando questo passaggio a [Scenario di esempio](improvement-process.md#example-scenario), valuta i miglioramenti target con i seguenti risultati: 


|  **Best practice**  |  **Miglioramento target**  |  **Potenziale**  |  **Costo**  |  **Rischio**  | 
| --- | --- | --- | --- | --- | 
|  Utilizza la quantità minima di hardware per soddisfare le tue esigenze  |  Implementa dimensionamenti predittivi per ridurre i periodi di scarso utilizzo  |  Media  |  Bassa  |  Bassa  | 
|  Utilizza tecnologie che supportano al meglio l'accesso ai dati e i modelli di storage  |  Implementa meccanismi di compressione più efficaci per ridurre l'archiviazione totale e il tempo necessario per completarla  |  Elevata  |  Bassa  |  Bassa  | 

 L'implementazione della scalabilità predittiva riduce il numero di CPU ore consumate dalle istanze sottoutilizzate o inutilizzate, offrendo vantaggi moderati rispetto ai meccanismi di scalabilità esistenti con una riduzione stimata dell'11% delle risorse consumate. I costi coinvolti sono bassi e includono la configurazione delle risorse cloud e il funzionamento della scalabilità predittiva per Amazon Auto EC2 Scaling. Il rischio limita le performance quando l'aumentare orizzontalmente viene applicato come reazione in risposta a previsioni che superano la domanda. 

 L'implementazione di una compressione più efficace può avere un impatto significativo con riduzione significativa della dimensione dei file in tutte le immagini originali e manipolate, con una riduzione stimata del 25% in termini di requisiti di archiviazione in produzione. L'implementazione di un nuovo algoritmo è una sostituzione che richiede poco impegno e non comporta molti rischi. 

# Assegna le priorità e pianifica i miglioramenti
<a name="prioritize-and-plan-improvements"></a>

 Assegna le priorità ai miglioramenti identificati in base all'impatto previsto di dimensioni maggiori con i costi più bassi e un livello di rischio accettabile. 

 Decidi su quali miglioramenti concentrarti inizialmente e includili nella tua pianificazione delle risorse e nella roadmap di sviluppo. 

 Applicando questo passaggio a [Scenario di esempio](improvement-process.md#example-scenario), assegna la priorità ai miglioramenti target come segue: 


|  **Priorità**  |  **Miglioramenti**  |  **Potenziale**  |  **Costo**  |  **Rischio**  | 
| --- | --- | --- | --- | --- | 
|  1  |  Implementa meccanismi di compressione più efficaci  |  Elevata  |  Bassa  |  Bassa  | 
|  2  |  Implementa il dimensionamento predittivo  |  Media  |  Bassa  |  Bassa  | 

 L'aggiornamento della compressione dei file offre un potenziale elevato, un costo ridotto e rischi contenuti, rendendolo così un'operazione ad alto valore per la tua azienda e una priorità rispetto all'implementazione di un dimensionamento predittivo. Stabilisci che l'implementazione del dimensionamento predittivo con il suo potenziale medio di impatto, il costo contenuto e il rischio basso debba essere il miglioramento con priorità più alta una volta completata la compressione dei file. 

 Incarichi un membro del team di implementare la compressione dei file ottimizzata e aggiungi il dimensionamento predittivo al backlog. 

# Testa e convalida i miglioramenti
<a name="test-and-validate-improvements"></a>

 Esegui piccoli test con investimenti ridotti per ridurre il rischio di un impegno su larga scala. 

 Implementa una copia rappresentativa del tuo carico di lavoro nell'ambiente di test per limitare i costi e i rischi legati a test e convalide. Esegui un set predefinito di transazioni di test, misura le risorse allocate e stabilisci le risorse usate per unità di lavoro per definire una base per il test. 

 Implementa il miglioramento target nell'ambiente di test e ripeti il test usando la stessa metodologia nelle stesse condizioni. Quindi, misura le risorse allocate e le risorse utilizzate per unità di lavoro con il tuo miglioramento attivo. 

 Calcola la percentuale di modifica rispetto alla base di risorse allocate per unità di lavoro e stabilisci la riduzione quantitativa attesa in termini di risorse fornite nell'ambiente di produzione. Confronta questi valori con i valori previsti. Stabilisci se il risultato raggiunge un livello accettabile di miglioramento. Valuta se i compromessi nelle risorse aggiuntive utilizzate rendono il beneficio netto del miglioramento inaccettabile. 

 Stabilisci se il miglioramento è un successo e se le risorse devono essere investite nell'implementazione della modifica in produzione. Se a questo punto la modifica viene valutata come un insuccesso, reindirizza le tue risorse per testare e convalidare il tuo target successivo e continuare con il tuo ciclo di miglioramenti. 


|  **% di riduzione delle risorse allocate per unità di lavoro**  |  **Riduzione quantitativa delle risorse allocate**  |  **Azione**  | 
| --- | --- | --- | 
|  Soddisfa le aspettative  |  Soddisfa le aspettative  |  Procedere con il miglioramento  | 
|  Non soddisfa le aspettative  |  Soddisfa le aspettative  |  Procedere con il miglioramento  | 
|  Soddisfa le aspettative  |  Non soddisfa le aspettative  |  Valutare un miglioramento alternativo  | 
|  Non soddisfa le aspettative  |  Non soddisfa le aspettative  |  Valutare un miglioramento alternativo  | 

 L'applicazione di questo passaggio a [Scenario di esempio](improvement-process.md#example-scenario), comporta l'esecuzione di test per la convalida del successo. 

Dopo aver eseguito i test sull'algoritmo di compressione ottimizzato, la riduzione in percentuale delle risorse allocate per unità di lavoro (l'archiviazione richiesta per l'immagine originale e modificata) soddisfa le aspettative con una riduzione media del 30% nell'archiviazione fornita e un carico di calcolo aumentato in quantità irrilevante.

Stabilisci che le risorse di calcolo aggiuntive richieste per applicare l'algoritmo di compressione ottimizzato ai file esistenti in produzione sono irrilevanti rispetto alla riduzione dell'archiviazione ottenuta. Hai confermato il successo con la riduzione quantitativa delle risorse richieste (TBsdi storage) e il miglioramento è stato approvato per l'implementazione in produzione.

# Implementazione delle modifiche in produzione
<a name="deploy-changes-to-production"></a>

 Implementa in produzione miglioramenti testati, convalidati e approvati. Ottimizza usando implementazioni limitate, conferma il funzionamento del tuo carico di lavoro, testa la riduzione reale delle risorse allocate e delle risorse usate per unità di lavoro nell'implementazione limitata e verifica le conseguenze non intenzionali della modifica. Procedi con le implementazioni complete dopo il superamento dei test. 

 Elimina le modifiche se il test ha esito negativo o se si verificano conseguenze non previste e inaccettabili dovute alla modifica. 

 L'applicazione di questo passaggio a [Scenario di esempio](improvement-process.md#example-scenario), ti consente di effettuare le seguenti operazioni. 

 Realizza le modifiche in produzione tramite una implementazione limitata con una metodologia di implementazione blu/verde. I test di funzionamento rispetto alle nuove istanze implementate hanno avuto esito positivo. Hai registrato una riduzione in media del 26% in termini di archiviazione allocata per file di immagini manipolate e originali. Non vedi evidenza di un aumento nelle risorse di calcolo con la compressione dei nuovi file. 

 Noti una diminuzione non prevista del tempo trascorso per comprimere i file di immagini e lo attribuisci al codice altamente ottimizzato per il nuovo algoritmo di compressione. 

 Procedi con l'implementazione completa della nuova versione. 

# Misurazione dei risultati e replica dei successi
<a name="measure-results-and-replicate-successes"></a>

Misura i risultati e replica i successi nei seguenti modi: 
+ Misura il miglioramento iniziale registrato dalle risorse allocate per unità di lavoro e la diminuzione quantitativa delle risorse fornite. 
+  Confronta le stime iniziali e i risultati dei test con le misurazioni in produzione. Identifica i fattori che possono aver contribuito alle differenze e aggiorna le tue stime e le metodologie di test, se necessario. 
+  Stabilisci il successo, e il grado di successo, e condividi i risultati con le parti interessate.
+  Se devi annullare le modifiche in seguito al risultato negativo dei test o a conseguenze negative non previste della modifica, identifica i fattori che hanno contribuito a questo risultato. Itera laddove possibile o valuta nuovi approcci per ottenere gli obiettivi della modifica.
+  Prendi ciò che hai appreso, stabilisci gli standard e applica miglioramenti positivi ad altri sistemi che possono trarne ugualmente vantaggio. Acquisisci e condividi la tua metodologia, gli artefatti relativi e i benefici netti con team e organizzazioni in modo che altri possano adottare questo standard e replicare il successo da te ottenuto. 
+ Monitora le risorse allocate per unità di lavoro e tieni traccia delle modifiche e dell'impatto totale nel tempo. Le modifiche al carico di lavoro o a come i clienti usano il carico di lavoro può avere un impatto sull'efficacia del tuo miglioramento. Valuta nuovamente le opportunità di miglioramento se noti diminuzioni significative a breve termine dell'efficacia della modifica o un'accumulata riduzione dell'efficacia nel tempo.
+ Quantifica il beneficio netto che deriva nel tempo dal tuo miglioramento (inclusi i vantaggi ricevuti da altri team che hanno applicato il tuo miglioramento, se disponibile) per dimostrare il ritorno sugli investimenti derivante da attività di questo tipo. 

 L'applicazione di questo passaggio a [Scenario di esempio](improvement-process.md#example-scenario) permette di misurare i seguenti risultati. 

 Il carico di lavoro mostra un miglioramento iniziale con una riduzione del 23% dei requisiti di archiviazione dopo l'implementazione e l'applicazione del nuovo algoritmo di compressione ai file di immagine esistenti. 

 Il valore misurato è largamente in linea con le stime iniziali (25%) e la differenza significativa rispetto al test (30%) dipende dal fatto che i file di immagine usati nel test non sono rappresentativi dei file di immagine presenti in produzione. Modifichi l'immagine di test per rappresentare in modo più appropriato le immagini in produzione. 

 Il miglioramento è considerato un successo sotto ogni aspetto. La riduzione totale dell'archiviazione allocata è inferiore del 2% rispetto alla stima del 25%, ma il 23% è comunque un miglioramento significativo in termini di impatto sulla sostenibilità ed è corredato da un risparmio equivalente sui costi. 

 Le uniche conseguenze indesiderate della modifica sono la riduzione vantaggiosa del tempo impiegato per eseguire la compressione e una riduzione equivalente rispetto al consumo. CPU Queste migliorie sono attribuite al codice altamente ottimizzato. 

 Definisci un progetto open-source interno in cui condividere il codice, gli artefatti associati, le linee guida su come implementare la modifica e i risultati che ne derivano. Il progetto interno open-source semplifica l'adozione del codice da parte dei team in tutti i casi d'uso di archiviazione persistente dei file. I team adottano il miglioramento come standard. I benefici secondari del progetto open-source interno sono i vantaggi che derivano dai miglioramenti alla soluzione di cui tutti possono usufruire adottandola e qualsiasi persona può contribuire ai miglioramenti al progetto. 

 Pubblica il successo conseguito e condividi il progetto open-source all'interno dell'organizzazione. Ogni team che adotta la soluzione replica il vantaggio con un investimento minimo e aggiunge il beneficio netto ricevuto dall'investimento. Pubblichi questi dati come una storia di successo continua nel tempo. 

 Continui a monitorare l'impatto del miglioramento nel tempo ed effettui le modifiche al progetto open-source interno in base alle esigenze. 