Esegui la migrazione a Google Cloud: esegui il deployment dei carichi di lavoro

Last reviewed 2024-12-08 UTC

Questo documento può aiutarti a pianificare e progettare la fase di implementazione della migrazione a Google Cloud. Dopo aver valutato il tuo ambiente attuale, pianificato la migrazione a Google Cloude creato la baseGoogle Cloud , puoi eseguire il deployment dei carichi di lavoro.

Questo documento fa parte della seguente serie in più parti sulla migrazione a Google Cloud:

Il seguente diagramma illustra il percorso del tuo percorso di migrazione.

Percorso di migrazione con quattro fasi.

La fase di deployment è la terza fase della migrazione a Google Cloud in cui progetti un processo di deployment per i tuoi carichi di lavoro.

Questo documento è utile se stai pianificando una migrazione da un ambiente on-premise, da un ambiente di hosting privato o da un altro cloud provider aGoogle Cloudoppure se stai valutando la possibilità di eseguire la migrazione e vuoi esplorare come potrebbe essere.

In questo documento vengono esaminati i diversi tipi di processo di implementazione, in ordine di flessibilità, automazione e complessità, nonché i criteri per scegliere un approccio adatto alle tue esigenze:

  1. Esegui il deployment manualmente.
  2. Esegui il deployment con gli strumenti di gestione della configurazione (CM).
  3. Esegui il deployment utilizzando gli strumenti di orchestrazione dei container.
  4. Esegui il deployment automaticamente.

Prima di eseguire il deployment dei carichi di lavoro, pianifica e progetta la fase di deployment. Innanzitutto, devi valutare i diversi tipi di procedure di implementazione che implementi per i tuoi carichi di lavoro. Quando valuti i tipi di procedure di implementazione, puoi decidere di iniziare con una procedura mirata e passare in futuro a una più complessa. Questo approccio può portare a risultati più rapidi, ma può anche creare problemi quando si passa a un processo più avanzato, perché è necessario assorbire il debito tecnico accumulato durante l'utilizzo del processo scelto come target. Ad esempio, se passi da deployment completamente manuali a una soluzione automatica, potresti dover gestire gli upgrade della pipeline di deployment e delle app.

Sebbene sia possibile implementare diversi tipi di processi di implementazione in base alle esigenze dei carichi di lavoro, questo approccio può anche aumentare la complessità di questa fase. Se implementi diversi tipi di procedure di deployment, puoi usufruire della maggiore flessibilità, ma potresti aver bisogno di competenze, strumenti e risorse personalizzati per ogni procedura, il che si traduce in un maggiore impegno da parte tua.

Esegui il deployment manualmente

Un deployment completamente manuale è supportato da un processo di provisioning, configurazione e deployment completamente non automatizzato. Sebbene possano essere presenti specifiche e liste di controllo per ogni passaggio della procedura, non viene eseguito alcun controllo o applicazione automatica di queste specifiche. Una procedura manuale è soggetta a errori umani, non è ripetibile e il suo rendimento è limitato dal fattore umano.

Le procedure di deployment completamente manuali possono essere utili, ad esempio, quando devi eseguire rapidamente l'instrumentazione di un esperimento in un ambiente sandbox. La configurazione di un procedura automatizzata e strutturata per un esperimento che dura alcuni minuti può rallentare inutilmente il ritmo, soprattutto nelle prime fasi della migrazione, quando potresti non avere le competenze necessarie sugli strumenti e sulle pratiche che ti consentono di creare una procedura automatizzata.

Anche se questa limitazione non si applica a Google Cloud, le implementazioni completamente manuali potrebbero essere l'unica opzione quando si ha a che fare con ambienti bare metal che non dispongono delle API di gestione necessarie. In questo caso, non puoi implementare un procedura automatica a causa della mancanza delle interfacce necessarie. Se hai un'infrastruttura virtualizzata precedente che non supporta alcuna automazione, potresti essere costretto a implementare una procedura completamente manuale

Ti consigliamo di evitare un deployment completamente manuale, a meno che non tu non abbia altre opzioni.

Puoi implementare un processo di provisioning, configurazione e dispiegamento completamente manuale utilizzando strumenti come la console Google Cloud, Cloud Shell, le API Cloud e Google Cloud CLI.

Esegui il deployment con gli strumenti di gestione della configurazione

Gli strumenti di CM ti consentono di configurare un ambiente in modo ripetibile e controllato. Questi strumenti includono un insieme di plug-in e moduli che implementano già operazioni di configurazione comuni. Questi strumenti ti consentono di concentrarti sullo stato finale che vuoi ottenere per il tuo ambiente anziché implementare la logica per raggiungerlo. Se l'insieme di operazioni incluso non è sufficiente, gli strumenti di CM spesso includono un sistema di estensioni che puoi utilizzare per sviluppare i tuoi moduli. Sebbene queste estensioni siano possibili, prova a utilizzare i moduli e i plug-in predefiniti, ove applicabile, per evitare un carico aggiuntivo di sviluppo e manutenzione.

Utilizzi gli strumenti CM quando devi configurare gli ambienti. Puoi anche utilizzarli per eseguire il provisioning dell'infrastruttura e implementare un processo di deployment per i tuoi carichi di lavoro. Gli strumenti di gestione dei modelli sono un processo migliore rispetto a un processo di provisioning, configurazione e deployment completamente manuale perché è ripetibile, controllato e verificabile. Tuttavia, esistono diversi svantaggi, perché gli strumenti CM non sono progettati per le attività di provisioning o deployment. In genere, mancano di funzionalità integrate per implementare una logica di provisioning elaborata, come il rilevamento e la gestione delle differenze tra lo stato reale dell'infrastruttura e lo stato desiderato o processi di deployment avanzati, come i deployment senza tempi di inattività o i deployment blu-verdi. Puoi implementare le funzionalità mancanti utilizzando i punti di estensione sopra menzionati. Queste estensioni possono richiedere un impegno aggiuntivo e aumentare la complessità complessiva del processo di implementazione, perché è necessaria la competenza necessaria per progettare, sviluppare e gestire una soluzione di implementazione personalizzata.

Puoi implementare questo tipo di processo di provisioning, configurazione e deployment utilizzando strumenti come Ansible, Chef, Puppet e SaltStack.

Un processo di deployment di base che utilizza gli strumenti di gestione dei pacchetti può preparare gli ambienti di runtime e implementare i carichi di lavoro in questi ambienti. Ad esempio, la procedura potrebbe creare un'istanza Compute Engine, installare il software necessario e eseguire il deployment dei carichi di lavoro. La configurazione di un ambiente di runtime che supporti i tuoi carichi di lavoro richiede tempo. Per ridurre il tempo necessario per configurare un ambiente di runtime, puoi implementare un processo che esegue gli strumenti CM per produrre un modello, ad esempio un'immagine del sistema operativo. Puoi utilizzare questo modello per creare istanze dell'ambiente di runtime pronte per i tuoi workload. Ad esempio, puoi utilizzare Cloud Build per creare immagini Compute Engine. Queste immagini vengono spesso chiamate immagini golden o immagini silver, entrambe sono modelli immutabili, come le immagini del sistema operativo, che crei per i tuoi ambienti di runtime. La differenza tra i due dipende dalla quantità di lavoro che deve essere completata da un processo di deployment prima che le immagini possano eseguire un workload:

  • Immagine di riferimento: un modello che crei per i tuoi ambienti di runtime o che prepari da un modello di base. Le immagini gold includono tutti i dati e le informazioni di configurazione di cui gli ambienti di runtime hanno bisogno per svolgere le attività assegnate. Puoi preparare diversi tipi di immagini di riferimento per svolgere attività diverse. I sinonimi per i tipi di immagini di riferimento includono flavor, spin e archetipi.
  • Immagine silver: un modello che crei per i tuoi ambienti di runtime applicando modifiche minime a un'immagine gold o a un modello di base. Gli ambienti di runtime che eseguono un'immagine silver completano il provisioning e la configurazione al primo avvio, in base alle esigenze dei casi d'uso che devono supportare.

Esegui il deployment utilizzando gli strumenti di orchestrazione dei container

Se hai già investito o prevedi di investire nella containerizzazione dei tuoi carichi di lavoro, puoi utilizzare uno strumento di orchestrazione dei container per eseguirne il deployment.

Uno strumento di orchestrazione dei container si occupa di gestire l'infrastruttura di base del tuo ambiente e supporta un'ampia gamma di operazioni di deployment e componenti di base per implementare la logica di deployment che puoi utilizzare quando quelle integrate non sono sufficienti. Utilizzando questi strumenti, puoi concentrarti sulla composizione della logica di implementazione effettiva utilizzando i meccanismi forniti, anziché doverli implementare.

Gli strumenti di orchestrazione dei container forniscono anche astrazioni che puoi utilizzare per generalizzare le procedure di deployment a diversi ambienti sottostanti, in modo da non dover progettare e implementare più procedure per ciascuno dei tuoi ambienti. Ad esempio, questi strumenti in genere includono la logica per eseguire lo scaling e l'upgrade dei deployment, quindi non devi implementarli autonomamente. Puoi anche iniziare a utilizzare questi strumenti per implementare le procedure di deployment nel tuo ambiente attuale e poi portarli nell'ambiente di destinazione, poiché l'implementazione è in gran parte la stessa, per progettazione. Se li adotti in anticipo, acquisisci l'esperienza necessaria per amministrare gli ambienti containerizzati, che ti sarà utile per la migrazione aGoogle Cloud.

Utilizza uno strumento di orchestrazione dei container se i tuoi carichi di lavoro sono già containerizzati o se puoi containerizzarli in futuro e prevedi di investire in questa attività. In quest'ultimo caso, devi eseguire un'analisi approfondita di ogni carico di lavoro per determinare quanto segue:

  • Assicurati che sia possibile la contenimento del carico di lavoro.
  • Valuta i potenziali vantaggi che potresti ottenere con la contenimento del carico di lavoro.

Se i potenziali problemi superano i vantaggi della containerizzazione, devi utilizzare uno strumento di orchestrazione dei contenitori solo se i tuoi team si sono già impegnati a utilizzarli e se non vuoi gestire ambienti eterogenei.

Ad esempio, le soluzioni di data warehouse in genere non vengono implementate utilizzando strumenti di orchestrazione dei container perché non sono progettate per essere eseguite in container temporanei.

Puoi implementare questa procedura di deployment utilizzando Google Kubernetes Engine (GKE) su Google Cloud. Se ti interessa un ambiente serverless, puoi utilizzare strumenti come Cloud Run.

Esegui il deployment automaticamente

Indipendentemente dagli strumenti di provisioning, configurazione, deployment e orchestrazione che utilizzi nel tuo ambiente, puoi implementare procedure di deployment completamente automatiche per ridurre al minimo gli errori umani e consolidare, semplificare e standardizzare le procedure nella tua organizzazione. Se necessario, puoi anche inserire passaggi di approvazione manuali nella procedura di deployment, ma ogni passaggio è automatizzato.

I passaggi di una tipica pipeline di deployment end-to-end sono i seguenti:

  1. Revisione del codice.
  2. Integrazione continua (CI).
  3. Produzione di elementi.
  4. Deployment continuo (CD), con eventuali approvazioni manuali.

Puoi automatizzare ciascuno di questi passaggi indipendentemente dagli altri, in modo da eseguire gradualmente la migrazione delle attuali procedure di implementazione a una soluzione automatica oppure puoi implementare una nuova procedura direttamente nell'ambiente di destinazione. Affinché questa procedura sia efficace, sono necessarie procedure di test e convalida in ogni passaggio della pipeline, non solo durante il passaggio di revisione del codice o il passaggio di CI.

Per ogni modifica nel codice di base, devi eseguire un'analisi approfondita per valutare la qualità della modifica. La maggior parte degli strumenti di gestione del codice sorgente offre un supporto di primo livello per le revisioni del codice. Spesso supportano anche la creazione e l'inizializzazione automatiche delle revisioni esaminando l'area del codice sorgente che è stata modificata, a condizione che tu abbia configurato i team responsabili di ogni area della base di codice. In ogni revisione puoi anche eseguire controlli automatici sul codice sorgente, ad esempio linters e strumenti di analisi statica, per applicare standard di coerenza e qualità alla base di codice.

Dopo aver esaminato e integrato una modifica nella base di codice, lo strumento CI può eseguire automaticamente i test, valutare i risultati e inviarti una notifica in caso di problemi con la build corrente. Puoi aggiungere valore a questo passaggio seguendo un processo di sviluppo guidato dai test per una copertura completa dei test delle funzionalità di ogni carico di lavoro.

Per ogni compilazione riuscita, puoi automatizzare la creazione degli elementi di deployment. Questi elementi rappresentano una versione pronta per il deployment dei tuoi carichi di lavoro con le modifiche più recenti. Nell'ambito del passaggio di creazione dell'elemento, puoi anche eseguire una convalida automatica dell'elemento stesso. Ad esempio, esegui un'analisi delle vulnerabilità in base a problemi noti e approva l'elemento per il deployment solo se non vengono rilevate vulnerabilità. Ad esempio, puoi utilizzare Artifact Registry per eseguire la scansione degli elementi per rilevare vulnerabilità note.

Infine, puoi automatizzare il deployment di ogni elemento approvato nell'ambiente di destinazione. Se hai più ambienti di runtime, puoi anche implementare una logica di deployment univoca per ciascuno, anche aggiungendo passaggi di approvazione manuale, se necessario. Ad esempio, puoi eseguire il deployment automatico di nuove versioni dei carichi di lavoro negli ambienti di sviluppo, di controllo qualità e di pre-produzione, pur richiedendo una revisione e un'approvazione manuale da parte del team di controllo della produzione per il deployment nell'ambiente di produzione.

Sebbene un processo end-to-end completamente automatizzato sia una delle opzioni migliori se hai bisogno di un processo automatizzato, strutturato, semplificato e verificabile, implementare questo processo non è un'attività banale. Prima di scegliere questo tipo di processo, devi avere una visione chiara dei vantaggi previsti, dei costi coinvolti e se il tuo attuale livello di conoscenza ed esperienza del team è sufficiente per implementare un processo di implementazione completamente automatizzato.

Puoi implementare processi di deployment completamente automatici con Cloud Deploy.

Passaggi successivi

Collaboratori

Autore: Marco Ferrari | Cloud Solutions Architect