Migrate to Google Cloud (Esegui la migrazione a Google Cloud): esegui il deployment dei carichi di lavoro

Last reviewed 2023-12-08 UTC

Questo documento può aiutarti a pianificare e progettare la fase di deployment della migrazione a Google Cloud. Dopo aver valutato la tua situazione attuale dell'ambiente di lavoro, pianificato la migrazione a Google Cloud e creato alla piattaforma Google Cloud, puoi eseguire il deployment dei tuoi 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, da un altro cloud provider Google Cloud o se stai valutando l'opportunità di eseguire la migrazione e vuoi per esaminarne il potenziale aspetto.

In questo documento vengono esaminati i diversi tipi di processi di deployment, per di flessibilità, automazione e complessità, oltre a criteri su come scegliere l'approccio giusto per te:

  1. Esegui il deployment manualmente.
  2. Esegui il deployment con gli strumenti di gestione della configurazione (CM).
  3. Esegui il deployment utilizzando 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 procedura di implementazione, puoi decidere di iniziare con una procedura semplice e passare in futuro a una più complessa. Questo approccio può portare a risultati più rapidi, ma può anche creare attriti quando si passa a un processo più avanzato, perché è necessario assorbire il debito tecnico accumulato durante l'utilizzo del processo più semplice. Ad esempio, se sposti da deployment completamente manuali a soluzioni automatizzate, potresti dover gestire e upgrade della pipeline e delle app di deployment.

Sebbene sia possibile implementare diversi tipi di processi di deployment in base ai carichi di lavoro esigenze, questo approccio può anche aumentare complessità di questa fase. Se implementi diversi tipi di deployment, di processi, puoi trarre vantaggio dalla maggiore flessibilità, ma potresti aver bisogno esperienza, strumenti e risorse su misura per ogni processo, più impegno da parte tua.

Esegui il deployment manualmente

Un deployment completamente manuale è supportato di deployment completamente non automatizzato. Sebbene potrebbero esserci specifiche ed elenchi di controllo per ogni fase del processo, controllo automatizzato o applicazione di tali 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 processo strutturato e automatizzato per un esperimento che dura pochi minuti può rallentare inutilmente il ritmo, soprattutto nelle fasi iniziali della migrazione, quando potresti non avere le competenze necessarie sugli strumenti e sulle pratiche che ti consentono di creare un processo automatizzato.

Sebbene questo limite non sia il caso di Google Cloud, le modifiche i deployment potrebbero essere la tua unica opzione quando hai a che fare con ambienti bare metal. che non dispongono delle API di gestione necessarie. In questo caso, non puoi implementare un processo automatico a causa della mancanza delle interfacce necessarie. Se disponi di un un'infrastruttura virtualizzata legacy che non supporta alcuna automazione, essere costretta a implementare un processo completamente manuale

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

Puoi implementare un provisioning, una configurazione e un deployment completamente manuali processo utilizzando strumenti come Console Google Cloud, Cloud Shell 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 il set di operazioni incluso non è sufficiente, gli strumenti CM spesso presentano un sistema di estensioni che puoi usare per sviluppare moduli personalizzati. 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 di 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 l'estensione menzionata in precedenza punti. Queste estensioni possono richiedere uno sforzo aggiuntivo e possono aumentare la copertura del processo di deployment, perché hai bisogno delle competenze necessarie per progettare, sviluppare e mantenere una soluzione di deployment personalizzata.

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

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 carichi di lavoro con scale out impegnativi.

Uno strumento di orchestrazione dei container si occupa della gestione dell'infrastruttura alla base del tuo ambiente e supporta un'ampia gamma operazioni e componenti di base per implementare la logica di deployment da usare 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 inoltre astrazioni che puoi utilizzare per generalizza i processi di deployment nei diversi ambienti sottostanti, non dovrai progettare e implementare più processi per ambienti cloud-native. Ad esempio, questi strumenti di solito includono la logica per la scalabilità eseguendo l'upgrade dei deployment, in modo da non doverli implementare personalmente. 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. Adottando questi di base, acquisirai esperienza nell'amministrazione ambienti, questa esperienza è utile per la migrazione in Google Cloud.

Utilizzi uno strumento di orchestrazione dei container se i tuoi carichi di lavoro sono già containerizzate o se puoi containerizzarli in futuro e prevedi investire in questa iniziativa. 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 le potenziali insidie superano i vantaggi della containerizzazione, utilizzare uno strumento di orchestrazione dei container solo se i team sono già impegnati nell' e se non si vogliono gestire ambienti eterogenei.

Ad esempio, il deployment delle soluzioni di data warehouse solitamente non viene eseguito strumenti di orchestrazione, perché non sono progettati per essere eseguiti containerizzati.

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. Puoi anche inserire manualmente passaggi di approvazione del processo di deployment, se necessario, ma ogni passaggio automatizzati.

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 artefatti.
  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 un'assistenza di alto 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 nel codebase, lo strumento CI può eseguire automaticamente test, valutare i risultati e poi inviare una notifica con la build attuale. 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 build riuscita, puoi automatizzare la creazione del deployment artefatti. 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'artefatto, puoi anche eseguire una convalida automatica dell'artefatto 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à.

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 ognuna, anche aggiungendo l'approvazione manuale passaggi, se necessario. Ad esempio, puoi eseguire automaticamente il deployment di nuove versioni in fase di sviluppo, controllo qualità e pre-produzione ambienti, pur continuando a richiedere la revisione e l'approvazione manuale da parte del tuo di produzione per il deployment nell'ambiente di produzione.

Sebbene un processo end-to-end completamente automatizzato sia una delle opzioni migliori necessitano di un processo automatizzato, strutturato, semplificato e verificabile, implementando questo processo non è di poco conto. 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