Automazione dei deployment

Last reviewed 2023-07-17 UTC

Questo documento nel Framework dell'architettura Google Cloud fornisce best practice per l'automazione di build, test e deployment.

Automation ti aiuta a standardizzare build, test di deployment eliminando gli errori indotti dall'uomo per processi ripetuti, come gli aggiornamenti del codice. In questa sezione viene descritto come utilizzare vari controlli e protezioni per l'automazione. Un processo standardizzato controllato da macchina aiuta che i deployment vengano applicati in modo sicuro. Fornisce anche un meccanismo per ripristinare i deployment precedenti in base alle esigenze senza influire significativamente l'esperienza utente.

Archivia il tuo codice nei repository di codici centrali

Archivia il tuo codice in repository di codice centrali che includono un controllo di versione grazie al tagging e alla possibilità di eseguire il rollback delle modifiche al codice. Controllo delle versioni consente di organizzare i file e controllare l'accesso, gli aggiornamenti e l'eliminazione i team e le organizzazioni.

Per le diverse fasi dello sviluppo, crea versioni ed etichette dei repository dell'oggetto o eliminare definitivamente una versione archiviata, in base alle necessità. Ad esempio, le etichette potrebbero essere test, dev e prod.

In Google Cloud, puoi archiviare il codice Cloud Source Repositories e controllare le versioni e l'integrazione con altri prodotti Google Cloud. Se stai creando container per le applicazioni, utilizzano Artifact Registry, un servizio gestito per i container.

Per maggiori dettagli sul controllo della versione, vedi Controllo della versione. Per maggiori dettagli su implementare lo sviluppo basato su trunk con i tuoi repository, consulta Sviluppo basato su trunk.

Utilizza l'integrazione e il deployment continui

Automatizza i deployment utilizzando l'integrazione e le funzionalità di deployment (CI/CD). Un approccio CI/CD è una combinazione le pipeline che configuri e i processi seguiti dal tuo team di sviluppo.

Un approccio CI/CD aumenta la velocità di deployment rendendo il software la produttività del team di sviluppo. Questo approccio consente agli sviluppatori più piccole e frequenti, testate in modo approfondito mentre e ridurre il tempo necessario per il deployment di queste modifiche.

Nell'ambito del tuo approccio CI/CD, automatizza tutti i passaggi che fanno parte per la creazione, il test e il deployment del codice. Ad esempio:

  • Ogni volta che viene eseguito il commit di nuovo codice nel repository, esegui il commit richiamano automaticamente la pipeline di build e di test.
  • Automatizzare i test di integrazione.
  • Automatizza il deployment in modo che le modifiche vengano implementate dopo che la build è stata soddisfatta criteri di test specifici.

In Google Cloud, puoi utilizzare Cloud Build e Cloud Deploy per le tue pipeline CI/CD.

Usa Cloud Build per definire le dipendenze e le versioni che puoi usare per creare pacchetti e creare un pacchetto dell'applicazione. Versione di per assicurarti che tutte le build siano coerenti e assicurati di poter eseguire il rollback a una configurazione precedente, se necessario.

Utilizza Cloud Deploy per il deployment delle tue applicazioni in ambienti cloud su Google Cloud e per gestire le tue pipeline di deployment.

Per maggiori dettagli sull'implementazione di CI/CD, leggi Integrazione continua e Automazione del deployment.

Esegui il provisioning e la gestione dell'infrastruttura utilizzando Infrastructure as Code

Infrastructure as Code è l'uso di un modello descrittivo per gestire dell'infrastruttura, come le VM, e le configurazioni, come le regole firewall. Infrastructure as Code ti consente di:

  • Creare automaticamente le risorse cloud, incluso il deployment o ambienti di test per la tua pipeline CI/CD.
  • Gestisci le modifiche all'infrastruttura come le modifiche alle applicazioni. Per Ad esempio, assicurati che le modifiche alla configurazione vengano riviste, testate e possano essere controllate.
  • Usufruisci di un'unica versione attendibile per la tua infrastruttura cloud.
  • Replica il tuo ambiente cloud in base alle esigenze.
  • Se necessario, esegui il rollback a una configurazione precedente.

Questo concetto di Infrastructure as Code si applica anche ai progetti in Google Cloud. Puoi usare questo approccio per definire risorse come Connettività VPC condiviso o accesso IAM (Identity and Access Management) nel tuo in modo programmatico a gestire i progetti. Per un esempio di questo approccio, vedi Modulo Terraform per la produzione di progetti Google Cloud.

Strumenti di terze parti come Terraform a creare automaticamente la tua infrastruttura su Google Cloud. Per maggiori informazioni le informazioni, vedi Gestione dell'infrastruttura come codice con Terraform, Cloud Build e GitOps.

Valuta l'utilizzo delle funzionalità di Google Cloud, come blocchi del progetto, Criteri di conservazione di Cloud Storage, e i blocchi dei bucket di Cloud Storage, per proteggere le risorse critiche dall'eliminazione accidentale o dolosa.

Incorpora test durante tutto il ciclo di vita della distribuzione del software

Il test è fondamentale per avviare correttamente il software. Continuo consente ai team di creare software di alta qualità più rapidamente la stabilità del software.

Tipi di test:

  • Test delle unità. I test delle unità sono veloci e ti aiutano a eseguire deployment rapidi. Tratta i test delle unità come parte del codebase e includili nel un processo di compilazione.
  • Test di integrazione. I test di integrazione sono importanti in particolare per carichi di lavoro progettati per la scalabilità e che dipendono più di un servizio. Questi test possono diventare complessi quando testi per l'integrazione con servizi interconnessi.
  • Verifica del sistema. I test di sistema sono complessi e dispendiosi in termini di tempo, ti aiutano a identificare i casi limite e risolvere i problemi prima del deployment.
  • Altri test. Devi eseguire altri test, tra cui quelli statici test, test di carico, test di sicurezza, test di convalida dei criteri e altri. Esegui questi test prima di eseguire il deployment dell'applicazione in produzione.

Per incorporare i test:

  • Eseguire continuamente tutti i tipi di test in tutto il software ciclo di vita della distribuzione.
  • Automatizza questi test e includili nella pipeline CI/CD. Rendi il tuo la pipeline non andrà a buon fine se anche uno dei test non va a buon fine.
  • Aggiornare e aggiungere continuamente nuovi test per migliorare e mantenere l'integrità operativa del deployment.

Per i tuoi ambienti di test:

  • Utilizza progetti Google Cloud separati per ogni ambiente di test di cui disponi. Per ogni applicazione, usa un ambiente di progetto separato. Questa separazione fornisce una chiara demarcazione tra le risorse dell'ambiente di produzione le risorse degli ambienti inferiori. Questa separazione aiuta a garantire le modifiche apportate a un ambiente non incidono accidentalmente su altri ambienti.
  • Automatizza la creazione di ambienti di test. Un modo per farlo sta usando Infrastructure as Code.
  • Utilizza un ambiente di produzione sintetico per testare le modifiche. Questo ambiente fornisce un ambiente di produzione per testare l'applicazione eseguire vari tipi di test sui carichi di lavoro, tra cui e test delle prestazioni.

Per ulteriori informazioni sull'implementazione dei test continui, consulta Automazione dei test.

Avvia gradualmente i deployment

Scegliere la strategia di deployment in base a parametri importanti, come interruzioni minime per gli utenti finali, aggiornamenti in sequenza, strategie di rollback e test A/B. Per ogni carico di lavoro, valuta questi requisiti e scegli una strategia di deployment da tecniche comprovate, come la rotazione deployment blu/verde e deployment canary.

Consenti solo ai processi CI/CD di apportare modifiche ed eseguirne il push nel tuo ambiente di produzione.

Prendi in considerazione l'utilizzo di un'infrastruttura immutabile. Un'infrastruttura immutabile su un'infrastruttura che non viene modificata o aggiornata. Quando devi eseguire il deployment codice o modifichi qualsiasi altra configurazione nel tuo ambiente, l'intero ambiente (ad esempio una raccolta di VM o pod) con completamente gestito di Google Cloud. I deployment blu/verde sono un esempio di infrastruttura immutabile.

Ti consigliamo di eseguire test canary e di osservare il sistema per qualsiasi durante il deployment delle modifiche. Questo tipo di osservazione è più semplice se hai un solido sistema di monitoraggio e avviso. Per eseguire test A/B o canary: puoi utilizzare lo strumento gruppi di istanze gestite. Dopodiché puoi eseguire un'implementazione lenta o un ripristino, se necessario.

Valuta la possibilità di utilizzare Cloud Deploy per automatizzare deployment e gestire la pipeline di deployment. Puoi anche usare molte di terze parti, come Spinnaker e Tekton, su Google Cloud sia per i deployment automatizzati e per creare pipeline di deployment.

Ripristina senza problemi le release precedenti

Definisci la strategia di ripristino come parte della strategia di deployment. Assicurati puoi eseguire il rollback di un deployment o di una configurazione dell'infrastruttura a una versione precedente del codice sorgente. Ripristino di una versione stabile precedente la distribuzione è un passo importante nella gestione degli incidenti sia per l'affidabilità e incidenti di sicurezza.

Assicurati inoltre di poter ripristinare l'ambiente allo stato in cui si trovava prima è iniziato il processo di deployment. Ecco alcuni esempi:

  • Possibilità di annullare qualsiasi modifica al codice nell'applicazione.
  • La possibilità di annullare qualsiasi modifica alla configurazione apportata all'ambiente.
  • Usare un'infrastruttura immutabile e garantire che i deployment non e modificare l'ambiente. Queste pratiche consentono di ripristinare la configurazione le modifiche in modo più semplice.

Monitora le tue pipeline CI/CD

Per garantire l'esecuzione ottimale del processo automatizzato di build, test e deployment, e monitorare le pipeline CI/CD. Imposta avvisi che segnalano la presenza di eventuali eventi in qualsiasi un errore della pipeline. Ogni passaggio della pipeline deve scrivere istruzioni di log appropriate in modo che il team possa eseguire l'analisi delle cause principali in caso di errore di una pipeline.

In Google Cloud, tutti i servizi CI/CD sono integrati con Google Cloud Observability. Ad esempio:

Per maggiori dettagli sul monitoraggio e sul logging, consulta Configura monitoraggio, avvisi e logging.

Esegui il deployment delle applicazioni in sicurezza

Esamina il Esegui il deployment delle applicazioni in modo sicuro della categoria sicurezza, conformità e privacy del framework dell'architettura.

Stabilire linee guida per la gestione delle release delle versioni

Per aiutare i tuoi ingegneri a evitare errori e consentire una velocità elevata della distribuzione del software, assicuratevi che le linee guida di gestione per il rilascio di nuove versioni del software siano chiaramente documentate.

I tecnici delle release supervisionano le modalità di creazione e distribuzione del software. Il sistema della progettazione delle release si basa su quattro pratiche:

  • Modalità self-service. Stabilire linee guida per aiutare gli ingegneri informatici evitare errori comuni. Queste linee guida vengono generalmente codificate processi automatizzati.

  • Release frequenti. L'alta velocità aiuta a risolvere i problemi e risolvere i problemi in modo più semplice. Le release frequenti si basano su test delle unità automatici.

  • Build ermetiche. Garantisci coerenza con i tuoi strumenti di creazione. Versione i compilatori di build che utilizzi per creare le versioni ora rispetto a un mese fa.

  • Applicazione delle norme. Tutte le modifiche richiedono una revisione del codice, idealmente inclusa una serie di linee guida e norme per applicare la sicurezza. Applicazione delle norme migliora la revisione del codice, la risoluzione dei problemi e il test di una nuova release.

Passaggi successivi