Como gerenciar o ciclo de vida do código

Este documento descreve as práticas recomendadas para gerenciar o ciclo de vida do código em Dataform: como criar ambientes de desenvolvimento, preparo e produção e definir configurações de compilação e execução para cada ambiente.

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

  • Criar ambientes de execução para isolar tabelas criadas durante o desenvolvimento de tabelas disponíveis para os usuários finais.

  • Definir as configurações de versão e fluxo de trabalho para executar fluxos de trabalho em um ambiente de produção e, opcionalmente, em um teste.

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

Essas soluções permitem criar ambientes de execução em um único Repositório do Dataform e projeto do Google Cloud. Você pode optar por várias cópias de um repositório do Dataform, hospedadas em diferentes Projeto do Google Cloud, com cada projeto correspondente a uma etapa do seu código desenvolvimento, preparo e produção. Essa abordagem permite que você personalize as permissões do Identity and Access Management em cada estágio do ciclo de vida do código.

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

Recomendamos que você isole as tabelas criadas durante o fluxo de trabalho SQL de desenvolvimento execuções de tabelas de produção no BigQuery. Isso garante que os usuários finais possam navegar até a produção tabelas dinâmicas e elimina o risco de usuários finais acessarem dados incorretos por acidente.

É possível criar ambientes de execução isolados das seguintes maneiras:

Dividir tabelas de desenvolvimento e produção por esquema
Recomendado para equipes pequenas. O Dataform cria ferramentas de de tabelas de produção em esquemas diferentes no BigQuery. O Dataform executa todas as tabelas de desenvolvimento em esquemas o mesmo sufixo, que marca que foram criados durante o desenvolvimento. Os desenvolvedores podem substituir as tabelas de desenvolvimento uns dos outros.
Dividir tabelas de desenvolvimento e produção por esquema e projeto do Google Cloud
Recomendado para equipes de tamanho médio. O Dataform cria ferramentas de tabelas de produção em diferentes esquemas e projetos no BigQuery. O Dataform publicou todas as tabelas de desenvolvimento em um projeto de desenvolvimento dedicado do Google Cloud. Cada desenvolvedor do Dataform tem um esquema de desenvolvimento próprio tabelas. Essa solução elimina o risco dos desenvolvedores as tabelas de desenvolvimento uns dos outros. A desvantagem de essa abordagem é que a exclusão de tabelas e esquemas de desenvolvimento e a recriação todas as tabelas em cada ambiente podem exigir mais tempo.
Dividir tabelas de desenvolvimento, preparo e produção por projeto do Google Cloud
Recomendado para equipes grandes ou que precisam de um ambiente de teste. O Dataform executa tabelas de cada ambiente em uma projeto do Google Cloud no BigQuery. Essa solução oferece ter mais controle sobre o ciclo de vida do código.

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

Em todas as soluções, os desenvolvedores acionar manualmente as execuções de desenvolvimento nos espaços de trabalho do Dataform. Dataform compila automaticamente tabelas de produção e preparo em uma configuração de versão, e as executa na frequência definida em uma configuração de fluxo de trabalho.

Dividir desenvolvimento e produção por esquema

Essa solução cria dois ambientes de execução em que o Dataform executará seus fluxos de trabalho SQL: desenvolvimento e produção. Para dividir tabelas de desenvolvimento e produção por esquema, configure configurações de fluxo de trabalho, substituições de compilação do espaço de trabalho e uma versão configuração do Terraform. Para programar execuções de produção, é preciso criar uma configuração de fluxo de trabalho.

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

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

Configuração Desenvolvimento Produção
Projeto do Google Cloud enterprise-analytics enterprise-analytics
Ramificação Git nome do espaço de trabalho main
Substituições de compilação do espaço de trabalho sufixo do esquema: dev -
Configuração da versão - production
Configuração do fluxo de trabalho - production

Nesta solução, as tabelas de desenvolvimento e produção são armazenadas em um único projeto do Google Cloud.

Os desenvolvedores acionam a execução manualmente nos espaços de trabalho do Dataform. Em todas as execuções acionadas manualmente, o Dataform executa tabelas esquemas com o mesmo sufixo, o que marca que foram criados durante o desenvolvimento. Os desenvolvedores precisam estar cientes as tabelas uns dos outros.

No Dataform, os desenvolvedores confirmam e enviam as alterações aos modelos ramificações do repositório remoto. Depois, na plataforma de hospedagem Git de terceiros, e eles enviam solicitações de envio. A aprovação de uma solicitação de envio mescla as alterações para a ramificação main do repositório remoto.

O Dataform compila automaticamente as tabelas de produção do A ramificação main do repositório remoto em um resultado de compilação de acordo com o as definições de configuração da versão production.

O Dataform executa automaticamente o resultado da compilação production. de acordo com a programação definida na configuração do fluxo de trabalho production.

Para implementar essa solução, defina as seguintes configurações do Dataform:

Configurações do fluxo de trabalho

Dependendo da sua versão do Dataform Core, as configurações do fluxo de trabalho são armazenada em workflow_settings.yaml ou dataform.json. Para mais informações, consulte Definir as configurações de fluxo de trabalho do Dataform

Em workflow_settings.yaml, defina as seguintes configurações:

defaultProject: enterprise-analytics
defaultDataset: analytics

Em dataform.json, defina as seguintes configurações:

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

Substituições do espaço de trabalho

Sufixo do esquema: "dev"

Configuração da versão

Commitish do Git: "main"

Para programar execuções dos resultados da compilação do production, faça o seguinte: criar uma configuração de fluxo de trabalho.

Processo de desenvolvimento de amostra

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

Eles fazem commit e push de alterações em ramificações personalizadas no repositório remoto. chamados sasha e kai.

A tabela a seguir mostra as configurações de ambiente aplicadas para Sasha, Kai, e o ambiente de produção:

Configuração Sasha Kai Produção
Projeto do Google Cloud enterprise-analytics enterprise-analytics enterprise-analytics
Ramificação Git sasha kai main
Esquema analytics_dev analytics_dev analytics

Sasha cria uma nova tabela e a implanta na produção seguindo este processo:

  1. Em um espaço de trabalho do Dataform, Sasha cria a tabela user_stats.sqlx.
  2. No espaço de trabalho, Sasha aciona manualmente a execução da tabela.
  3. O Dataform cria Tabela enterprise-analytics.analytics_dev.user_stats no Esquema analytics_dev em enterprise-analytics projeto do Google Cloud no BigQuery.
  4. No espaço de trabalho, Sasha confirma a mudança e a envia para o sasha no repositório Git remoto.
  5. No repositório remoto, Sasha envia uma solicitação de envio.
  6. No repositório remoto, Kai analisa e aprova a solicitação de envio. mesclando a mudança na ramificação main.
  7. O Dataform atualiza automaticamente o resultado da compilação na production na frequência especificada. Durante a próxima atualização production, o Dataform adiciona o enterprise-analytics.analytics.user_stats ao resultado da compilação.
  8. Durante a execução programada de uma configuração de fluxo de trabalho, o Dataform executa a tabela enterprise-analytics.analytics.user_stats no esquema analytics do projeto enterprise-analytics do Google Cloud no BigQuery.
  9. A tabela user_stats.sqlx está disponível para usuários finais no seguinte país: analytics no projeto enterprise-analytics do Google Cloud no BigQuery.

Dividir desenvolvimento e produção por esquema e projeto

Essa solução cria dois ambientes de execução: desenvolvimento e produção. Para dividir tabelas de desenvolvimento e produção por esquema e projeto do Google Cloud, você precisa definir as configurações do fluxo de trabalho, substituições de compilação do espaço de trabalho e uma configuração de versão. Para programar execuções de produção, é preciso criar uma configuração de fluxo de trabalho.

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

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

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

Configuração Desenvolvimento Produção
Projeto do Google Cloud enterprise-dev enterprise-prod
Ramificação Git nome do espaço de trabalho main
Substituições de compilação do espaço de trabalho sufixo do esquema: ${workspaceName} -
Configuração da versão - production
Configuração do fluxo de trabalho - production

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

Os desenvolvedores acionam a execução manualmente nos espaços de trabalho do Dataform. Cada desenvolvedor trabalha em um espaço de trabalho dedicado, que recebe o nome dele por exemplo, sasha.

Quando um desenvolvedor aciona a execução no espaço de trabalho, O Dataform anexa o nome do espaço de trabalho como o sufixo do esquema a todos os esquemas. Depois, o Dataform executa no esquema personalizado.

Por exemplo, o Dataform cria tabelas do espaço de trabalho sasha no esquema analytics_sasha do BigQuery. Dessa forma, cada desenvolvedor armazena as tabelas de desenvolvimento nos próprios esquemas. Não há risco de substituindo acidentalmente tabelas de outros desenvolvedores.

No Dataform, os desenvolvedores confirmam e enviam as alterações aos modelos ramificações do repositório remoto. Depois, na plataforma de hospedagem Git de terceiros, e eles enviam solicitações de envio. A aprovação de uma solicitação de envio mescla as alterações para a ramificação main do repositório remoto.

O Dataform compila automaticamente as tabelas de produção do A ramificação main do repositório remoto em um resultado de compilação de acordo com o as definições de configuração da versão production.

O Dataform executa automaticamente o resultado da compilação production. de acordo com a programação definida na configuração do fluxo de trabalho production.

Para implementar essa solução, defina as seguintes configurações do Dataform:

Configurações do fluxo de trabalho

Dependendo da sua versão do Dataform Core, as configurações do fluxo de trabalho são armazenada em workflow_settings.yaml ou dataform.json. Para mais informações, consulte Definir as configurações de fluxo de trabalho do Dataform

Em workflow_settings.yaml, defina as seguintes configurações:

defaultProject: enterprise-dev
defaultDataset: analytics

Em dataform.json, defina as seguintes configurações:

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

Substituições do espaço de trabalho

Sufixo do esquema: "${workspaceName}"

Configuração da versão

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

Para programar execuções dos resultados da compilação do production, faça o seguinte: criar uma configuração de fluxo de trabalho com uma programação personalizada que atenda melhor às suas necessidades.

Processo de desenvolvimento de amostra

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

Sasha trabalha em um espaço de trabalho dedicado chamado sasha, e Kai trabalha no espaço de trabalho exclusivo chamado Kai. Eles fazem commit e push de alterações em ramificações personalizadas no repositório remoto. chamados sasha e kai.

A tabela a seguir mostra as configurações de ambiente aplicadas para Sasha, Kai, e o ambiente de produção:

Configuração Sasha Kai Produção
Projeto do Google Cloud enterprise-dev enterprise-dev enterprise-prod
Ramificação Git sasha kai main
Substituições de compilação do espaço de trabalho sufixo do esquema: ${workspaceName} sufixo do esquema: ${workspaceName} -
Configuração da versão - - production
Configuração do fluxo de trabalho - - production

Sasha cria uma nova tabela e a implanta na produção seguindo este processo:

  1. No espaço de trabalho sasha do Dataform, Sasha cria na tabela user_stats.sqlx.
  2. No espaço de trabalho sasha, Sasha aciona manualmente a execução da tabela.
  3. O Dataform executa Tabela enterprise-dev.analytics_sasha.user_stats no Esquema analytics_sasha no projeto enterprise-dev do Google Cloud no BigQuery.
  4. No espaço de trabalho sasha, Sasha confirma a mudança e a envia para o Ramificação sasha no repositório Git remoto.
  5. No repositório remoto, Sasha envia uma solicitação de envio.
  6. No repositório remoto, Kai analisa e aprova a solicitação de envio. mesclando a mudança na ramificação main.
  7. O Dataform atualiza automaticamente o resultado da compilação na production na frequência especificada. Durante a próxima atualização production, o Dataform adiciona o enterprise-prod.analytics.user_stats ao resultado da compilação.
  8. Durante a execução programada de uma configuração de fluxo de trabalho, o Dataform executa a tabela enterprise-prod.analytics.user_stats no esquema analytics do projeto enterprise-prod do Google Cloud no BigQuery.
  9. A tabela user_stats.sqlx está disponível para usuários finais no seguinte país: analytics no projeto enterprise-prod do Google Cloud no BigQuery.

Dividir desenvolvimento, preparo e produção por esquema e projeto

Essa solução cria três ambientes de execução: desenvolvimento, preparo e produção. Todos os ambientes são divididos por projeto do Google Cloud. Além disso, o desenvolvimento é dividido do preparo e da produção por esquema.

Para dividir as tabelas de desenvolvimento, preparo e produção por esquema e projeto do Google Cloud, você precisa definir as configurações do fluxo de trabalho, substituições de compilação do espaço de trabalho e duas configurações de versão. Para programar o preparo e a produção você precisa criar duas configurações de fluxo de trabalho separadas.

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

O Dataform executa todas as tabelas de preparo no BigQuery em um projeto de teste dedicado do Google Cloud em esquemas com o mesmo sufixo, indicando que eles foram criados no preparo.

O Dataform executa todas as tabelas de produção no BigQuery em um projeto de produção dedicado do Google Cloud em esquemas com o mesmo sufixo, que marca que eles foram criados em produção.

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

Configuração Desenvolvimento Preparo Produção
Projeto do Google Cloud enterprise-dev enterprise-staging enterprise-prod
Ramificação Git nome do espaço de trabalho main prod
Substituições de compilação do espaço de trabalho sufixo do esquema: ${workspaceName} - -
Configuração da versão - staging production
Configuração do fluxo de trabalho - staging production

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

Os desenvolvedores acionam a execução manualmente nos espaços de trabalho do Dataform. Cada desenvolvedor trabalha em um espaço de trabalho dedicado, que recebe o nome dele por exemplo, sasha.

Cada espaço de trabalho corresponde a um esquema personalizado do BigQuery, com o nome do espaço de trabalho. Quando um desenvolvedor aciona a execução no espaço de trabalho, O Dataform anexa o nome do espaço de trabalho como o sufixo do esquema para o esquema padrão. Depois, o Dataform executa no esquema personalizado do BigQuery.

Por exemplo, o Dataform executa tabelas do espaço de trabalho sasha no esquema analytics_sasha do BigQuery. Dessa forma, cada desenvolvedor armazena as tabelas de desenvolvimento nos próprios esquemas. Não há risco de substituindo acidentalmente tabelas de outros desenvolvedores.

No Dataform, os desenvolvedores confirmam e enviam as alterações aos modelos ramificações do repositório remoto. Depois, na plataforma de hospedagem Git de terceiros, eles enviam solicitações de envio para a ramificação main. Aprovação de uma solicitação de envio mescla as alterações na ramificação main do repositório remoto.

O Dataform compila automaticamente as tabelas de preparo do A ramificação main do repositório remoto em um resultado de compilação de acordo com o as definições de configuração da versão staging.

O Dataform executa automaticamente o resultado da compilação staging. de acordo com a programação definida na configuração do fluxo de trabalho staging.

Para passar tabelas do preparo à produção, na solução de hospedagem Git de terceiros plataforma, os desenvolvedores enviam solicitações de envio da ramificação main para o prod. ramificação. A aprovação de uma solicitação de envio mescla as alterações na ramificação prod do repositório remoto.

O Dataform compila automaticamente as tabelas de produção do A ramificação prod do repositório remoto em um resultado de compilação de acordo com o as definições de configuração da versão production.

O Dataform executa automaticamente o resultado da compilação production. de acordo com a programação definida na configuração do fluxo de trabalho production.

Para implementar essa solução, defina as seguintes configurações do Dataform:

Configurações do fluxo de trabalho

Dependendo da sua versão do Dataform Core, as configurações do fluxo de trabalho são armazenada em workflow_settings.yaml ou dataform.json. Para mais informações, consulte Definir as configurações de fluxo de trabalho do Dataform

Em workflow_settings.yaml, defina as seguintes configurações:

defaultProject: enterprise-dev
defaultDataset: analytics

Em dataform.json, defina as seguintes configurações:

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

Substituições do espaço de trabalho

Sufixo do esquema: "${workspaceName}"

Configuração de versão do staging

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

Configuração de versão do prod

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

Para programar execuções dos resultados da compilação de staging e production, faça o seguinte: criar duas configurações de fluxo de trabalho separadas com programações personalizadas que melhor se adaptem às suas necessidades.

Processo de desenvolvimento de amostra

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

Sasha trabalha em um espaço de trabalho dedicado chamado sasha, e Kai trabalha no espaço de trabalho exclusivo chamado Kai. Eles fazem commit e push de alterações em ramificações personalizadas no repositório remoto. chamados sasha e kai.

A tabela a seguir mostra as configurações de ambiente aplicadas para Sasha, Kai, e o ambiente de produção:

Configuração Sasha Kai Preparo Produção
Projeto do Google Cloud enterprise-dev enterprise-dev enterprise-staging enterprise-prod
Ramificação Git sasha kai main prod
Esquema analytics_sasha analytics_kai analytics analytics

Sasha cria uma nova tabela e a implanta na produção seguindo este processo:

  1. No espaço de trabalho sasha do Dataform, Sasha cria na tabela user_stats.sqlx.
  2. No espaço de trabalho sasha, Sasha aciona manualmente a execução da tabela.
  3. O Dataform executa Tabela enterprise-dev.analytics_sasha.user_stats no Esquema analytics_sasha no projeto enterprise-dev do Google Cloud no BigQuery.
  4. No espaço de trabalho sasha, Sasha confirma a mudança e a envia para o Ramificação sasha no repositório Git remoto.
  5. No repositório remoto, Sasha envia uma solicitação de envio para a ramificação main.
  6. No repositório remoto, Kai analisa e aprova a solicitação de envio. mesclando a mudança na ramificação main.
  7. O Dataform atualiza automaticamente o resultado da compilação na staging na frequência especificada. Durante a próxima atualização staging, o Dataform adiciona o enterprise-staging.analytics.user_stats ao resultado da compilação.
  8. Durante a execução programada de uma configuração de fluxo de trabalho, o Dataform executa a tabela enterprise-staging.analytics.user_stats no esquema analytics do projeto enterprise-staging do Google Cloud no BigQuery.
  9. No repositório remoto, Sasha envia uma solicitação de envio para a ramificação prod.
  10. No repositório remoto, Kai analisa e aprova a solicitação de envio. mesclando a mudança na ramificação prod.
  11. O Dataform atualiza automaticamente o resultado da compilação na production na frequência especificada. Durante a próxima atualização production, o Dataform adiciona o enterprise-prod.analytics.user_stats ao resultado da compilação.
  12. Durante a execução programada de uma configuração de fluxo de trabalho, o Dataform executa a tabela enterprise-prod.analytics.user_stats no esquema analytics do projeto enterprise-prod do Google Cloud em no BigQuery.
  13. A tabela user_stats.sqlx está disponível para usuários finais no seguinte país: analytics no projeto enterprise-prod do Google Cloud no BigQuery.

A seguir