SEC11-BP06 Implementazione programmatica del software - AWS Well-Architected Framework

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

SEC11-BP06 Implementazione programmatica del software

Esegui implementazioni programmatiche del software laddove possibile. Questo approccio riduce la probabilità che un'implementazione non riesca o che si verifichi un problema imprevisto a causa dell'errore umano.

Risultato desiderato: la versione del carico di lavoro da testare è la stessa che viene implementata e l'implementazione viene eseguita in modo coerente ogni volta. L'esternalizzazione della configurazione del carico di lavoro è utile per eseguirne l'implementazione in ambienti diversi senza modifiche. Viene utilizzata la firma crittografica dei pacchetti software per verificare che non vi siano cambiamenti da un ambiente all'altro.

Anti-pattern comuni:

  • Implementazione manuale del software nell'ambiente di produzione.

  • Applicazione manuale di modifiche al software per soddisfare i requisiti di ambienti diversi.

Vantaggi dell'adozione di questa best practice:

  • Maggiore affidabilità del processo di rilascio del software.

  • Riduzione dei rischi legati a modifiche errate che hanno impatto sulla funzionalità aziendale.

  • Processi di rilascio più frequenti grazie a un rischio di modifica minimo.

  • Funzionalità di rollback automatiche in caso di eventi imprevisti durante l'implementazione.

  • Possibilità di usare la crittografia per dimostrare che il software implementato è esattamente identico a quello testato.

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

Guida all'implementazione

Per mantenere un'infrastruttura applicativa solida e affidabile, implementa pratiche per l'implementazione sicura e automatizzata. Tali pratiche prevedono la rimozione dell'accesso umano persistente dagli ambienti di produzione, l'utilizzo di strumenti CI/CD per le implementazioni e l'esternalizzazione dei dati di configurazione specifici dell'ambiente. Seguendo questo approccio, è possibile migliorare la sicurezza, ridurre il rischio di errori umani e semplificare il processo di implementazione.

È possibile creare una struttura di Account AWS per rimuovere l'accesso umano persistente dagli ambienti di produzione. Questa pratica riduce al minimo il rischio di modifiche non autorizzate o accidentali, migliorando l'integrità dei sistemi di produzione. Invece dell'accesso umano diretto, puoi utilizzare strumenti CI/CD come AWS CodeBuild e AWS CodePipeline per eseguire le implementazioni. È possibile utilizzare questi servizi per automatizzare i processi di sviluppo, test e implementazione, riducendo l'intervento manuale e aumentando la coerenza.

Per migliorare ulteriormente la sicurezza e la tracciabilità, puoi firmare i pacchetti applicativi dopo che sono stati testati e convalidare le firme durante l'implementazione. A tale scopo, puoi usare strumenti crittografici come AWS Signer o AWS Key Management Service (AWS KMS). Firmando e verificando i pacchetti, puoi assicurarti di distribuire solo codice autorizzato e convalidato nei tuoi ambienti.

Inoltre, il tuo team può progettare il carico di lavoro per ottenere dati di configurazione specifici dell'ambiente da una fonte esterna, come AWS Systems Manager Parameter Store. Questa pratica separa il codice dell'applicazione dai dati di configurazione, il che consente di gestire e aggiornare le configurazioni in modo indipendente senza modificare il codice applicativo stesso.

Per semplificare il provisioning e la gestione dell'infrastruttura, valuta la possibilità di utilizzare strumenti di infrastructure as code (IaC) come AWS CloudFormation o AWS CDK. Puoi utilizzare questi strumenti per definire l'infrastruttura come codice, con conseguente miglioramento della coerenza e della ripetibilità delle implementazioni in ambienti diversi.

Prendi in considerazione le distribuzioni canary per convalidare la corretta implementazione del tuo software. Le distribuzioni canary prevedono l'implementazione delle modifiche in un sottoinsieme di istanze o utenti prima dell'implementazione nell'intero ambiente di produzione. È quindi possibile monitorare l'impatto delle modifiche ed eventualmente annullarle, se necessario, in modo da ridurre al minimo il rischio di problemi diffusi.

Segui i consigli delineati nel white paper Organization Your AWS Environment Using Multiple Accounts. Questo white paper fornisce indicazioni su come suddividere gli ambienti (ad esempio, tra ambiente di sviluppo, di gestione temporanea e di produzione) in Account AWS distinti, con conseguente ulteriore miglioramento della sicurezza e dell'isolamento.

Passaggi dell'implementazione

  1. Configurazione della struttura di Account AWS:

    • Segui le indicazioni contenute nel white paper Organization Your AWS Environment Using Multiple Accounts per creare Account AWS separati per ambienti diversi (ad esempio, ambiente di sviluppo, di gestione temporanea e di produzione).

    • Configura le autorizzazioni e i controlli di accesso appropriati per ogni account per limitare l'accesso umano diretto agli ambienti di produzione.

  2. Implementa una pipeline CI/CD:

    • Configura una pipeline CI/CD utilizzando servizi come AWS CodeBuild e AWS CodePipeline.

    • Configura la pipeline per creare, testare e implementare automaticamente il codice applicativo nei rispettivi ambienti.

    • Integra i repository di codice con la pipeline CI/CD per il controllo delle versioni e la gestione del codice.

  3. Firma e verifica i pacchetti applicativi:

    • Usa AWS Signer o AWS Key Management Service (AWS KMS) per firmare i pacchetti applicativi dopo che sono stati testati e convalidati.

    • Configura il processo di implementazione per verificare le firme dei pacchetti applicativi prima di distribuirli negli ambienti di destinazione.

  4. Esternalizza i dati di configurazione:

    • Archivia i dati di configurazione specifici dell'ambiente in AWS Systems Manager Parameter Store.

    • Modifica il codice applicativo per recuperare i dati di configurazione dal Parameter Store durante l'implementazione o il runtime.

  5. Implementa l'infrastructure as code (IaC):

    • Usa strumenti IaC come AWS CloudFormation o AWS CDK per definire e gestire la tua infrastruttura come codice.

    • Crea modelli CloudFormation o script CDK per fornire e configurare le risorse AWS necessarie per la tua applicazione.

    • Integra l'IaC con la tua pipeline CI/CD per implementare automaticamente le modifiche all'infrastruttura insieme alle modifiche al codice applicativo.

  6. Implementa la distribuzione canary:

    • Configura il processo di implementazione per supportare le distribuzioni canary, in cui le modifiche vengono implementate in un sottoinsieme di istanze o utenti prima dell'implementazione nell'intero ambiente di produzione.

    • Utilizza servizi come AWS CodeDeploy o AWS ECS per gestire le distribuzioni canary e monitorare l'impatto delle modifiche.

    • Implementa meccanismi di rollback per tornare alla precedente versione stabile qualora vengano rilevati problemi durante la distribuzione canary.

  7. Monitora ed esegui audit:

    • Configura meccanismi di monitoraggio e registrazione di log per tenere traccia delle implementazioni, delle prestazioni delle applicazioni e delle modifiche all'infrastruttura.

    • Usa servizi come Amazon CloudWatch e AWS CloudTrail per raccogliere e analizzare log e metriche.

    • Implementa controlli di conformità e audit per verificare l'aderenza alle best practice e ai requisiti normativi in materia di sicurezza.

  8. Migliora continuamente i processi:

    • Rivedi e aggiorna regolarmente le tue pratiche di implementazione, integrando feedback e informazioni apprese dalle implementazioni precedenti.

    • Automatizza il più possibile il processo di implementazione per ridurre l'intervento manuale e i potenziali errori umani.

    • Collabora con team interfunzionali (ad esempio, operativi o di sicurezza) per allineare e migliorare continuamente le pratiche di implementazione.

Seguendo questi passaggi, puoi mettere in atto pratiche di implementazione sicure e automatizzate nel tuo ambiente AWS, migliorando la sicurezza, riducendo il rischio di errori umani e semplificando il processo di implementazione.

Risorse

Best practice correlate:

Documenti correlati:

Video correlati:

Esempi correlati: