Bonnes pratiques pour le cycle de vie du workflow

Ce document décrit les bonnes pratiques pour gérer le cycle de vie des workflows 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 qui maintient 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 créées pendant le développement de celles disponibles pour les utilisateurs finaux.

  • Configurer des configurations de version et de workflow pour exécuter des workflows dans un environnement de production et, éventuellement, dans un environnement intermédiaire

Ce document décrit des solutions pour isoler les tables de développement avec des remplacements de compilation d'espace de travail et pour configurer des environnements de préproduction et de production avec des configurations de version et des configurations de workflow.

Ces solutions vous permettent de créer des environnements d'exécution dans un seul dépôt et projet Dataform Google Cloud . Vous pouvez choisir d'avoir plusieurs copies d'un dépôt Dataform, hébergées dans différents projetsGoogle Cloud , chaque projet correspondant à une étape de votre cycle de vie du code (par exemple, développement, préproduction et production). Cette approche vous 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 des exécutions du workflow de développement des tables de production dans BigQuery. Cela permet aux utilisateurs finaux d'accéder aux tables de production et élimine le risque qu'ils accèdent accidentellement à des données incorrectes.

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

Séparer les tables de développement et de production par schéma
Recommandé pour les petites équipes. Dataform crée des tables de développement et de production dans différents schémas de BigQuery. Dataform exécute toutes les tables de développement dans des schémas portant le même suffixe, ce qui indique qu'elles ont été créées pendant le développement. Les développeurs peuvent écraser les tables de développement des autres développeurs.
Répartir les tables de développement et de production par schéma et projet Google Cloud
 Recommandé pour les équipes de taille moyenne. Dataform crée des tables de développement et de production dans différents schémas et projets BigQuery. Dataform a publié toutes les tables de développement dans un projet de développement Google Cloud dédié. Chaque développeur Dataform possède son propre schéma unique pour les tables de développement. Cette solution élimine le risque que les développeurs écrasent accidentellement les tables de développement des autres. L'inconvénient de cette approche est que la suppression des tables et des schémas de développement, et la recréation de toutes les tables dans chaque environnement peuvent prendre plus de temps.
Séparer les tables de développement, de préproduction et de production par projet Google Cloud
 Recommandé pour les grandes équipes ou celles qui ont besoin d'un environnement de préproduction. Dataform exécute les tables de chaque environnement dans un projetGoogle Cloud dédié dans BigQuery. Cette solution vous offre le plus de contrôle sur le cycle de vie du code.

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

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

Séparer le développement et la production par schéma

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

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

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

Paramètre Développement Production
Google Cloud projet enterprise-analytics enterprise-analytics
Branche Git Nom de l'espace de travail main
Remplacements de compilation d'espace de travail suffixe du 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 projetGoogle Cloud .

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

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

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

Dataform exécute automatiquement le résultat de la compilation production selon le calendrier défini dans la configuration du workflow production.

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

Paramètres de workflow

En fonction de votre version de Dataform Core, les paramètres de workflow sont stockés dans workflow_settings.yaml ou dataform.json. Pour en savoir plus, consultez Configurer 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"
}

Remplacements d'espace de travail

Suffixe du schéma : "dev"

Configuration de version

Commitish Git : "main"

Pour planifier des exécutions de résultats de compilation production, créez une configuration de workflow.

Exemple de processus de développement

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

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

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

Paramètre Sasha Kai Production
Google Cloud projet 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.
  2. Dans l'espace de travail, Sasha déclenche manuellement l'exécution de la table.
  3. Dataform crée la table enterprise-analytics.analytics_dev.user_stats dans le schéma analytics_dev du projet enterprise-analytics Google Cloud dans BigQuery.
  4. Dans l'espace de travail, Sasha valide la modification et la transfère vers la branche sasha du 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, en fusionnant la modification dans la branche main.
  7. Dataform met automatiquement à jour le résultat de la compilation dans la version production à la fréquence spécifiée. Lors de la prochaine mise à jour du résultat de compilation production, Dataform ajoute la table enterprise-analytics.analytics.user_stats au résultat de 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 enterprise-analytics Google Cloud dans BigQuery.
  9. La table user_stats est disponible pour les utilisateurs finaux dans le schéma analytics du projet enterprise-analytics Google Cloud dans BigQuery.

Séparer le développement et la production par schéma et par projet

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

Dans cette solution, Dataform exécute le développement dans un projet Google Cloud 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, dans un projet de production Google Cloud dédié sans suffixe de schéma.

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

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

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

Les développeurs déclenchent manuellement l'exécution dans leurs espaces de travail Dataform. Chaque développeur travaille dans son propre espace de travail, qui porte son nom (par 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 les tables 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 son ou ses propres schémas. Vous ne risquez pas d'écraser accidentellement les tables d'autres développeurs.

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

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

Dataform exécute automatiquement le résultat de la compilation production selon le calendrier défini dans la configuration du workflow production.

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

Paramètres de workflow

En fonction de votre version de Dataform Core, les paramètres de workflow sont stockés dans workflow_settings.yaml ou dataform.json. Pour en savoir plus, consultez Configurer 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"
}

Remplacements d'espace de travail

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

Configuration de version

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

Pour planifier des exécutions des résultats de compilation production, créez une configuration de workflow avec un calendrier personnalisé qui répond le mieux à vos besoins.

Exemple de processus de développement

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

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

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

Paramètre Sasha Kai Production
Google Cloud projet enterprise-dev enterprise-dev enterprise-prod
Branche Git sasha kai main
Remplacements de compilation d'espace de travail suffixe du schéma : ${workspaceName} suffixe du 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.
  2. Dans l'espace de travail sasha, Sasha déclenche manuellement l'exécution de la table.
  3. Dataform exécute la table enterprise-dev.analytics_sasha.user_stats dans le schéma analytics_sasha du projet enterprise-dev Google Cloud dans BigQuery.
  4. Dans l'espace de travail sasha, Sasha valide la modification et la transfère vers la branche sasha du 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, en fusionnant la modification dans la branche main.
  7. Dataform met automatiquement à jour le résultat de la compilation dans la version production à la fréquence spécifiée. Lors de la prochaine mise à jour du résultat de compilation production, Dataform ajoute la table enterprise-prod.analytics.user_stats au résultat de 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 enterprise-prod Google Cloud dans BigQuery.
  9. La table user_stats est disponible pour les utilisateurs finaux dans le schéma analytics du projet enterprise-prod Google Cloud dans BigQuery.

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

Cette solution crée trois environnements d'exécution : développement, préproduction et production. Tous les environnements sont répartis par projet Google Cloud . De plus, le développement est séparé de la préproduction et de la production par 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 de workflow, les remplacements de compilation d'espace de travail et deux configurations de version. Pour planifier les exécutions de préproduction et de production, vous devez créer deux configurations de workflow distinctes.

Dans cette solution, Dataform exécute les tables de développement dans BigQuery dans plusieurs schémas de développement (un 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 de préproduction Google Cloud dédié, dans des schémas portant le même suffixe, ce qui indique qu'elles ont été créées en préproduction.

Dataform exécute toutes les tables de production dans BigQuery dans un projet de production Google Cloud dédié, dans des schémas portant le même suffixe, ce qui indique qu'elles ont été créées en production.

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

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

Dans cette solution, Dataform exécute des tables de développement, de préproduction et de production dans différents projets Google Cloud dans BigQuery. De plus, Dataform exécute les tables de développement dans plusieurs schémas personnalisés, un par espace de travail. Dataform exécute les tables intermédiaires et de production dans le même schéma, mais dans des projets Google Cloud différents.

Les développeurs déclenchent manuellement l'exécution dans leurs espaces de travail Dataform. Chaque développeur travaille dans son propre espace de travail, qui porte son nom (par exemple, sasha).

Chaque espace de travail correspond à un schéma BigQuery personnalisé, nommé d'après 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 les tables du schéma personnalisé dans BigQuery.

Par exemple, Dataform exécute les tables 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. Vous ne risquez pas d'écraser accidentellement les tables d'autres développeurs.

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

Dataform compile automatiquement les tables intermédiaires de la branche main du dépôt distant dans un résultat de compilation en fonction des paramètres de configuration de la version staging.

Dataform exécute automatiquement le résultat de la compilation staging selon le calendrier défini dans la configuration du workflow staging.

Pour promouvoir des tables de la préproduction vers la production, les développeurs envoient des demandes d'extraction de la branche main vers la branche prod sur la plate-forme d'hébergement Git tierce. L'approbation d'une demande d'extraction fusionne les modifications dans la branche prod du dépôt distant.

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

Dataform exécute automatiquement le résultat de la compilation production selon le calendrier défini dans la configuration du workflow production.

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

Paramètres de workflow

En fonction de votre version de Dataform Core, les paramètres de workflow sont stockés dans workflow_settings.yaml ou dataform.json. Pour en savoir plus, consultez Configurer 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"
}

Remplacements d'espace de travail

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

staging configuration de version

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

prod configuration de version

  • Commitish Git : "prod"
  • ID du projetGoogle Cloud  : "enterprise-prod"

Pour planifier des exécutions des résultats de compilation staging et production, créez deux configurations de workflow distinctes avec des plannings personnalisés qui répondent le mieux à vos besoins.

Exemple de processus de développement

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

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

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

Paramètre Sasha Kai Préproduction Production
Google Cloud projet 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.
  2. Dans l'espace de travail sasha, Sasha déclenche manuellement l'exécution de la table.
  3. Dataform exécute la table enterprise-dev.analytics_sasha.user_stats dans le schéma analytics_sasha du projet enterprise-dev Google Cloud dans BigQuery.
  4. Dans l'espace de travail sasha, Sasha valide la modification et la transfère vers la branche sasha du 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, en fusionnant la modification dans la branche main.
  7. Dataform met automatiquement à jour le résultat de la compilation dans la version staging à la fréquence spécifiée. Lors de la prochaine mise à jour du résultat de compilation staging, Dataform ajoute la table enterprise-staging.analytics.user_stats au résultat de 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 enterprise-staging Google Cloud 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, en fusionnant la modification dans la branche prod.
  11. Dataform met automatiquement à jour le résultat de la compilation dans la version production à la fréquence spécifiée. Lors de la prochaine mise à jour du résultat de compilation production, Dataform ajoute la table enterprise-prod.analytics.user_stats au résultat de 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 enterprise-prod Google Cloud dans BigQuery.
  13. La table user_stats est disponible pour les utilisateurs finaux dans le schéma analytics du projet enterprise-prod Google Cloud dans BigQuery.

Étapes suivantes