Gerenciar o ciclo de vida do código

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

Para criar um ciclo de vida padronizado de fluxos de trabalho do SQL do Dataform que mantenha a higiene de dados e otimize os processos de desenvolvimento, recomendamos que você:

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

  • Configure as configurações de lançamento e fluxo de trabalho para executar fluxos de trabalho em um ambiente de produção e, opcionalmente, em um ambiente de pré-produção.

Este documento descreve soluções para isolar tabelas de desenvolvimento com substituições de compilação do espaço de trabalho e configuração de ambientes de teste e de produção configurações de lançamento 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 Google Cloud . Você pode ter várias cópias de um repositório do Dataform, armazenadas em diferentes projetosGoogle Cloud , com cada projeto correspondendo a um estágio do ciclo de vida do código, por exemplo, desenvolvimento, teste e produção. Essa abordagem permite personalizar as permissões do Identity and Access Management em cada fase do ciclo de vida do código.

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

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

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

Dividir as tabelas de desenvolvimento e produção por esquema
Recomendado para pequenas equipes. O Dataform cria tabelas de desenvolvimento e produção em diferentes esquemas no BigQuery. O Dataform executa todas as tabelas de desenvolvimento em esquemas que têm o mesmo sufixo, o que marca que elas foram criadas durante o desenvolvimento. Os desenvolvedores podem substituir as tabelas de desenvolvimento uns dos outros.
Dividir as tabelas de desenvolvimento e produção por esquema e Google Cloud projeto
Recomendado para equipes de tamanho médio. O Dataform cria tabelas de desenvolvimento e produção em diferentes esquemas e projetos no BigQuery. O Dataform publicou todas as tabelas de desenvolvimento em um projeto Google Cloud de desenvolvimento dedicado. Cada desenvolvedor do Dataform tem um esquema exclusivo para tabelas de desenvolvimento. Essa solução elimina o risco de os desenvolvedores substituírem acidentalmente as tabelas de desenvolvimento uns dos outros. A desvantagem dessa abordagem é que excluir tabelas e esquemas de desenvolvimento e recriar todas as tabelas em cada ambiente pode levar mais tempo.
Separar as tabelas de desenvolvimento, preparação e produção por Google Cloud projeto
Recomendado para equipes grandes ou que exigem um ambiente de preparação. O Dataform executa tabelas de cada ambiente em um projetoGoogle Cloud dedicado no BigQuery. Essa solução oferece o maior controle sobre o ciclo de vida do código.

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

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

Separar o desenvolvimento e a produção por esquema

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

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

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

Configuração Desenvolvimento Produção
ProjetoGoogle Cloud enterprise-analytics enterprise-analytics
Ramificação do 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

Nessa solução, as tabelas de desenvolvimento e produção são armazenadas em um único projetoGoogle 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 em esquemas com o mesmo sufixo, o que marca que elas foram criadas durante o desenvolvimento. Os desenvolvedores precisam estar cientes de que podem substituir as tabelas uns dos outros.

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

O Dataform compila automaticamente as tabelas de produção da filial main do repositório remoto em um resultado de compilação de acordo com as configuraçõ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, configure as seguintes configurações do Dataform:

Configurações do fluxo de trabalho

Dependendo da versão do núcleo do Dataform, as configurações do fluxo de trabalho são armazenadas em workflow_settings.yaml ou dataform.json. Para mais informações, consulte Configurar as configurações do fluxo de trabalho do Dataform.

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

defaultProject: enterprise-analytics
defaultDataset: analytics

Em dataform.json, configure 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 de resultados de compilação de production, crie uma configuração de fluxo de trabalho.

Exemplo de processo de desenvolvimento

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.

Eles confirmam e enviam as alterações para as ramificações personalizadas no repositório remoto, chamadas de 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
ProjetoGoogle Cloud enterprise-analytics enterprise-analytics enterprise-analytics
Ramificação do Git sasha kai main
Esquema analytics_dev analytics_dev analytics

Sasha cria uma nova tabela e a implanta na produção no seguinte processo:

  1. Em um espaço de trabalho do Dataform, Sasha cria a tabela user_stats.
  2. No espaço de trabalho, 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, Sasha confirma a alteração e a envia para a 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 versão production na frequência especificada. Durante a próxima atualização 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 programada 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 usuários finais no esquema analytics no projeto enterprise-analytics Google Cloud no BigQuery.

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

Essa 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, é necessário configurar as configurações do fluxo de trabalho, as substituições de compilação do espaço de trabalho e uma configuração de versão. Para programar execuções de produção, é necessário criar uma configuração de fluxo de trabalho.

Nesta solução, o Dataform executa o desenvolvimento em um projeto de desenvolvimento Google Cloud dedicado, 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 Google Cloud dedicado sem sufixo de esquema.

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

Configuração Desenvolvimento Produção
ProjetoGoogle Cloud enterprise-dev enterprise-prod
Ramificação do 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 Google Cloud projetos no BigQuery.

Os desenvolvedores acionam a execução manualmente nos espaços de trabalho do Dataform. Cada desenvolvedor trabalha no espaço de trabalho dedicado, com 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. Em seguida, o Dataform executa tabelas no esquema personalizado.

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

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

O Dataform compila automaticamente as tabelas de produção da filial main do repositório remoto em um resultado de compilação de acordo com as configuraçõ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, configure as seguintes configurações do Dataform:

Configurações do fluxo de trabalho

Dependendo da versão do núcleo do Dataform, as configurações do fluxo de trabalho são armazenadas em workflow_settings.yaml ou dataform.json. Para mais informações, consulte Configurar as configurações do fluxo de trabalho do Dataform.

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

defaultProject: enterprise-dev
defaultDataset: analytics

Em dataform.json, configure 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 projetoGoogle Cloud : "enterprise-prod"

Para programar execuções de resultados de compilação de production, crie uma configuração de fluxo de trabalho com uma programação personalizada que atenda melhor às suas necessidades.

Exemplo de processo de desenvolvimento

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 no espaço de trabalho dedicado chamado sasha, e Kai trabalha no espaço de trabalho dedicado chamado Kai. Eles confirmam e enviam as alterações para as ramificações personalizadas no repositório remoto, chamadas de 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
ProjetoGoogle Cloud enterprise-dev enterprise-dev enterprise-prod
Ramificação do 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 no seguinte processo:

  1. No espaço de trabalho do Dataform sasha, Sasha cria a tabela user_stats.
  2. No espaço de trabalho sasha, 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, Sasha confirma a alteração e a envia para a 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 versão production na frequência especificada. Durante a próxima atualização 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 programada 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 usuários finais no esquema analytics no projeto enterprise-prod Google Cloud no BigQuery.

Separar o desenvolvimento, o preparo e a produção por esquema e projeto

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

Para dividir as tabelas de desenvolvimento, de pré-produção e de produção por esquema e Google Cloud projeto, é necessário configurar as configurações do fluxo de trabalho, as substituições de compilação do espaço de trabalho e duas configurações de versão. Para programar execuções de preparação e produção, é necessário 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, em um projeto de desenvolvimento Google Cloud dedicado.

O Dataform executa todas as tabelas de preparo no BigQuery em um projeto de preparo Google Cloud dedicado em esquemas com o mesmo sufixo, o que marca que elas foram criadas no preparo.

O Dataform executa todas as tabelas de produção no BigQuery em um projeto Google Cloud de produção dedicado em esquemas que têm o mesmo sufixo, o que marca que elas foram criadas na produção.

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

Configuração Desenvolvimento Preparo Produção
ProjetoGoogle Cloud enterprise-dev enterprise-staging enterprise-prod
Ramificação do 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 tabelas de desenvolvimento, orquestraçã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 projetos Google Cloud diferentes.

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

Cada espaço de trabalho corresponde a um esquema personalizado do BigQuery, com o mesmo nome. 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 ao esquema padrão. Em seguida, o Dataform executa tabelas no esquema personalizado no BigQuery.

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

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

O Dataform compila automaticamente as tabelas de preparação da filiação main do repositório remoto em um resultado de compilação de acordo com as configurações de lançamento 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 promover tabelas do ambiente de teste para a produção, na plataforma de hospedagem de Git de terceiros, os desenvolvedores enviam solicitações de envio da ramificação main para a ramificação prod. A aprovação de uma solicitação de envio mescla as mudanças na ramificação prod do repositório remoto.

O Dataform compila automaticamente as tabelas de produção da filial prod do repositório remoto em um resultado de compilação de acordo com as configuraçõ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, configure as seguintes configurações do Dataform:

Configurações do fluxo de trabalho

Dependendo da versão do núcleo do Dataform, as configurações do fluxo de trabalho são armazenadas em workflow_settings.yaml ou dataform.json. Para mais informações, consulte Configurar as configurações do fluxo de trabalho do Dataform.

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

defaultProject: enterprise-dev
defaultDataset: analytics

Em dataform.json, configure 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 staging

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

Configuração de versão prod

  • Commitish do Git: "prod"
  • ID do projetoGoogle Cloud : "enterprise-prod"

Para programar execuções de resultados de compilação de staging e production, crie duas configurações de fluxo de trabalho separadas com programações personalizadas que melhor atendam às suas necessidades.

Exemplo de processo de desenvolvimento

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 no espaço de trabalho dedicado chamado sasha, e Kai trabalha no espaço de trabalho dedicado chamado Kai. Eles confirmam e enviam as alterações para as ramificações personalizadas no repositório remoto, chamadas de 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
ProjetoGoogle Cloud enterprise-dev enterprise-dev enterprise-staging enterprise-prod
Ramificação do Git sasha kai main prod
Esquema analytics_sasha analytics_kai analytics analytics

Sasha cria uma nova tabela e a implanta na produção no seguinte processo:

  1. No espaço de trabalho do Dataform sasha, Sasha cria a tabela user_stats.
  2. No espaço de trabalho sasha, 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, Sasha confirma a alteração e a envia para a 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 versão staging na frequência especificada. Durante a próxima atualização 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 programada 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, 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 versão production na frequência especificada. Durante a próxima atualização 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 programada 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 usuários finais no esquema analytics no projeto enterprise-prod Google Cloud no BigQuery.

A seguir