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

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

Para criar um ciclo de vida padronizado de fluxos de trabalho do Dataform que mantenha a higiene dos 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 staging.

Neste documento, descrevemos soluções para isolar tabelas de desenvolvimento com substituições de compilação do espaço de trabalho e configurar ambientes de teste e produção com configurações de lançamento e configurações de fluxo de trabalho.

Com essas soluções, é possível criar ambientes de execução em um único repositório e projeto do Dataform Google Cloud . Você pode ter várias cópias de um repositório do Dataform, hospedadas em diferentesGoogle Cloud projetos, com cada projeto correspondendo a uma etapa do ciclo de vida do código, por exemplo, desenvolvimento, preparo e produção. Essa abordagem permite personalizar 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 isolar as tabelas criadas durante as execuções do fluxo de trabalho 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 acessar 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 tabelas de desenvolvimento e 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 elas foram criadas 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 Google Cloud
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 de desenvolvimento Google Cloud 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.
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 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 tabelas de produção e de preparo em uma configuração de lançamento e as executa na frequência definida em uma configuração de fluxo de trabalho.

Dividir o desenvolvimento e a produção por esquema

Essa solução cria dois ambientes de execução em que o Dataform executará seus fluxos de trabalho: desenvolvimento e produção. Para dividir as tabelas de desenvolvimento e produção por esquema, é necessário configurar as configurações de 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 nos esquemas que têm o mesmo sufixo, o que indica que elas foram criadas durante o desenvolvimento. O Dataform executa todas as tabelas de produção nos esquemas sem sufixo.

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

Configuração Desenvolvimento Produção
Google Cloud projeto 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

Nesta 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 indica que elas foram criadas durante o desenvolvimento. Os desenvolvedores precisam saber que podem substituir as tabelas uns dos outros.

No Dataform, os desenvolvedores confirmam e enviam as mudanças para as ramificações personalizadas do repositório remoto. Em seguida, na plataforma de hospedagem 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 ramificação main do repositório remoto em um resultado de compilação de acordo com as configurações de configuração de lançamento 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 opções do Dataform:

Configurações de fluxo de trabalho

Dependendo da versão do Dataform Core, as configurações de fluxo de trabalho são armazenadas em workflow_settings.yaml ou dataform.json. Para mais informações, consulte Configurar as definições de 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 do 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 mudanças para ramificações personalizadas no repositório remoto, chamadas 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
Google Cloud projeto 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 processo a seguir:

  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 do projeto enterprise-analytics Google Cloud no BigQuery.
  4. No espaço de trabalho, Sasha confirma a mudança e a envia por push 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 do projeto enterprise-analytics Google Cloud no BigQuery.
  9. A tabela user_stats está disponível para usuários finais no esquema analytics do 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 projeto Google Cloud , é necessário configurar as definições de 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 em um projeto de produção Google Cloud dedicado sem um sufixo de esquema.

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

Configuração Desenvolvimento Produção
Google Cloud projeto 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 projetos no BigQuery. Google Cloud

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

Quando um desenvolvedor aciona a execução no espaço de trabalho dele, 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 do BigQuery. Assim, cada desenvolvedor armazena as tabelas de desenvolvimento nos próprios esquemas. Não há risco de substituir acidentalmente tabelas de outros desenvolvedores.

No Dataform, os desenvolvedores confirmam e enviam as mudanças para as ramificações personalizadas do repositório remoto. Em seguida, na plataforma de hospedagem 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 ramificação main do repositório remoto em um resultado de compilação de acordo com as configurações de configuração de lançamento 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 opções do Dataform:

Configurações de fluxo de trabalho

Dependendo da versão do Dataform Core, as configurações de fluxo de trabalho são armazenadas em workflow_settings.yaml ou dataform.json. Para mais informações, consulte Configurar as definições de 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 projeto: "enterprise-prod"Google Cloud

Para programar execuções dos resultados da compilação do production, crie uma configuração de fluxo de trabalho com uma programação personalizada que melhor se adapte à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 mudanças para ramificações personalizadas no repositório remoto, chamadas 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
Google Cloud projeto 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 processo a seguir:

  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 do projeto enterprise-dev Google Cloud no BigQuery.
  4. No espaço de trabalho sasha, Sasha confirma a mudança e a envia por push 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 do projeto enterprise-prod Google Cloud no BigQuery.
  9. A tabela user_stats está disponível para usuários finais no esquema analytics do projeto enterprise-prod Google Cloud no BigQuery.

Divida o desenvolvimento, o preparo e a 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 Google Cloud projeto. Além disso, o desenvolvimento é separado da preparação e da produção por esquema.

Para dividir tabelas de desenvolvimento, de teste e de produção por esquema e projeto Google Cloud , é necessário configurar as definições de fluxo de trabalho, as substituições de compilação do espaço de trabalho e duas configurações de lançamento. 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 indica que elas foram criadas em preparo.

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

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

Configuração Desenvolvimento Preparo Produção
Google Cloud projeto 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, de teste e de produção em diferentes projetos do BigQuery. Google Cloud 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 teste 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 próprio espaço de trabalho dedicado, nomeado com o nome dele, por exemplo, sasha.

Cada espaço de trabalho corresponde a um esquema personalizado do BigQuery, nomeado de acordo com o espaço de trabalho. Quando um desenvolvedor aciona a execução no espaço de trabalho dele, 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. Assim, cada desenvolvedor armazena as tabelas de desenvolvimento no próprio esquema. Não há risco de substituir acidentalmente tabelas de outros desenvolvedores.

No Dataform, os desenvolvedores confirmam e enviam as mudanças para as ramificações personalizadas do repositório remoto. Em seguida, na plataforma de hospedagem 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 tabelas de staging da ramificação main do repositório remoto em um resultado de compilação de acordo com as configurações de configuração 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 preparo para a produção, na plataforma de hospedagem Git de terceiros, os desenvolvedores enviam solicitações de envio da ramificação main para a 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 ramificação prod do repositório remoto em um resultado de compilação de acordo com as configurações de configuração de lançamento 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 opções do Dataform:

Configurações de fluxo de trabalho

Dependendo da versão do Dataform Core, as configurações de fluxo de trabalho são armazenadas em workflow_settings.yaml ou dataform.json. Para mais informações, consulte Configurar as definições de 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 do staging

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

Configuração de versão do prod

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

Para programar execuções dos resultados da compilação staging e production, crie duas configurações de fluxo de trabalho separadas com programações personalizadas que atendam 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 mudanças para ramificações personalizadas no repositório remoto, chamadas 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
Google Cloud projeto 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 processo a seguir:

  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 do projeto enterprise-dev Google Cloud no BigQuery.
  4. No espaço de trabalho sasha, Sasha confirma a mudança e a envia por push 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 do 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 do BigQuery.
  13. A tabela user_stats está disponível para usuários finais no esquema analytics do projeto enterprise-prod Google Cloud no BigQuery.

A seguir