Gérer le cycle de vie du code

Ce document décrit les bonnes pratiques à suivre 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 SQL Dataform qui préserve l'hygiène des données et optimise les processus de développement, nous vous recommandons de:

  • Créez des environnements d'exécution pour isoler les tables créées lors du développement des tables disponibles pour les utilisateurs finaux.

  • Configurez les configurations de version et de workflow pour exécuter des workflows dans un environnement de production, et éventuellement dans un environnement de préproduction.

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

Ces solutions vous permettent de créer des environnements d'exécution dans un même dépôt Dataform et un même projet Google Cloud. Vous pouvez choisir d'avoir plusieurs copies d'un dépôt Dataform, hébergées dans différents projets Google Cloud, chaque projet correspondant à une étape du cycle de vie de votre code (développement, préproduction et production, par exemple). 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 de workflow SQL de développement des tables de production dans BigQuery. Cela garantit que les utilisateurs finaux peuvent 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:

Diviser 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 dans BigQuery. Dataform exécute toutes les tables de développement dans des schémas ayant le même suffixe, ce qui indique qu'elles ont été créées lors du développement. Les développeurs peuvent écraser les tables de développement des uns et des autres.
Diviser 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 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 pour les tables de développement. Cette solution élimine le risque que les développeurs écrasent accidentellement les tables de développement des uns et des autres. L'inconvénient de cette approche est que la suppression des tables et des schémas de développement, ainsi que la recréation de toutes les tables dans chaque environnement peut prendre plus de temps.
Diviser les tables de développement, de préproduction et de production par projet Google Cloud
Recommandé pour les grandes équipes ou les équipes qui ont besoin d'un environnement de préproduction. Dataform exécute les tables de chaque environnement dans un projet Google 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 préproduction dans une configuration de version, et les exécute à la fréquence définie dans une configuration de workflow.

Diviser 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 SQL: le développement et la 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 de l'espace de travail et une configuration de version. 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 les schémas qui ont le même suffixe, ce qui indique qu'elles ont été créées lors du 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
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 des tables dans des schémas ayant 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 transfèrent leurs modifications vers 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 à partir de la branche main du dépôt distant dans un résultat de compilation, conformément aux paramètres de configuration de la version production.

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

Pour mettre en œuvre cette solution, configurez les paramètres Dataform suivants:

Paramètres du 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 la section 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 les exécutions des 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 connecté à un dépôt Git tiers distant.

Ils valident et transfèrent les modifications apportées 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 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 suivant la procédure suivante:

  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 du tableau.
  3. Dataform crée la table enterprise-analytics.analytics_dev.user_stats dans le schéma analytics_dev du projet Google Cloud enterprise-analytics 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, 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 d'une 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 est disponible pour les utilisateurs finaux dans le schéma analytics du projet Google Cloud enterprise-analytics dans BigQuery.

Diviser 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 projet Google Cloud, vous devez configurer les paramètres de workflow, les forçages de compilation de l'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 dans un projet Google Cloud de production 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
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 (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. Ensuite, Dataform exécute les tables du 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. De cette façon, chaque développeur stocke ses tables de développement dans son ou ses propres schémas. Il n'y a aucun risque d'écraser accidentellement les tables d'autres développeurs.

Dans Dataform, les développeurs valident et transfèrent leurs modifications vers 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 à partir de la branche main du dépôt distant dans un résultat de compilation, conformément aux paramètres de configuration de la version production.

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

Pour mettre en œuvre cette solution, configurez les paramètres Dataform suivants:

Paramètres du 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 la section 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 de projet Google Cloud: "enterprise-prod"

Pour planifier les 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 connecté à un dépôt Git tiers distant.

Sasha travaille dans son espace de travail dédié appelé sasha, et Kai dans son espace de travail dédié appelé Kai. Ils valident et transfèrent les modifications apportées 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 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 suivant la procédure suivante:

  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 Google Cloud enterprise-dev 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, 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 d'une 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 est disponible pour les utilisateurs finaux dans le schéma analytics du projet Google Cloud enterprise-prod dans BigQuery.

Diviser 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 production. Tous les environnements sont divisés 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 projet Google Cloud, vous devez configurer les paramètres de workflow, les forçages de compilation de l'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 des tables de développement dans BigQuery dans plusieurs schémas de développement, un par espace de travail Dataform, dans un projet de développement Google Cloud 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, ce qui indique qu'ils ont été créés en 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, ce qui indique qu'ils ont été créés 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
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 des tables de développement, de préproduction et de production dans différents projets Google Cloud dans BigQuery. De plus, Dataform exécute des tables de développement dans plusieurs schémas personnalisés, un par espace de travail. Dataform exécute les tables de préproduction et de production dans le même schéma, mais dans différents projets Google Cloud.

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 (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. Ensuite, Dataform exécute les tables dans le 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. De cette façon, chaque développeur stocke ses tables de développement dans son propre schéma. Il n'y a aucun risque d'écraser accidentellement les tables d'autres développeurs.

Dans Dataform, les développeurs valident et transfèrent leurs modifications vers leurs branches personnalisées du dépôt distant. Ensuite, sur la plate-forme d'hébergement Git tierce, il envoie des demandes d'extraction à la branche main. L'approbation d'une demande d'extraction fusionne les modifications apportées à la branche main du dépôt distant.

Dataform compile automatiquement les tables de préproduction à partir de la branche main du dépôt distant dans un résultat de compilation, conformément aux paramètres de configuration de la version staging.

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

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

Dataform compile automatiquement les tables de production à partir de la branche prod du dépôt distant dans un résultat de compilation, conformément aux paramètres de configuration de la version production.

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

Pour mettre en œuvre cette solution, configurez les paramètres Dataform suivants:

Paramètres du 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 la section 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 la version staging

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

Configuration de la version prod

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

Pour planifier les exécutions des résultats de compilation staging et production, créez 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 même dépôt Dataform. Le dépôt Dataform est connecté à un dépôt Git tiers distant.

Sasha travaille dans son espace de travail dédié appelé sasha, et Kai dans son espace de travail dédié appelé Kai. Ils valident et transfèrent les modifications apportées 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 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 suivant la procédure suivante:

  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 Google Cloud enterprise-dev 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, 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 d'une 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, 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 d'une 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.
  13. La table user_stats est disponible pour les utilisateurs finaux dans le schéma analytics du projet Google Cloud enterprise-prod dans BigQuery.

Étape suivante