Best practice per il ciclo di vita del flusso di lavoro

Questo documento descrive le best practice per la gestione del ciclo di vita del flusso di lavoro in Dataform: creazione di ambienti di sviluppo, staging e produzione e configurazione delle impostazioni di compilazione ed esecuzione per ogni ambiente.

Per creare un ciclo di vita standardizzato dei flussi di lavoro Dataform che mantenga l'igiene dei dati e ottimizzi i processi di sviluppo, ti consigliamo di:

  • Crea ambienti di esecuzione per isolare le tabelle create durante lo sviluppo dalle tabelle disponibili per gli utenti finali.

  • Configura le configurazioni di rilascio e del workflow per eseguire i workflow in un ambiente di produzione e, facoltativamente, in un ambiente di staging.

Questo documento descrive le soluzioni per isolare le tabelle di sviluppo con gli override di compilazione del workspace e per configurare gli ambienti di gestione temporanea e produzione con le configurazioni delle release e le configurazioni dei workflow.

Queste soluzioni ti consentono di creare ambienti di esecuzione all'interno di un singolo repository Dataform e di un singolo progetto Google Cloud . Puoi scegliere di avere più copie di un repository Dataform, ospitate in diversi progettiGoogle Cloud , con ogni progetto corrispondente a una fase del ciclo di vita del codice, ad esempio sviluppo, gestione temporanea e produzione. Questo approccio ti consente di personalizzare le autorizzazioni Identity and Access Management in ogni fase del ciclo di vita del codice.

Best practice per gli ambienti di esecuzione isolati

Ti consigliamo di isolare le tabelle create durante le esecuzioni del flusso di lavoro di sviluppo dalle tabelle di produzione in BigQuery. Ciò garantisce che gli utenti finali possano accedere alle tabelle di produzione ed elimina il rischio che accedano accidentalmente a dati errati.

Puoi creare ambienti di esecuzione isolati nei seguenti modi:

Dividere le tabelle di sviluppo e produzione per schema
Consigliato per piccoli team. Dataform crea tabelle di sviluppo e di produzione in schemi diversi in BigQuery. Dataform esegue tutte le tabelle di sviluppo negli schemi con lo stesso suffisso, che indica che sono state create durante lo sviluppo. Gli sviluppatori possono sovrascrivere le tabelle di sviluppo degli altri.
Dividere le tabelle di sviluppo e produzione per schema e progetto Google Cloud
Consigliata per i team di medie dimensioni. Dataform crea tabelle di sviluppo e di produzione in schemi e progetti diversi in BigQuery. Dataform ha pubblicato tutte le tabelle di sviluppo in un progetto di sviluppo Google Cloud dedicato. Ogni sviluppatore Dataform ha il proprio schema univoco per le tabelle di sviluppo. Questa soluzione elimina il rischio che gli sviluppatori sovrascrivano accidentalmente le tabelle di sviluppo degli altri. Lo svantaggio di questo approccio è che l'eliminazione di tabelle e schemi di sviluppo e la ricreazione di tutte le tabelle in ogni ambiente potrebbero richiedere più tempo.
Dividere le tabelle di sviluppo, gestione temporanea e produzione per Google Cloud progetto
Consigliato per team di grandi dimensioni o team che richiedono un ambiente di staging. Dataform esegue le tabelle di ogni ambiente in un progetto Google Cloud dedicato in BigQuery. Questa soluzione ti offre il massimo controllo sul ciclo di vita del codice.

Tutte le soluzioni richiedono un unico repository Dataform collegato a un unico repository remoto di terze parti.

In tutte le soluzioni, gli sviluppatori attivano manualmente le esecuzioni delle tabelle di sviluppo all'interno dei workspace Dataform. Dataform compila automaticamente le tabelle di produzione e di staging in una configurazione della release e le esegue con la frequenza impostata in una configurazione del workflow.

Dividere lo sviluppo e la produzione per schema

Questa soluzione crea due ambienti di esecuzione in cui Dataform eseguirà i tuoi flussi di lavoro: sviluppo e produzione. Per dividere le tabelle di sviluppo e produzione per schema, devi configurare le impostazioni del workflow, gli override di compilazione del workspace e una configurazione della release. Per pianificare le esecuzioni di produzione, devi creare una configurazione del workflow.

Dataform esegue tutte le tabelle di sviluppo negli schemi con lo stesso suffisso, che indica che sono state create durante lo sviluppo. Dataform esegue tutte le tabelle di produzione negli schemi senza alcun suffisso.

La tabella seguente mostra una configurazione che suddivide le tabelle di sviluppo e produzione per schema, con uno schema di sviluppo:

Impostazione Sviluppo Produzione
Google Cloud project enterprise-analytics enterprise-analytics
Ramo Git nome dello spazio di lavoro main
Override di compilazione del workspace suffisso schema: dev -
Configurazione della release - production
Configurazione del workflow - production

In questa soluzione, le tabelle di sviluppo e produzione vengono archiviate in un unico progettoGoogle Cloud .

Gli sviluppatori attivano l'esecuzione manualmente nei propri workspace Dataform. In tutte le esecuzioni attivate manualmente, Dataform esegue le tabelle negli schemi con lo stesso suffisso, che indica che sono state create durante lo sviluppo. Gli sviluppatori devono essere consapevoli di poter sovrascrivere le tabelle degli altri.

In Dataform, gli sviluppatori eseguono il commit e il push delle modifiche ai rami personalizzati del repository remoto. Poi, nella piattaforma di hosting Git di terze parti, inviano le richieste di pull. L'approvazione di una richiesta di pull unisce le modifiche al ramo main del repository remoto.

Dataform compila automaticamente le tabelle di produzione dal branch main del repository remoto in un risultato di compilazione in base alle impostazioni di configurazione della release production.

Dataform esegue automaticamente il risultato della compilazione production in base alla pianificazione impostata nella configurazione del flusso di lavoro production.

Per implementare questa soluzione, configura le seguenti impostazioni di Dataform:

Impostazioni del workflow

A seconda della versione di Dataform Core, le impostazioni del flusso di lavoro vengono memorizzate in workflow_settings.yaml o dataform.json. Per saperne di più, vedi Configurare le impostazioni del flusso di lavoro Dataform.

In workflow_settings.yaml configura le seguenti impostazioni:

defaultProject: enterprise-analytics
defaultDataset: analytics

In dataform.json, configura le seguenti impostazioni:

{
defaultSchema: "analytics",
defaultDatabase: "enterprise-analytics"
}

Override del workspace

Suffisso schema: "dev"

Configurazione della release

Commitish Git: "main"

Per pianificare le esecuzioni dei risultati della compilazione di production, crea una configurazione del workflow.

Processo di sviluppo del campione

In questo esempio, gli sviluppatori Sasha e Kai lavorano nello stesso repository Dataform. Il repository Dataform è connesso a un repository Git remoto di terze parti.

Eseguono il commit e il push delle modifiche ai rami personalizzati nel repository remoto, denominati sasha e kai.

La seguente tabella mostra le impostazioni dell'ambiente applicate per Sasha, Kai e l'ambiente di produzione:

Impostazione Sasha Kai Produzione
Google Cloud project enterprise-analytics enterprise-analytics enterprise-analytics
Ramo Git sasha kai main
Schema analytics_dev analytics_dev analytics

Sasha crea una nuova tabella e la implementa in produzione nel seguente processo:

  1. In un workspace Dataform, Sasha crea la tabella user_stats.
  2. Nell'area di lavoro, Sasha attiva manualmente l'esecuzione della tabella.
  3. Dataform crea la tabella enterprise-analytics.analytics_dev.user_stats nello schema analytics_dev nel progetto enterprise-analytics Google Cloud in BigQuery.
  4. Nel workspace, Sasha esegue il commit della modifica e ne esegue il push nel branch sasha del repository Git remoto.
  5. Nel repository remoto, Sasha invia una richiesta di pull.
  6. Nel repository remoto, Kai esamina e approva la richiesta di pull, unendo la modifica al ramo main.
  7. Dataform aggiorna automaticamente il risultato della compilazione nella release production alla frequenza specificata. Durante il successivo aggiornamento del risultato di compilazione production, Dataform aggiunge la tabella enterprise-analytics.analytics.user_stats al risultato di compilazione.
  8. Durante l'esecuzione pianificata di una configurazione del workflow, Dataform esegue la tabella enterprise-analytics.analytics.user_stats nello schema analytics nel progetto enterprise-analytics Google Cloud in BigQuery.
  9. La tabella user_stats è disponibile per gli utenti finali nello schema analytics nel progetto enterprise-analytics Google Cloud in BigQuery.

Dividere lo sviluppo e la produzione per schema e progetto

Questa soluzione crea due ambienti di esecuzione: sviluppo e produzione. Per dividere le tabelle di sviluppo e produzione per schema e Google Cloud progetto, devi configurare le impostazioni del workflow, gli override di compilazione del workspace e una configurazione della release. Per pianificare le esecuzioni di produzione, devi creare una configurazione del workflow.

In questa soluzione, Dataform esegue lo sviluppo in un progetto di sviluppo Google Cloud dedicato, in schemi con un suffisso di schema diverso per ogni workspace.

Dataform esegue tutte le tabelle di produzione in BigQuery un progetto di produzione Google Cloud dedicato senza suffisso dello schema.

La seguente tabella mostra una configurazione che suddivide le tabelle di sviluppo e produzione per schema e progetto, con uno schema di sviluppo per ogni spazio di lavoro Dataform: Google Cloud

Impostazione Sviluppo Produzione
Google Cloud project enterprise-dev enterprise-prod
Ramo Git nome dello spazio di lavoro main
Override di compilazione del workspace suffisso schema: ${workspaceName} -
Configurazione della release - production
Configurazione del workflow - production

In questa soluzione, Dataform esegue tabelle di sviluppo e produzione in schemi e progetti Google Cloud diversi in BigQuery.

Gli sviluppatori attivano l'esecuzione manualmente nei propri workspace Dataform. Ogni sviluppatore lavora nel proprio spazio di lavoro dedicato, che prende il suo nome, ad esempio sasha.

Quando uno sviluppatore attiva l'esecuzione nel proprio workspace, Dataform aggiunge il nome del workspace come suffisso dello schema a tutti gli schemi. Quindi, Dataform esegue le tabelle nello schema personalizzato.

Ad esempio, Dataform crea tabelle dal workspace sasha nello schema analytics_sasha in BigQuery. In questo modo, ogni sviluppatore memorizza le proprie tabelle di sviluppo nei propri schemi. Non c'è il rischio di sovrascrivere accidentalmente le tabelle di altri sviluppatori.

In Dataform, gli sviluppatori eseguono il commit e il push delle modifiche ai rami personalizzati del repository remoto. Poi, nella piattaforma di hosting Git di terze parti, inviano le richieste di pull. L'approvazione di una richiesta di pull unisce le modifiche al ramo main del repository remoto.

Dataform compila automaticamente le tabelle di produzione dal branch main del repository remoto in un risultato di compilazione in base alle impostazioni di configurazione della release production.

Dataform esegue automaticamente il risultato della compilazione production in base alla pianificazione impostata nella configurazione del flusso di lavoro production.

Per implementare questa soluzione, configura le seguenti impostazioni di Dataform:

Impostazioni del workflow

A seconda della versione di Dataform Core, le impostazioni del flusso di lavoro vengono memorizzate in workflow_settings.yaml o dataform.json. Per saperne di più, vedi Configurare le impostazioni del flusso di lavoro Dataform.

In workflow_settings.yaml, configura le seguenti impostazioni:

defaultProject: enterprise-dev
defaultDataset: analytics

In dataform.json, configura le seguenti impostazioni:

{
defaultSchema: "analytics",
defaultDatabase: "enterprise-dev"
}

Override del workspace

Suffisso schema: "${workspaceName}"

Configurazione della release

  • Commitish Git: "main"
  • ID progettoGoogle Cloud : "enterprise-prod"

Per pianificare le esecuzioni dei risultati di compilazione di production, crea una configurazione del flusso di lavoro con una pianificazione personalizzata che si adatti meglio alle tue esigenze.

Processo di sviluppo del campione

In questo esempio, gli sviluppatori Sasha e Kai lavorano sullo stesso repository Dataform. Il repository Dataform è connesso a un repository Git remoto di terze parti.

Sasha lavora nel suo spazio di lavoro dedicato chiamato sasha, mentre Kai lavora nel suo spazio di lavoro dedicato chiamato Kai. Eseguono il commit e il push delle modifiche ai rami personalizzati nel repository remoto, denominati sasha e kai.

La seguente tabella mostra le impostazioni dell'ambiente applicate per Sasha, Kai e l'ambiente di produzione:

Impostazione Sasha Kai Produzione
Google Cloud project enterprise-dev enterprise-dev enterprise-prod
Ramo Git sasha kai main
Override di compilazione del workspace suffisso schema: ${workspaceName} suffisso schema: ${workspaceName} -
Configurazione della release - - production
Configurazione del workflow - - production

Sasha crea una nuova tabella e la implementa in produzione nel seguente processo:

  1. Nell'area di lavoro Dataform sasha, Sasha crea la tabella user_stats.
  2. Nello spazio di lavoro sasha, Sasha attiva manualmente l'esecuzione della tabella.
  3. Dataform esegue la tabella enterprise-dev.analytics_sasha.user_stats nello schema analytics_sasha nel progetto enterprise-dev Google Cloud in BigQuery.
  4. Nel workspace sasha, Sasha esegue il commit della modifica e ne esegue il push nel branch sasha del repository Git remoto.
  5. Nel repository remoto, Sasha invia una richiesta di pull.
  6. Nel repository remoto, Kai esamina e approva la richiesta di pull, unendo la modifica al ramo main.
  7. Dataform aggiorna automaticamente il risultato della compilazione nella release production alla frequenza specificata. Durante il successivo aggiornamento del risultato di compilazione production, Dataform aggiunge la tabella enterprise-prod.analytics.user_stats al risultato di compilazione.
  8. Durante l'esecuzione pianificata di una configurazione del workflow, Dataform esegue la tabella enterprise-prod.analytics.user_stats nello schema analytics nel progetto enterprise-prod Google Cloud in BigQuery.
  9. La tabella user_stats è disponibile per gli utenti finali nello schema analytics nel progetto enterprise-prod Google Cloud in BigQuery.

Dividere lo sviluppo, la gestione temporanea e la produzione per schema e progetto

Questa soluzione crea tre ambienti di esecuzione: sviluppo, gestione temporanea e produzione. Tutti gli ambienti sono suddivisi per progetto Google Cloud . Inoltre, lo sviluppo è separato dalla gestione temporanea e dalla produzione per schema.

Per dividere le tabelle di sviluppo, staging e produzione per schema e Google Cloud progetto, devi configurare le impostazioni del workflow, gli override di compilazione del workspace e due configurazioni delle release. Per pianificare le esecuzioni di staging e produzione, devi creare due configurazioni del flusso di lavoro separate.

In questa soluzione, Dataform esegue le tabelle di sviluppo in BigQuery in più schemi di sviluppo, uno per ogni workspace Dataform, in un progetto di sviluppo Google Cloud dedicato.

Dataform esegue tutte le tabelle di gestione temporanea in BigQuery in un progetto di gestione temporanea Google Cloud dedicato negli schemi con lo stesso suffisso, che indica che sono stati creati nella gestione temporanea.

Dataform esegue tutte le tabelle di produzione in BigQuery in un progetto di produzione Google Cloud dedicato negli schemi con lo stesso suffisso, che indica che sono stati creati in produzione.

La seguente tabella mostra un esempio di configurazione che suddivide le tabelle di sviluppo, staging e produzione per schema e progetto Google Cloud , con uno schema di sviluppo per ogni spazio di lavoro Dataform:

Impostazione Sviluppo Gestione temporanea Produzione
Google Cloud project enterprise-dev enterprise-staging enterprise-prod
Ramo Git nome dello spazio di lavoro main prod
Override di compilazione del workspace suffisso schema: ${workspaceName} - -
Configurazione della release - staging production
Configurazione del workflow - staging production

In questa soluzione, Dataform esegue tabelle di sviluppo, staging e produzione in diversi progetti Google Cloud in BigQuery. Inoltre, Dataform esegue le tabelle di sviluppo in più schemi personalizzati, uno per workspace. Dataform esegue le tabelle di staging e di produzione nello stesso schema, ma in progetti diversi. Google Cloud

Gli sviluppatori attivano l'esecuzione manualmente nei propri workspace Dataform. Ogni sviluppatore lavora nel proprio spazio di lavoro dedicato, che prende il suo nome, ad esempio sasha.

Ogni spazio di lavoro corrisponde a uno schema BigQuery personalizzato, che prende il nome dello spazio di lavoro. Quando uno sviluppatore attiva l'esecuzione nel proprio workspace, Dataform aggiunge il nome del workspace come suffisso dello schema allo schema predefinito. Poi, Dataform esegue le tabelle nello schema personalizzato in BigQuery.

Ad esempio, Dataform esegue le tabelle del workspace sasha nello schema analytics_sasha in BigQuery. In questo modo, ogni sviluppatore memorizza le proprie tabelle di sviluppo nel proprio schema. Non c'è il rischio di sovrascrivere accidentalmente le tabelle di altri sviluppatori.

In Dataform, gli sviluppatori eseguono il commit e il push delle modifiche ai rami personalizzati del repository remoto. Poi, nella piattaforma di hosting Git di terze parti, inviano richieste di pull al ramo main. L'approvazione di una richiesta di pull unisce le modifiche al ramo main del repository remoto.

Dataform compila automaticamente le tabelle di staging dal branch main del repository remoto in un risultato di compilazione in base alle impostazioni di configurazione della release staging.

Dataform esegue automaticamente il risultato della compilazione staging in base alla pianificazione impostata nella configurazione del flusso di lavoro staging.

Per promuovere le tabelle dalla gestione temporanea alla produzione, nella piattaforma di hosting Git di terze parti, gli sviluppatori inviano richieste di pull dal ramo main al ramo prod. L'approvazione di una richiesta di pull unisce le modifiche al ramo prod del repository remoto.

Dataform compila automaticamente le tabelle di produzione dal branch prod del repository remoto in un risultato di compilazione in base alle impostazioni di configurazione della release production.

Dataform esegue automaticamente il risultato della compilazione production in base alla pianificazione impostata nella configurazione del flusso di lavoro production.

Per implementare questa soluzione, configura le seguenti impostazioni di Dataform:

Impostazioni del workflow

A seconda della versione di Dataform Core, le impostazioni del flusso di lavoro vengono memorizzate in workflow_settings.yaml o dataform.json. Per saperne di più, vedi Configurare le impostazioni del flusso di lavoro Dataform.

In workflow_settings.yaml, configura le seguenti impostazioni:

defaultProject: enterprise-dev
defaultDataset: analytics

In dataform.json, configura le seguenti impostazioni:

{
defaultSchema: "analytics",
defaultDatabase: "enterprise-dev"
}

Override del workspace

Suffisso schema: "${workspaceName}"

Configurazione della release di staging

  • Commitish Git: "main"
  • ID progettoGoogle Cloud : "enterprise-staging"

Configurazione della release di prod

  • Commitish Git: "prod"
  • ID progettoGoogle Cloud : "enterprise-prod"

Per programmare le esecuzioni dei risultati di compilazione di staging e production, crea due configurazioni del flusso di lavoro separate con pianificazioni personalizzate che si adattino meglio alle tue esigenze.

Processo di sviluppo del campione

In questo esempio, gli sviluppatori Sasha e Kai lavorano nello stesso repository Dataform. Il repository Dataform è connesso a un repository Git remoto di terze parti.

Sasha lavora nel suo spazio di lavoro dedicato chiamato sasha, mentre Kai lavora nel suo spazio di lavoro dedicato chiamato Kai. Eseguono il commit e il push delle modifiche ai rami personalizzati nel repository remoto, denominati sasha e kai.

La seguente tabella mostra le impostazioni dell'ambiente applicate per Sasha, Kai e l'ambiente di produzione:

Impostazione Sasha Kai Gestione temporanea Produzione
Google Cloud project enterprise-dev enterprise-dev enterprise-staging enterprise-prod
Ramo Git sasha kai main prod
Schema analytics_sasha analytics_kai analytics analytics

Sasha crea una nuova tabella e la implementa in produzione nel seguente processo:

  1. Nell'area di lavoro Dataform sasha, Sasha crea la tabella user_stats.
  2. Nello spazio di lavoro sasha, Sasha attiva manualmente l'esecuzione della tabella.
  3. Dataform esegue la tabella enterprise-dev.analytics_sasha.user_stats nello schema analytics_sasha nel progetto enterprise-dev Google Cloud in BigQuery.
  4. Nel workspace sasha, Sasha esegue il commit della modifica e ne esegue il push nel branch sasha del repository Git remoto.
  5. Nel repository remoto, Sasha invia una richiesta di pull al ramo main.
  6. Nel repository remoto, Kai esamina e approva la richiesta di pull, unendo la modifica al ramo main.
  7. Dataform aggiorna automaticamente il risultato della compilazione nella release staging alla frequenza specificata. Durante il successivo aggiornamento del risultato di compilazione staging, Dataform aggiunge la tabella enterprise-staging.analytics.user_stats al risultato di compilazione.
  8. Durante l'esecuzione pianificata di una configurazione del workflow, Dataform esegue la tabella enterprise-staging.analytics.user_stats nello schema analytics nel progetto enterprise-staging Google Cloud in BigQuery.
  9. Nel repository remoto, Sasha invia una richiesta di pull al ramo prod.
  10. Nel repository remoto, Kai esamina e approva la richiesta di pull, unendo la modifica al ramo prod.
  11. Dataform aggiorna automaticamente il risultato della compilazione nella release production alla frequenza specificata. Durante il successivo aggiornamento del risultato di compilazione production, Dataform aggiunge la tabella enterprise-prod.analytics.user_stats al risultato di compilazione.
  12. Durante l'esecuzione pianificata di una configurazione del workflow, Dataform esegue la tabella enterprise-prod.analytics.user_stats nello schema analytics nel progetto enterprise-prod Google Cloud in BigQuery.
  13. La tabella user_stats è disponibile per gli utenti finali nello schema analytics nel progetto enterprise-prod Google Cloud in BigQuery.

Passaggi successivi