Gérer le cycle de vie du code

Ce document décrit les bonnes pratiques pour gérer le cycle de vie du code dans Dataform: créer des environnements de développement, de préproduction et de production et configurer les paramètres de compilation et d'exécution pour chaque environnement.

Pour créer un cycle de vie standardisé des workflows Dataform SQL assure l'hygiène des données et optimise les processus de développement, nous vous recommandons de procéder comme suit:

  • Créez des environnements d'exécution pour isoler les tables développement à partir de tables mises à la disposition des utilisateurs finaux.

  • Configurer les versions et les workflows pour exécuter les workflows dans un environnement de production, et éventuellement dans un environnement de préproduction.

Ce document décrit des solutions permettant d'isoler le développement avec des remplacements de compilation Workspace la configuration des environnements de préproduction et de production configurations de versions et des configurations de workflow.

Ces solutions vous permettent de créer des environnements d'exécution au sein d'une un dépôt Dataform et un projet Google Cloud. Vous pouvez choisir d'avoir plusieurs copies d'un dépôt Dataform, hébergé dans différentes Un projet Google Cloud, chaque projet correspondant à une étape de votre code (développement, préproduction et production, par exemple). Cette approche permet de personnaliser les autorisations Identity and Access Management. à chaque étape du cycle de vie de votre code.

Bonnes pratiques pour les environnements d'exécution isolés

Nous vous recommandons d'isoler les tables créées lors du workflow SQL de développement à partir de tables de production dans BigQuery. Cela permet aux utilisateurs finaux d'accéder à l'environnement de production et élimine le risque d'accès accidentel à des données incorrectes par les utilisateurs finaux.

Vous pouvez créer des environnements d'exécution isolés de différentes manières:

Diviser les tables de développement et de production par schéma
Recommandé pour les petites équipes. Dataform crée des modèles de développement tables de production dans différents schémas BigQuery. Dataform exécute toutes les tables de développement dans des schémas comportant le même suffixe, ce qui indique qu'ils ont été créés pendant le développement. Les développeurs peuvent écraser mutuellement leurs tables de développement.
Répartir les tables de développement et de production par schéma et par projet Google Cloud
Recommandé pour les équipes de taille moyenne. Dataform crée des modèles de développement tables de production dans différents schémas et projets dans BigQuery. Dataform a publié toutes les tables de développement dans un projet Google Cloud de développement dédié. Chaque développeur Dataform dispose de son propre schéma de développement tableaux. Cette solution élimine le risque pour les développeurs en écrasant accidentellement leurs tables de développement. L'inconvénient de cette approche consiste à supprimer des tables et des schémas de développement, et à recréer toutes les tables de chaque environnement peut prendre plus de temps.
Répartir les tables de développement, de préproduction et de production par projet Google Cloud
Recommandé pour les grandes équipes ou les équipes nécessitant un environnement de préproduction. Dataform exécute les tables de chaque environnement dans un environnement projet Google Cloud dans BigQuery. Cette solution vous donne un contrôle maximal sur le cycle de vie du code.

Toutes les solutions nécessitent un seul dépôt Dataform connectés à un dépôt distant unique tiers.

Dans toutes les solutions, les développeurs déclencher manuellement les exécutions du développement dans leurs espaces de travail Dataform. Dataform compile automatiquement les tables de production et de préproduction dans une configuration de version, et les exécute à la fréquence définie dans une configuration de workflow.

Répartition du développement et de la production par schéma

Cette solution crée deux environnements d'exécution dans lesquels Dataform exécutera vos workflows SQL: développement et production. Pour diviser les tables de développement et de production par schéma, vous devez configurer paramètres de workflow, remplacements de compilation d'espace de travail et version configuration. Pour planifier des exécutions en production, vous devez créer une configuration de workflow.

Dataform exécute toutes les tables de développement dans des schémas ayant le le même suffixe, ce qui indique qu'ils ont été créés pendant le développement. Dataform exécute toutes les tables de production dans des schémas sans suffixe.

Le tableau suivant présente une configuration qui divise le développement et de production par schéma, avec un seul schéma de développement:

Paramètre Développement Production
Projet Google Cloud enterprise-analytics enterprise-analytics
Branche Git nom de l'espace de travail main
Remplacements de compilation d'espace de travail Suffixe de schéma: dev -
Configuration de version - production
Configuration du workflow - production

Dans cette solution, les tables de développement et de production sont stockées dans un seul projet Google Cloud.

Les développeurs déclenchent l'exécution manuellement dans leurs espaces de travail Dataform. Dans toutes les exécutions déclenchées manuellement, Dataform exécute les tables des schémas ayant le même suffixe, ce qui indique qu'ils ont été créés pendant le développement. Les développeurs doivent savoir qu'ils peuvent écraseront mutuellement leurs tables.

Dans Dataform, les développeurs valident et appliquent les modifications à leurs les branches du dépôt distant. Ensuite, sur la plate-forme d'hébergement Git tierce, ils envoient des demandes d'extraction. Approbation d'une demande d'extraction : fusion des modifications à la branche main du dépôt distant.

Dataform compile automatiquement les tables de production la branche main du dépôt distant en un résultat de compilation les paramètres de configuration des versions production.

Dataform exécute automatiquement le résultat de la compilation production en fonction de la planification définie dans la configuration du workflow production.

Pour implémenter cette solution, configurez les paramètres Dataform suivants:

Paramètres du workflow

Selon la version de Dataform Core, les paramètres de workflow sont stocké dans workflow_settings.yaml ou dataform.json. Pour en savoir plus, consultez Configurez les paramètres de workflow Dataform.

Dans workflow_settings.yaml, configurez les paramètres suivants:

defaultProject: enterprise-analytics
defaultDataset: analytics

Dans dataform.json, configurez les paramètres suivants:

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

Forçages de l'espace de travail

Suffixe du schéma: "dev"

Configuration de version

Commitish Git: "main"

Pour planifier l'exécution des résultats de compilation production, procédez comme suit : créer une configuration de workflow ;

Exemple de processus de développement

Dans cet exemple, les développeurs Sasha et Kai travaillent dans le dans le même dépôt Dataform. Le dépôt Dataform est connecté vers un dépôt Git tiers distant.

Ils valident et transmettent les modifications aux branches personnalisées du dépôt distant, appelé sasha et kai.

Le tableau suivant présente les paramètres d'environnement appliqués pour Sasha, Kai, et l'environnement de production:

Paramètre Sasha Kai Production
Projet Google Cloud enterprise-analytics enterprise-analytics enterprise-analytics
Branche Git sasha kai main
Schéma analytics_dev analytics_dev analytics

Sasha crée une table et la déploie en production en procédant comme suit:

  1. Dans un espace de travail Dataform, Sasha crée la table user_stats.sqlx.
  2. Dans l'espace de travail, Sasha déclenche manuellement l'exécution de la table.
  3. Dataform crée la Tableau enterprise-analytics.analytics_dev.user_stats dans le Schéma analytics_dev dans enterprise-analytics projet Google Cloud dans BigQuery.
  4. Dans l'espace de travail, Sasha valide la modification et la transfère vers sasha. dans le dépôt Git distant.
  5. Dans le dépôt distant, Sasha envoie une demande d'extraction.
  6. Dans le dépôt distant, Kai examine et approuve la demande d'extraction, fusionner la modification dans la branche main.
  7. Dataform met automatiquement à jour le résultat de la compilation dans le production publie le contenu à la fréquence spécifiée. Lors de la prochaine mise à jour Résultat de la compilation production, Dataform ajoute le table enterprise-analytics.analytics.user_stats au résultat de la compilation.
  8. Lors de l'exécution planifiée d'une configuration de workflow, Dataform exécute la table enterprise-analytics.analytics.user_stats dans le schéma analytics du projet Google Cloud enterprise-analytics. dans BigQuery.
  9. La table user_stats.sqlx est disponible pour les utilisateurs finaux du analytics. dans le projet Google Cloud enterprise-analytics dans BigQuery.

Répartir le développement et la production par schéma et par projet

Cette solution crée deux environnements d'exécution: le développement et la production. Pour diviser les tables de développement et de production par schéma et par projet Google Cloud, vous devez configurer les paramètres du workflow, les remplacements de compilation d'espace de travail, et une configuration de version. Pour planifier des exécutions en production, vous devez créer une configuration de workflow.

Dans cette solution, Dataform exécute le développement dans un projet Google Cloud de développement dédié, dans des schémas avec un suffixe de schéma différent pour chaque espace de travail.

Dataform exécute toutes les tables de production dans BigQuery un projet Google Cloud de production dédié sans suffixe de schéma.

Le tableau suivant présente une configuration qui divise le développement et de production par schéma et par projet Google Cloud, avec un seul compte de pour un espace de travail Dataform:

Paramètre Développement Production
Projet Google Cloud enterprise-dev enterprise-prod
Branche Git nom de l'espace de travail main
Remplacements de compilation d'espace de travail Suffixe de schéma: ${workspaceName} -
Configuration de version - production
Configuration du workflow - production

Dans cette solution, Dataform exécute des tables de développement et de production. dans différents schémas et projets Google Cloud dans BigQuery.

Les développeurs déclenchent l'exécution manuellement dans leurs espaces de travail Dataform. Chaque développeur travaille dans son espace de travail dédié, qui porte son nom, Exemple : sasha.

Lorsqu'un développeur déclenche l'exécution dans son espace de travail, Dataform ajoute le nom de l'espace de travail en tant que suffixe de schéma à tous les schémas. Dataform exécute ensuite dans le schéma personnalisé.

Par exemple, Dataform crée des tables à partir de l'espace de travail sasha. dans le schéma analytics_sasha de BigQuery. Ainsi, chaque développeur stocke ses tables de développement dans leurs propres schémas. Il n'y a aucun risque de en écrasant accidentellement les tables d'autres développeurs.

Dans Dataform, les développeurs valident et appliquent les modifications à leurs les branches du dépôt distant. Ensuite, sur la plate-forme d'hébergement Git tierce, ils envoient des demandes d'extraction. Approbation d'une demande d'extraction : fusion des modifications à la branche main du dépôt distant.

Dataform compile automatiquement les tables de production la branche main du dépôt distant en un résultat de compilation les paramètres de configuration des versions production.

Dataform exécute automatiquement le résultat de la compilation production en fonction de la planification définie dans la configuration du workflow production.

Pour implémenter cette solution, configurez les paramètres Dataform suivants:

Paramètres du workflow

Selon la version de Dataform Core, les paramètres de workflow sont stocké dans workflow_settings.yaml ou dataform.json. Pour en savoir plus, consultez Configurez les paramètres de workflow Dataform.

Dans workflow_settings.yaml, configurez les paramètres suivants:

defaultProject: enterprise-dev
defaultDataset: analytics

Dans dataform.json, configurez les paramètres suivants:

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

Forçages de l'espace de travail

Suffixe du schéma: "${workspaceName}"

Configuration de version

  • Commitish Git: "main"
  • ID du projet Google Cloud: "enterprise-prod"

Pour planifier l'exécution des résultats de compilation production, procédez comme suit : Créer une configuration de workflow avec une programmation personnalisée qui correspond le mieux à vos besoins.

Exemple de processus de développement

Dans cet exemple, les développeurs Sasha et Kai travaillent sur dans le même dépôt Dataform. Le dépôt Dataform est connecté vers un dépôt Git tiers distant.

Sasha travaille dans son espace de travail dédié appelé sasha, et Kai travaille dans son espace de travail dédié Kai. Ils valident et transmettent les modifications aux branches personnalisées du dépôt distant, appelé sasha et kai.

Le tableau suivant présente les paramètres d'environnement appliqués pour Sasha, Kai, et l'environnement de production:

Paramètre Sasha Kai Production
Projet Google Cloud enterprise-dev enterprise-dev enterprise-prod
Branche Git sasha kai main
Remplacements de compilation d'espace de travail Suffixe de schéma: ${workspaceName} Suffixe de schéma: ${workspaceName} -
Configuration de version - - production
Configuration du workflow - - production

Sasha crée une table et la déploie en production en procédant comme suit:

  1. Dans l'espace de travail Dataform sasha, Sasha crée la table user_stats.sqlx.
  2. Dans l'espace de travail sasha, Sasha déclenche manuellement l'exécution de la table.
  3. Dataform exécute le Tableau enterprise-dev.analytics_sasha.user_stats dans le Schéma analytics_sasha dans le projet Google Cloud enterprise-dev dans BigQuery.
  4. Dans l'espace de travail sasha, Sasha valide la modification et la transfère Branche sasha dans le dépôt Git distant.
  5. Dans le dépôt distant, Sasha envoie une demande d'extraction.
  6. Dans le dépôt distant, Kai examine et approuve la demande d'extraction, fusionner la modification dans la branche main.
  7. Dataform met automatiquement à jour le résultat de la compilation dans le production publie le contenu à la fréquence spécifiée. Lors de la prochaine mise à jour Résultat de la compilation production, Dataform ajoute le table enterprise-prod.analytics.user_stats au résultat de la compilation.
  8. Lors de l'exécution planifiée d'une configuration de workflow, Dataform exécute la table enterprise-prod.analytics.user_stats dans le schéma analytics du projet Google Cloud enterprise-prod. dans BigQuery.
  9. La table user_stats.sqlx est disponible pour les utilisateurs finaux du analytics. dans le projet Google Cloud enterprise-prod dans BigQuery.

Répartir le développement, la préproduction et la production par schéma et par projet

Cette solution crée trois environnements d'exécution: développement, préproduction et la production. Tous les environnements sont répartis par projet Google Cloud. De plus, le développement est divisé entre la préproduction et la production selon le schéma.

Pour diviser les tables de développement, de préproduction et de production par schéma et par projet Google Cloud, vous devez configurer les paramètres du workflow, les remplacements de compilation d'espace de travail, et deux configurations de version. Pour planifier la préproduction et la production vous devez créer deux configurations de workflow distinctes.

Dans cette solution, Dataform exécute les tables de développement dans dans plusieurs schémas de développement, une par espace de travail Dataform, dans un projet Google Cloud de développement dédié.

Dataform exécute toutes les tables de préproduction dans BigQuery dans un projet Google Cloud de préproduction dédié dans des schémas ayant le même suffixe, indiquant qu'ils ont été créés dans l'environnement de préproduction.

Dataform exécute toutes les tables de production dans BigQuery dans un projet Google Cloud de production dédié, dans des schémas ayant le même suffixe, indiquant qu'ils ont été créés en production.

Le tableau suivant présente un exemple de configuration qui divise le développement, de préproduction et de production par schéma et par projet Google Cloud, de développement par un espace de travail Dataform:

Paramètre Développement Préproduction Production
Projet Google Cloud enterprise-dev enterprise-staging enterprise-prod
Branche Git nom de l'espace de travail main prod
Remplacements de compilation d'espace de travail Suffixe de schéma: ${workspaceName} - -
Configuration de version - staging production
Configuration du workflow - staging production

Dans cette solution, Dataform exécute les tâches de développement, de préproduction et dans les tables de production de différents projets Google Cloud dans BigQuery. De plus, Dataform exécute des tables de développement dans plusieurs (un par espace de travail). Dataform exécute la préproduction et la production tables dans le même schéma, mais dans des projets Google Cloud différents.

Les développeurs déclenchent l'exécution manuellement dans leurs espaces de travail Dataform. Chaque développeur travaille dans son espace de travail dédié, qui porte son nom, Exemple : sasha.

Chaque espace de travail correspond à un schéma BigQuery personnalisé, dont le nom correspond à celui de l'espace de travail. Lorsqu'un développeur déclenche l'exécution dans son espace de travail, Dataform ajoute le nom de l'espace de travail en tant que suffixe de schéma au schéma par défaut. Dataform exécute ensuite dans le schéma personnalisé BigQuery.

Par exemple, Dataform exécute des tables à partir de l'espace de travail sasha. dans le schéma analytics_sasha de BigQuery. Ainsi, chaque développeur stocke ses tables de développement dans son propre schéma. Il n'y a aucun risque de en écrasant accidentellement les tables d'autres développeurs.

Dans Dataform, les développeurs valident et appliquent les modifications à leurs les branches du dépôt distant. Ensuite, sur la plate-forme d'hébergement Git tierce, ils envoient des demandes d'extraction à la branche main. Approbation d'une demande d'extraction fusionne les modifications dans la branche main du dépôt distant.

Dataform compile automatiquement les tables de préproduction la branche main du dépôt distant en un résultat de compilation les paramètres de configuration des versions staging.

Dataform exécute automatiquement le résultat de la compilation staging en fonction de la planification définie dans la configuration du workflow staging.

Pour promouvoir des tables de préproduction vers la production, dans l'hébergement Git tiers plate-forme, les développeurs envoient des demandes d'extraction depuis la branche main au prod ou une autre branche. L'approbation d'une demande d'extraction entraîne la fusion des modifications apportées à la branche prod du dépôt distant.

Dataform compile automatiquement les tables de production la branche prod du dépôt distant en un résultat de compilation les paramètres de configuration des versions production.

Dataform exécute automatiquement le résultat de la compilation production en fonction de la planification définie dans la configuration du workflow production.

Pour implémenter cette solution, configurez les paramètres Dataform suivants:

Paramètres du workflow

Selon la version de Dataform Core, les paramètres de workflow sont stocké dans workflow_settings.yaml ou dataform.json. Pour en savoir plus, consultez Configurez les paramètres de workflow Dataform.

Dans workflow_settings.yaml, configurez les paramètres suivants:

defaultProject: enterprise-dev
defaultDataset: analytics

Dans dataform.json, configurez les paramètres suivants:

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

Forçages de l'espace de travail

Suffixe du schéma: "${workspaceName}"

Configuration de version staging

  • Commitish Git: "main"
  • ID du projet Google Cloud: "enterprise-staging"

Configuration de version prod

  • Commitish Git: "prod"
  • ID du projet Google Cloud: "enterprise-prod"

Pour planifier l'exécution des résultats de compilation staging et production, procédez comme suit : créer deux configurations de workflow distinctes avec des planifications personnalisées ; qui correspondent le mieux à vos besoins.

Exemple de processus de développement

Dans cet exemple, les développeurs Sasha et Kai travaillent dans le dans le même dépôt Dataform. Le dépôt Dataform est connecté vers un dépôt Git tiers distant.

Sasha travaille dans son espace de travail dédié appelé sasha, et Kai travaille dans son espace de travail dédié Kai. Ils valident et transmettent les modifications aux branches personnalisées du dépôt distant, appelé sasha et kai.

Le tableau suivant présente les paramètres d'environnement appliqués pour Sasha, Kai, et l'environnement de production:

Paramètre Sasha Kai Préproduction Production
Projet Google Cloud enterprise-dev enterprise-dev enterprise-staging enterprise-prod
Branche Git sasha kai main prod
Schéma analytics_sasha analytics_kai analytics analytics

Sasha crée une table et la déploie en production en procédant comme suit:

  1. Dans l'espace de travail Dataform sasha, Sasha crée la table user_stats.sqlx.
  2. Dans l'espace de travail sasha, Sasha déclenche manuellement l'exécution de la table.
  3. Dataform exécute le Tableau enterprise-dev.analytics_sasha.user_stats dans le Schéma analytics_sasha dans le projet Google Cloud enterprise-dev dans BigQuery.
  4. Dans l'espace de travail sasha, Sasha valide la modification et la transfère Branche sasha dans le dépôt Git distant.
  5. Dans le dépôt distant, Sasha envoie une demande d'extraction à la branche main.
  6. Dans le dépôt distant, Kai examine et approuve la demande d'extraction, fusionner la modification dans la branche main.
  7. Dataform met automatiquement à jour le résultat de la compilation dans le staging publie le contenu à la fréquence spécifiée. Lors de la prochaine mise à jour Résultat de la compilation staging, Dataform ajoute le table enterprise-staging.analytics.user_stats au résultat de la compilation.
  8. Lors de l'exécution planifiée d'une configuration de workflow, Dataform exécute la table enterprise-staging.analytics.user_stats dans le schéma analytics du projet Google Cloud enterprise-staging. dans BigQuery.
  9. Dans le dépôt distant, Sasha envoie une demande d'extraction à la branche prod.
  10. Dans le dépôt distant, Kai examine et approuve la demande d'extraction, fusionner la modification dans la branche prod.
  11. Dataform met automatiquement à jour le résultat de la compilation dans le production publie le contenu à la fréquence spécifiée. Lors de la prochaine mise à jour Résultat de la compilation production, Dataform ajoute le table enterprise-prod.analytics.user_stats au résultat de la compilation.
  12. Lors de l'exécution planifiée d'une configuration de workflow, Dataform exécute la table enterprise-prod.analytics.user_stats dans le schéma analytics du projet Google Cloud enterprise-prod dans dans BigQuery.
  13. La table user_stats.sqlx est disponible pour les utilisateurs finaux du analytics. dans le projet Google Cloud enterprise-prod dans BigQuery.

Étape suivante