OPS06-BP03 Utilizza strategie di deployment sicure - Principio dell'eccellenza operativa

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

                  Flusso del processo di deployment per Amazon EC2

                  Flusso del processo di deployment per Amazon ECS

                  Flusso del processo di deployment per Lambda

Passaggi dell'implementazione

  1. Un flusso di lavoro di approvazione per la promozione in produzione attiva la sequenza delle fasi di roll-out della produzione.

  2. 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).

  3. Utilizza deployment blu/verdi per database come Amazon Aurora e Amazon RDS.

  4. Monitora i deployment utilizzando Amazon CloudWatch, AWS CloudTrail e le notifiche degli eventi di Amazon SNS.

  5. Esegui test automatici post-deployment, inclusi test funzionali, di sicurezza, di regressione, di integrazione e di carico.

  6. Risolvi i problemi di deployment.

Livello di impegno per il piano di implementazione: medio.

Risorse

Best practice correlate:

Documenti correlati:

Video correlati:

Esempi correlati: