OPS06-BP03 Utilizza strategie di deployment sicure
I roll-out sicuri della produzione controllano il flusso di modifiche vantaggiose con l'obiettivo di ridurre al minimo l'impatto percepito di tali modifiche sui clienti. I controlli di sicurezza forniscono meccanismi di ispezione per convalidare i risultati desiderati e limitare l'ambito di impatto derivante da eventuali difetti introdotti dalle modifiche o da errori di deployment. I roll-out sicuri possono includere strategie come feature-flags, one-box, roll-out (release canary), immutabili, suddivisioni del traffico e deployment blu/verdi.
Risultato desiderato: l'organizzazione utilizza un sistema di distribuzione e integrazione continua (CI/CD) che fornisce funzionalità per automatizzare roll-out sicuri. I team sono tenuti a utilizzare strategie di roll-out sicure appropriate.
Anti-pattern comuni:
-
Distribuisci una modifica non riuscita a tutta la produzione contemporaneamente. Di conseguenza, tutti i clienti vengono colpiti contemporaneamente.
-
Un difetto introdotto in un deployment simultaneo su tutti i sistemi richiede una release di emergenza. La correzione per tutti i clienti richiede diversi giorni.
-
La gestione della release di produzione richiede la pianificazione e la partecipazione di diversi team. Ciò limita la tua capacità di aggiornare frequentemente le funzionalità per i tuoi clienti.
-
Esegui un deployment variabile modificando i sistemi esistenti. Dopo aver scoperto che la modifica non è andata a buon fine, devi modificare nuovamente i sistemi per ripristinare la versione precedente estendendo il tempo di ripristino.
Vantaggi derivanti dall'adozione di questa best practice: I deployment automatizzati bilanciano la velocità dei roll-out rispetto alla distribuzione sistematica di modifiche vantaggiose per i clienti. La limitazione dell'impatto previene costosi errori di deployment e massimizza la capacità dei team di rispondere in modo efficiente ai guasti.
Livello di rischio associato alla mancata adozione di questa best practice: medio
Guida all'implementazione
Gli errori della distribuzione continua possono portare a una ridotta disponibilità del servizio e a esperienze dei clienti negative. Per massimizzare il tasso di deployment di successo, implementa i controlli di sicurezza nel processo di rilascio end-to-end per ridurre al minimo gli errori di deployment, con l'obiettivo di raggiungere il traguardo di zero errori.
Esempio del cliente
La missione di AnyCompany Retail è raggiungere deployment con tempi di inattività minimi o pari a zero, il che significa che non vi deve essere alcun impatto percepibile dagli utenti durante i deployment. A tal fine, l'azienda ha stabilito modelli di deployment (vedere il seguente diagramma del flusso di lavoro) come roll-out e deployment blu/verdi. Tutti i team adottano uno o più di questi modelli nella loro pipeline CI/CD.
CodeDeploy workflow for Amazon EC2 | CodeDeploy workflow for Amazon ECS | CodeDeploy workflow for Lambda |
---|---|---|
![]() |
![]() |
![]() |
Passaggi dell'implementazione
-
Un flusso di lavoro di approvazione per la promozione in produzione attiva la sequenza delle fasi di roll-out della produzione.
-
Utilizza un sistema di deployment automatizzato come AWS CodeDeploy. Le opzioni di deployment di AWS CodeDeploy includono deployment locali (in-place) per EC2/on-premise e deployment blu/verdi per EC2/on-premise AWS Lambda ed Amazon ECS (vedi il diagramma del flusso di lavoro precedente).
-
Utilizza deployment blu/verdi per database come Amazon Aurora e Amazon RDS.
-
Monitora i deployment utilizzando Amazon CloudWatch, AWS CloudTrail e le notifiche degli eventi di Amazon SNS.
-
Esegui test automatici post-deployment, inclusi test funzionali, di sicurezza, di regressione, di integrazione e di carico.
-
Risolvi i problemi di deployment.
Livello di impegno per il piano di implementazione: medio.
Risorse
Best practice correlate:
Documenti correlati:
Video correlati:
Esempi correlati: