REL 8: In che modo implementare le modifiche?
Per distribuire nuove funzionalità e garantire che i carichi di lavoro e l'ambiente operativo eseguano software noti e che sia possibile applicare patch o sostituirli in modo prevedibile, sono necessarie modifiche controllate. Se invece non sono controllate, risulta difficile prevederne l'effetto o risolvere eventuali problemi che causano.
Risorse
AWS Summit 2019: CI/CD on AWS
What Is AWS CodePipeline?
What Is CodeDeploy?
Overview of a Blue/Green Deployment
Deploying Serverless Applications Gradually
The Amazon Builders' Library: Ensuring rollback safety during deployments
The Amazon Builders' Library: Going faster with continuous delivery
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
CanaryRelease
AWS Marketplace: products that can be used to automate your deployments
APN Partner: partners that can help you create automated deployment solutions
Best practice:
-
Uso di runbook per attività standard come la distribuzione: I runbook sono le fasi predefinite utilizzate per ottenere risultati specifici. Utilizza i runbook per eseguire attività standard, o manualmente o automaticamente. Alcuni esempi includono la distribuzione di un carico di lavoro, l'applicazione di patch o la realizzazione di modifiche DNS.
-
Esegui test funzionali come parte integrante della distribuzione: I test funzionali vengono eseguiti come parte integrante della distribuzione automatizzata. Se non vengono soddisfatti i criteri di esito positivo, la pipeline viene arrestata o ripresa dall'inizio.
-
Esegui test di resilienza come parte integrante della distribuzione: I test di resilienza (che rientrano nell'ingegneria del caos) vengono eseguiti nell'ambito della pipeline di distribuzione automatizzata in un ambiente di pre-produzione.
-
Distribuisci utilizzando un'infrastruttura immutabile: Si tratta di un modello che richiede che non vengano applicati aggiornamenti, patch di sicurezza o modifiche di configurazione sui carichi di lavoro di produzione. Quando è necessaria una modifica, l'architettura viene costruita su una nuova infrastruttura e distribuita alla produzione.
-
Distribuisci le modifiche tramite automazione: Le distribuzioni e l'applicazione di patch sono automatizzate per eliminare l'impatto negativo.
Piano di miglioramento
Uso di runbook per attività standard come la distribuzione
AWS Well-Architected Framework: Concepts: Runbook
- Utilizza AWS CloudFormation o un provider di terze parti affidabile per definire l'infrastruttura.
What is AWS CloudFormation? - Crea modelli unici e disaccoppiati, utilizzando solidi principi di progettazione del
software.
- Stabilisci le autorizzazioni, i modelli e le parti responsabili dell'implementazione
Controlling access with AWS Identity and Access Management - Utilizza un controllo sorgente come AWS CodeCommit o uno strumento di terze parti
affidabili per il controllo delle versioni.
What is AWS CodeCommit?
- Stabilisci le autorizzazioni, i modelli e le parti responsabili dell'implementazione
Esegui test funzionali come parte integrante della distribuzione
- Richiama AWS CodeBuild durante la "Test Action" delle pipeline di rilascio di software
modellate in AWS CodePipeline. Questa funzionalità consente di eseguire facilmente
un'ampia gamma di test sul codice, tra cui test delle unità, analisi del codice statico
e test di integrazione.
AWS CodePipeline Adds Support for Unit and Custom Integration Testing with AWS CodeBuild - Utilizza le soluzioni AWS Marketplace per eseguire test automatizzati come parte integrante
della tua pipeline di distribuzione di software.
Software test automation
Esegui test di resilienza come parte integrante della distribuzione
- I test di resilienza inseriscono errori o causano un degrado delle risorse per valutare
se il carico di lavoro risponde con la resilienza progettata
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3 - Questi test possono essere eseguiti regolarmente in ambienti di pre-produzione nelle pipeline di distribuzione automatizzate.
- È opportuno eseguirli anche in produzione, nell'ambito delle giornate di gioco pianificate.
- A partire dai principi di ingegneristica del caos, avanza ipotesi sulle prestazioni
del carico di lavoro in caso di vari problemi, quindi mettile alla prova utilizzando
i test di resilienza.
Principles of Chaos Engineering
Distribuisci utilizzando un'infrastruttura immutabile
Overview of a Blue/Green Deployment
Deploying Serverless Applications Gradually
CanaryRelease
Distribuisci le modifiche tramite automazione
The Amazon Builders' Library: Ensuring rollback safety during deployments
The Amazon Builders' Library: Going faster with continuous delivery
- Utilizza AWS CodePipeline (o un prodotto di terze parti affidabile) per definire ed
eseguire le tue pipeline.
- Configura la pipeline in modo che inizi quando si effettua il commit di una modifica
al repository del codice.
What is AWS CodePipeline? - Utilizza Amazon Simple Notification Service (SNS) e Amazon Simple Email Service (SES)
per inviare notifiche relative ai problemi della pipeline o integra uno strumento
di chat per team come Amazon Chime.
What is Amazon Simple Notification Service?
What is Amazon SES?
What is Amazon Chime?
Automate chat messages with webhooks.
- Configura la pipeline in modo che inizi quando si effettua il commit di una modifica
al repository del codice.