Utilizza una pipeline CI/CD per i flussi di lavoro di elaborazione dati

Last reviewed 2023-05-12 UTC

Questo documento descrive come configurare una pipeline di integrazione continua/deployment continuo (CI/CD) per l'elaborazione dei dati implementando metodi CI/CD con prodotti gestiti su Google Cloud. I data scientist e gli analisti possono adattare le metodologie dalle pratiche CI/CD per contribuire a garantire alta qualità, manutenibilità e adattabilità dei processi e dei flussi di lavoro dei dati. I metodi che puoi applicare sono i seguenti:

  • Controllo della versione del codice sorgente.
  • Creazione, test e deployment automatici delle app.
  • Isolamento e separazione dell'ambiente dalla produzione.
  • Procedure replicabili per la configurazione dell'ambiente.

Questo documento è destinato a data scientist e analisti che creano job di elaborazione dati in esecuzione ricorrente per strutturare la struttura di ricerca e sviluppo (R&S) in modo da gestire sistematicamente e automaticamente i carichi di lavoro di elaborazione dati.

Architettura

Il seguente diagramma mostra una visualizzazione dettagliata dei passaggi della pipeline CI/CD.

Diagramma dell'architettura della pipeline CI/CD.

I deployment nell'ambiente di test e di produzione vengono separati in due diverse pipeline di Cloud Build: una di test e una di produzione.

Nel diagramma precedente, la pipeline di test è costituita dai seguenti passaggi:

  1. Uno sviluppatore esegue il commit delle modifiche al codice in Cloud Source Repositories.
  2. Le modifiche al codice attivano una build di test in Cloud Build.
  3. Cloud Build crea il file JAR a esecuzione automatica e ne esegue il deployment nel bucket JAR di test su Cloud Storage.
  4. Cloud Build esegue il deployment dei file di test nei bucket dei file di test in Cloud Storage.
  5. Cloud Build imposta la variabile in Cloud Composer per fare riferimento al file JAR di cui è stato appena eseguito il deployment.
  6. Cloud Build verifica il flusso di lavoro di elaborazione dati Directed Acyclic Graph (DAG) e ne esegue il deployment nel bucket Cloud Composer su Cloud Storage.
  7. Viene eseguito il deployment del file DAG del flusso di lavoro in Cloud Composer.
  8. Cloud Build attiva l'esecuzione del flusso di lavoro di elaborazione dati di cui è stato appena eseguito il deployment.
  9. Una volta superato il test di integrazione del flusso di lavoro di elaborazione dati, in Pub/Sub viene pubblicato un messaggio contenente un riferimento all'ultimo JAR a esecuzione automatica (ottenuto dalle variabili Airflow) nel campo dati del messaggio.

Nel diagramma precedente, la pipeline di produzione è costituita dai seguenti passaggi:

  1. La pipeline di deployment della produzione viene attivata quando un messaggio viene pubblicato in un argomento Pub/Sub.
  2. Uno sviluppatore approva manualmente la pipeline di deployment di produzione e la build viene eseguita.
  3. Cloud Build copia l'ultimo file JAR a esecuzione automatica dal bucket JAR di test al bucket JAR di produzione su Cloud Storage.
  4. Cloud Build verifica il DAG del flusso di lavoro di elaborazione dati di produzione e ne esegue il deployment nel bucket Cloud Composer su Cloud Storage.
  5. Viene eseguito il deployment del file DAG del flusso di lavoro di produzione in Cloud Composer.

In questo documento di architettura di riferimento, il deployment del flusso di lavoro di elaborazione dati di produzione viene eseguito nello stesso ambiente Cloud Composer del flusso di lavoro di test, per ottenere una visione consolidata di tutti i flussi di lavoro di elaborazione dati. Ai fini di questa architettura di riferimento, gli ambienti sono separati utilizzando bucket Cloud Storage diversi per contenere i dati di input e di output.

Per separare completamente gli ambienti, sono necessari più ambienti Cloud Composer creati in progetti diversi, che sono separati per impostazione predefinita l'uno dall'altro. Questa separazione contribuisce a proteggere l'ambiente di produzione. Questo approccio non rientra nell'ambito di questo tutorial. Per saperne di più su come accedere alle risorse in più progetti Google Cloud, consulta Impostare le autorizzazioni per gli account di servizio.

Flusso di lavoro di elaborazione dati

Le istruzioni su come Cloud Composer esegue il flusso di lavoro di elaborazione dati sono definite in un grafico diretto aciclico (DAG, Directed Acyclic Graph) scritto in Python. Nel DAG, tutti i passaggi del flusso di lavoro di elaborazione dati sono definiti insieme alle dipendenze tra di essi.

La pipeline CI/CD esegue automaticamente il deployment della definizione DAG da Cloud Source Repositories a Cloud Composer in ogni build. Questo processo garantisce che Cloud Composer sia sempre aggiornato con la definizione del flusso di lavoro più recente, senza alcun intervento umano.

Nella definizione dei DAG per l'ambiente di test, in aggiunta al flusso di lavoro di elaborazione dei dati viene definita una fase di test end-to-end. Il passaggio del test assicura che il flusso di lavoro di elaborazione dati venga eseguito correttamente.

Il flusso di lavoro di elaborazione dati è illustrato nel diagramma seguente.

Il flusso di lavoro dell'elaborazione dati in quattro fasi.

Il flusso di lavoro di elaborazione dati prevede i seguenti passaggi:

  1. Eseguire il processo di dati WordCount in Dataflow.
  2. Scarica i file di output dal processo WordCount. Il processo Conteggio parole restituisce tre file:

    • download_result_1
    • download_result_2
    • download_result_3
  3. Scarica il file di riferimento, denominato download_ref_string.

  4. Verifica il risultato in base al file di riferimento. Questo test di integrazione aggrega tutti e tre i risultati e confronta i risultati aggregati con il file di riferimento.

  5. Pubblica un messaggio in Pub/Sub una volta superato il test di integrazione.

L'utilizzo di un framework di orchestrazione delle attività come Cloud Composer per gestire il flusso di lavoro di elaborazione dati consente di ridurre la complessità del codice del flusso di lavoro.

Ottimizzazione dei costi

In questo documento utilizzerai i seguenti componenti fatturabili di Google Cloud:

Deployment

Per eseguire il deployment di questa architettura, vedi Eseguire il deployment di una pipeline CI/CD per i flussi di lavoro di elaborazione dati.

Passaggi successivi