Práticas recomendadas para o ciclo de vida do fluxo de trabalho

Este documento descreve as práticas recomendadas para gerir o ciclo de vida do fluxo de trabalho no Dataform: criar ambientes de desenvolvimento, teste e produção, e configurar as definições de compilação e execução para cada ambiente.

Para criar um ciclo de vida padronizado dos fluxos de trabalho do Dataform que mantém a higiene dos dados e otimiza os processos de desenvolvimento, recomendamos que:

  • Crie ambientes de execução para isolar as tabelas criadas durante o desenvolvimento das tabelas disponíveis para os utilizadores finais.

  • Configure as configurações de lançamento e fluxo de trabalho para executar fluxos de trabalho num ambiente de produção e, opcionalmente, num ambiente de preparação.

Este documento descreve soluções para isolar tabelas de desenvolvimento com substituições de compilação do espaço de trabalho e configurar ambientes de preparação e produção com configurações de lançamento e configurações de fluxo de trabalho.

Estas soluções permitem-lhe criar ambientes de execução num único repositório do Dataform e Google Cloud projeto. Pode optar por ter várias cópias de um repositório do Dataform, alojadas numGoogle Cloud projeto diferente, com cada projeto a corresponder a uma fase do ciclo de vida do código, por exemplo, desenvolvimento, teste e produção. Esta abordagem permite-lhe personalizar as autorizações da gestão de identidade e de acesso em cada fase do ciclo de vida do código.

Práticas recomendadas para ambientes de execução isolados

Recomendamos que isole as tabelas criadas durante as execuções do fluxo de trabalho de desenvolvimento das tabelas de produção no BigQuery. Isto garante que os utilizadores finais podem navegar para tabelas de produção e elimina o risco de os utilizadores finais acederem a dados incorretos por acidente.

Pode criar ambientes de execução isolados das seguintes formas:

Divida as tabelas de programação e produção por esquema
Recomendado para equipas pequenas. O Dataform cria tabelas de desenvolvimento e de produção em esquemas diferentes no BigQuery. O Dataform executa todas as tabelas de desenvolvimento em esquemas com o mesmo sufixo, o que indica que foram criadas durante o desenvolvimento. Os programadores podem substituir as tabelas de desenvolvimento uns dos outros.
Divida as tabelas de desenvolvimento e produção por esquema e Google Cloud projeto
Recomendado para equipas de tamanho médio. O Dataform cria tabelas de desenvolvimento e de produção em esquemas e projetos diferentes no BigQuery. O Dataform publicou todas as tabelas de desenvolvimento num projeto de desenvolvimento Google Cloud dedicado. Cada programador do Dataform tem o seu próprio esquema exclusivo para tabelas de desenvolvimento. Esta solução elimina o risco de os programadores substituírem acidentalmente as tabelas de desenvolvimento uns dos outros. A desvantagem desta abordagem é que a eliminação de tabelas e esquemas de desenvolvimento, bem como a recriação de todas as tabelas em cada ambiente, pode demorar mais tempo.
Divida as tabelas de desenvolvimento, teste e produção por Google Cloud projeto
Recomendado para equipas grandes ou equipas que requerem um ambiente de preparação. O Dataform executa tabelas de cada ambiente num projeto do BigQuery dedicado.Google Cloud Esta solução dá-lhe o maior controlo sobre o ciclo de vida do código.

Todas as soluções requerem um único repositório do Dataform associado a um único repositório remoto de terceiros.

Em todas as soluções, os programadores acionam manualmente as execuções de tabelas de desenvolvimento nos respetivos espaços de trabalho do Dataform. O Dataform compila automaticamente tabelas de produção e de preparação numa configuração de lançamento e executa-as na frequência definida numa configuração de fluxo de trabalho.

Divida o desenvolvimento e a produção por esquema

Esta solução cria dois ambientes de execução nos quais o Dataform executa os seus fluxos de trabalho: desenvolvimento e produção. Para dividir as tabelas de desenvolvimento e produção por esquema, tem de configurar as definições do fluxo de trabalho, as substituições de compilação do espaço de trabalho e uma configuração de lançamento. Para agendar execuções de produção, tem de criar uma configuração de fluxo de trabalho.

O Dataform executa todas as tabelas de desenvolvimento nos esquemas que têm o mesmo sufixo, o que indica que foram criadas durante o desenvolvimento. O Dataform executa todas as tabelas de produção nos esquemas sem qualquer sufixo.

A tabela seguinte mostra uma configuração que divide as tabelas de desenvolvimento e produção por esquema, com um esquema de desenvolvimento:

Definição Programação Produção
Google Cloud projeto enterprise-analytics enterprise-analytics
Ramo do Git nome do espaço de trabalho main
Substituições de compilação do Workspace sufixo do esquema: dev -
Configuração de lançamento - production
Configuração do fluxo de trabalho - production

Nesta solução, as tabelas de desenvolvimento e produção são armazenadas num único projetoGoogle Cloud .

Os programadores acionam a execução manualmente nos respetivos espaços de trabalho do Dataform. Em todas as execuções acionadas manualmente, o Dataform executa tabelas em esquemas que têm o mesmo sufixo, o que indica que foram criadas durante o desenvolvimento. Os programadores têm de ter em atenção que podem substituir as tabelas uns dos outros.

No Dataform, os programadores confirmam e enviam as alterações para os ramos personalizados do repositório remoto. Em seguida, na plataforma de alojamento Git de terceiros, enviam pedidos de obtenção. A aprovação de um pedido de envio incorpora as alterações no ramo main do repositório remoto.

O Dataform compila automaticamente tabelas de produção a partir da ramificação main do repositório remoto num resultado de compilação de acordo com as definições de configuração de lançamento production.

O Dataform executa automaticamente o productionresultado da compilação de acordo com o horário definido na productionconfiguração do fluxo de trabalho.

Para implementar esta solução, configure as seguintes definições do Dataform:

Definições do fluxo de trabalho

Consoante a sua versão do Dataform core, as definições do fluxo de trabalho são armazenadas em workflow_settings.yaml ou dataform.json. Para mais informações, consulte o artigo Configure as definições do fluxo de trabalho do Dataform.

Em workflow_settings.yaml, configure as seguintes definições:

defaultProject: enterprise-analytics
defaultDataset: analytics

Em dataform.json, configure as seguintes definições:

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

Substituições do Workspace

Sufixo do esquema: "dev"

Configuração de lançamento

Git commitish: "main"

Para agendar execuções de productionresultados de compilação, crie uma configuração do fluxo de trabalho.

Exemplo de processo de desenvolvimento

Neste exemplo, os programadores Sasha e Kai trabalham no mesmo repositório do Dataform. O repositório do Dataform está associado a um repositório Git remoto de terceiros.

Eles confirmam e enviam alterações para ramos personalizados no repositório remoto, denominados sasha e kai.

A tabela seguinte mostra as definições de ambiente aplicadas para Sasha, Kai e o ambiente de produção:

Definição Sasha Kai Produção
Google Cloud projeto enterprise-analytics enterprise-analytics enterprise-analytics
Ramo do Git sasha kai main
Esquema analytics_dev analytics_dev analytics

A Sasha cria uma nova tabela e implementa-a na produção através do seguinte processo:

  1. Num espaço de trabalho do Dataform, a Sasha cria a tabela user_stats.
  2. No espaço de trabalho, a Sasha aciona manualmente a execução da tabela.
  3. O Dataform cria a tabela enterprise-analytics.analytics_dev.user_stats no esquema analytics_dev no projeto enterprise-analytics Google Cloud no BigQuery.
  4. No espaço de trabalho, o Sílvio consolida a alteração e envia-a para o ramo sasha no repositório Git remoto.
  5. No repositório remoto, o Sílvio envia um pedido de envio.
  6. No repositório remoto, o Kai revê e aprova o pedido de envio, unindo a alteração ao ramo main.
  7. O Dataform atualiza automaticamente o resultado da compilação na versão production com a frequência especificada. Durante a atualização seguinte do resultado da compilação production, o Dataform adiciona a tabela enterprise-analytics.analytics.user_stats ao resultado da compilação.
  8. Durante uma execução agendada de uma configuração de fluxo de trabalho, o Dataform executa a tabela enterprise-analytics.analytics.user_stats no esquema analytics no projeto enterprise-analytics Google Cloud no BigQuery.
  9. A tabela user_stats está disponível para os utilizadores finais no esquema analytics no projeto enterprise-analytics Google Cloud no BigQuery.

Divida o desenvolvimento e a produção por esquema e projeto

Esta solução cria dois ambientes de execução: desenvolvimento e produção. Para dividir as tabelas de desenvolvimento e produção por esquema e Google Cloud projeto, tem de configurar as definições do fluxo de trabalho, as substituições de compilação do espaço de trabalho e uma configuração de lançamento. Para agendar execuções de produção, tem de criar uma configuração de fluxo de trabalho.

Nesta solução, o Dataform executa o desenvolvimento num projeto Google Cloud de desenvolvimento dedicado, em esquemas com um sufixo de esquema diferente para cada espaço de trabalho.

O Dataform executa todas as tabelas de produção no BigQuery um projeto de produção Google Cloud dedicado sem sufixo de esquema.

A tabela seguinte mostra uma configuração que divide as tabelas de desenvolvimento e produção por esquema e Google Cloud projeto, com um esquema de desenvolvimento por espaço de trabalho do Dataform:

Definição Programação Produção
Google Cloud projeto enterprise-dev enterprise-prod
Ramo do Git nome do espaço de trabalho main
Substituições de compilação do Workspace sufixo do esquema: ${workspaceName} -
Configuração de lançamento - production
Configuração do fluxo de trabalho - production

Nesta solução, o Dataform executa tabelas de desenvolvimento e produção em esquemas diferentes e Google Cloud projetos no BigQuery.

Os programadores acionam a execução manualmente nos respetivos espaços de trabalho do Dataform. Cada programador trabalha no respetivo espaço de trabalho dedicado, com o seu nome, por exemplo, sasha.

Quando um programador aciona a execução no respetivo espaço de trabalho, a app Dataform anexa o nome do espaço de trabalho como o sufixo do esquema a todos os esquemas. Em seguida, o Dataform executa tabelas no esquema personalizado.

Por exemplo, o Dataform cria tabelas a partir do espaço de trabalho sasha no esquema analytics_sasha no BigQuery. Desta forma, cada programador armazena as respetivas tabelas de desenvolvimento nos seus próprios esquemas. Não existe o risco de substituir acidentalmente tabelas de outros programadores.

No Dataform, os programadores confirmam e enviam as alterações para os ramos personalizados do repositório remoto. Em seguida, na plataforma de alojamento Git de terceiros, enviam pedidos de obtenção. A aprovação de um pedido de envio incorpora as alterações no ramo main do repositório remoto.

O Dataform compila automaticamente tabelas de produção a partir da ramificação main do repositório remoto num resultado de compilação de acordo com as definições de configuração de lançamento production.

O Dataform executa automaticamente o productionresultado da compilação de acordo com o horário definido na productionconfiguração do fluxo de trabalho.

Para implementar esta solução, configure as seguintes definições do Dataform:

Definições do fluxo de trabalho

Consoante a sua versão do Dataform core, as definições do fluxo de trabalho são armazenadas em workflow_settings.yaml ou dataform.json. Para mais informações, consulte o artigo Configure as definições do fluxo de trabalho do Dataform.

Em workflow_settings.yaml, configure as seguintes definições:

defaultProject: enterprise-dev
defaultDataset: analytics

Em dataform.json, configure as seguintes definições:

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

Substituições do Workspace

Sufixo do esquema: "${workspaceName}"

Configuração de lançamento

  • Git commitish: "main"
  • Google Cloud ID do projeto: "enterprise-prod"

Para agendar execuções de productionresultados de compilação, crie uma configuração de fluxo de trabalho com um agendamento personalizado que se adapte melhor às suas necessidades.

Exemplo de processo de desenvolvimento

Neste exemplo, os programadores Sasha e Kai trabalham no mesmo repositório do Dataform. O repositório do Dataform está associado a um repositório Git remoto de terceiros.

A Sasha trabalha no respetivo espaço de trabalho dedicado denominado sasha, e o Kai trabalha no respetivo espaço de trabalho dedicado denominado Kai. Eles confirmam e enviam alterações para ramos personalizados no repositório remoto, denominados sasha e kai.

A tabela seguinte mostra as definições de ambiente aplicadas para Sasha, Kai e o ambiente de produção:

Definição Sasha Kai Produção
Google Cloud projeto enterprise-dev enterprise-dev enterprise-prod
Ramo do Git sasha kai main
Substituições de compilação do Workspace sufixo do esquema: ${workspaceName} sufixo do esquema: ${workspaceName} -
Configuração de lançamento - - production
Configuração do fluxo de trabalho - - production

A Sasha cria uma nova tabela e implementa-a na produção através do seguinte processo:

  1. No espaço de trabalho do sashaDataform, a Sasha cria a tabela user_stats.
  2. No espaço de trabalho sasha, a Sasha aciona manualmente a execução da tabela.
  3. O Dataform executa a tabela enterprise-dev.analytics_sasha.user_stats no esquema analytics_sasha no projeto enterprise-dev Google Cloud no BigQuery.
  4. No espaço de trabalho sasha, o Sílvio consolida a alteração e envia-a para o ramo sasha no repositório Git remoto.
  5. No repositório remoto, o Sílvio envia um pedido de envio.
  6. No repositório remoto, o Kai revê e aprova o pedido de envio, unindo a alteração ao ramo main.
  7. O Dataform atualiza automaticamente o resultado da compilação na versão production com a frequência especificada. Durante a atualização seguinte do resultado da compilação production, o Dataform adiciona a tabela enterprise-prod.analytics.user_stats ao resultado da compilação.
  8. Durante uma execução agendada de uma configuração de fluxo de trabalho, o Dataform executa a tabela enterprise-prod.analytics.user_stats no esquema analytics no projeto enterprise-prod Google Cloud no BigQuery.
  9. A tabela user_stats está disponível para os utilizadores finais no esquema analytics no projeto enterprise-prod Google Cloud no BigQuery.

Divida o desenvolvimento, a preparação e a produção por esquema e projeto

Esta solução cria três ambientes de execução: desenvolvimento, teste e produção. Todos os ambientes estão divididos por Google Cloud projeto. Além disso, o desenvolvimento está separado do teste e da produção por esquema.

Para dividir as tabelas de desenvolvimento, preparação e produção por esquema e Google Cloud projeto, tem de configurar as definições do fluxo de trabalho, as substituições de compilação do espaço de trabalho e duas configurações de lançamento. Para agendar execuções de preparação e produção, tem de criar duas configurações de fluxo de trabalho separadas.

Nesta solução, o Dataform executa tabelas de desenvolvimento no BigQuery em vários esquemas de desenvolvimento, um por espaço de trabalho do Dataform, num projeto de desenvolvimento Google Cloud dedicado.

O Dataform executa todas as tabelas de preparação no BigQuery num projeto de preparação Google Cloud dedicado em esquemas com o mesmo sufixo, o que indica que foram criadas na preparação.

O Dataform executa todas as tabelas de produção no BigQuery num projeto de produção Google Cloud dedicado em esquemas com o mesmo sufixo, o que indica que foram criadas em produção.

A tabela seguinte mostra um exemplo de configuração que divide as tabelas de desenvolvimento, de teste e de produção por esquema e Google Cloud projeto, com um esquema de desenvolvimento por espaço de trabalho do Dataform:

Definição Programação A testar Produção
Google Cloud projeto enterprise-dev enterprise-staging enterprise-prod
Ramo do Git nome do espaço de trabalho main prod
Substituições de compilação do Workspace sufixo do esquema: ${workspaceName} - -
Configuração de lançamento - staging production
Configuração do fluxo de trabalho - staging production

Nesta solução, o Dataform executa tabelas de desenvolvimento, preparação e produção em diferentes Google Cloud projetos no BigQuery. Além disso, o Dataform executa tabelas de desenvolvimento em vários esquemas personalizados, um por espaço de trabalho. O Dataform executa tabelas de preparação e produção no mesmo esquema, mas em Google Cloud projetos diferentes.

Os programadores acionam a execução manualmente nos respetivos espaços de trabalho do Dataform. Cada programador trabalha no respetivo espaço de trabalho dedicado, com o seu nome, por exemplo, sasha.

Cada espaço de trabalho corresponde a um esquema do BigQuery personalizado, com o nome do espaço de trabalho. Quando um programador aciona a execução no respetivo espaço de trabalho, a app Dataform anexa o nome do espaço de trabalho como o sufixo do esquema ao esquema predefinido. Em seguida, o Dataform executa tabelas no esquema personalizado no BigQuery.

Por exemplo, o Dataform executa tabelas a partir do espaço de trabalho sasha no esquema analytics_sasha no BigQuery. Desta forma, cada programador armazena as respetivas tabelas de desenvolvimento no seu próprio esquema. Não existe o risco de substituir acidentalmente tabelas de outros programadores.

No Dataform, os programadores confirmam e enviam as alterações para os ramos personalizados do repositório remoto. Em seguida, na plataforma de alojamento Git de terceiros, enviam pedidos de obtenção para o ramo main. A aprovação de um pedido de envio une as alterações ao ramo main do repositório remoto.

O Dataform compila automaticamente tabelas de preparação a partir do ramo main do repositório remoto num resultado de compilação de acordo com as definições de configuração de lançamento staging.

O Dataform executa automaticamente o stagingresultado da compilação de acordo com o horário definido na stagingconfiguração do fluxo de trabalho.

Para promover tabelas da fase de testes para a produção, na plataforma de alojamento Git de terceiros, os programadores enviam pedidos de obtenção do ramo main para o ramo prod. A aprovação de um pedido de envio incorpora as alterações no ramo prod do repositório remoto.

O Dataform compila automaticamente tabelas de produção a partir da ramificação prod do repositório remoto num resultado de compilação de acordo com as definições de configuração de lançamento production.

O Dataform executa automaticamente o productionresultado da compilação de acordo com o horário definido na productionconfiguração do fluxo de trabalho.

Para implementar esta solução, configure as seguintes definições do Dataform:

Definições do fluxo de trabalho

Consoante a sua versão do Dataform core, as definições do fluxo de trabalho são armazenadas em workflow_settings.yaml ou dataform.json. Para mais informações, consulte o artigo Configure as definições do fluxo de trabalho do Dataform.

Em workflow_settings.yaml, configure as seguintes definições:

defaultProject: enterprise-dev
defaultDataset: analytics

Em dataform.json, configure as seguintes definições:

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

Substituições do Workspace

Sufixo do esquema: "${workspaceName}"

staging configuração de lançamento

  • Git commitish: "main"
  • Google Cloud ID do projeto: "enterprise-staging"

prod configuração de lançamento

  • Git commitish: "prod"
  • Google Cloud ID do projeto: "enterprise-prod"

Para agendar execuções de resultados de compilação staging e production, crie duas configurações de fluxo de trabalho separadas com agendamentos personalizados que se adequem melhor às suas necessidades.

Exemplo de processo de desenvolvimento

Neste exemplo, os programadores Sasha e Kai trabalham no mesmo repositório do Dataform. O repositório do Dataform está associado a um repositório Git remoto de terceiros.

A Sasha trabalha no respetivo espaço de trabalho dedicado denominado sasha, e o Kai trabalha no respetivo espaço de trabalho dedicado denominado Kai. Eles confirmam e enviam alterações para ramos personalizados no repositório remoto, denominados sasha e kai.

A tabela seguinte mostra as definições de ambiente aplicadas para Sasha, Kai e o ambiente de produção:

Definição Sasha Kai A testar Produção
Google Cloud projeto enterprise-dev enterprise-dev enterprise-staging enterprise-prod
Ramo do Git sasha kai main prod
Esquema analytics_sasha analytics_kai analytics analytics

A Sasha cria uma nova tabela e implementa-a na produção através do seguinte processo:

  1. No espaço de trabalho do sashaDataform, a Sasha cria a tabela user_stats.
  2. No espaço de trabalho sasha, a Sasha aciona manualmente a execução da tabela.
  3. O Dataform executa a tabela enterprise-dev.analytics_sasha.user_stats no esquema analytics_sasha no projeto enterprise-dev Google Cloud no BigQuery.
  4. No espaço de trabalho sasha, o Sílvio consolida a alteração e envia-a para o ramo sasha no repositório Git remoto.
  5. No repositório remoto, o Sílvio envia um pedido de obtenção para a ramificação main.
  6. No repositório remoto, o Kai revê e aprova o pedido de envio, unindo a alteração ao ramo main.
  7. O Dataform atualiza automaticamente o resultado da compilação na versão staging com a frequência especificada. Durante a atualização seguinte do resultado da compilação staging, o Dataform adiciona a tabela enterprise-staging.analytics.user_stats ao resultado da compilação.
  8. Durante uma execução agendada de uma configuração de fluxo de trabalho, o Dataform executa a tabela enterprise-staging.analytics.user_stats no esquema analytics no projeto enterprise-staging Google Cloud no BigQuery.
  9. No repositório remoto, o Sílvio envia um pedido de obtenção para a ramificação prod.
  10. No repositório remoto, o Kai revê e aprova o pedido de envio, unindo a alteração ao ramo prod.
  11. O Dataform atualiza automaticamente o resultado da compilação na versão production com a frequência especificada. Durante a atualização seguinte do resultado da compilação production, o Dataform adiciona a tabela enterprise-prod.analytics.user_stats ao resultado da compilação.
  12. Durante uma execução agendada de uma configuração de fluxo de trabalho, o Dataform executa a tabela enterprise-prod.analytics.user_stats no esquema analytics no projeto enterprise-prod Google Cloud no BigQuery.
  13. A tabela user_stats está disponível para os utilizadores finais no esquema analytics no projeto enterprise-prod Google Cloud no BigQuery.

O que se segue?