Prácticas recomendadas para el ciclo de vida de los flujos de trabajo

En este documento se describen las prácticas recomendadas para gestionar el ciclo de vida del flujo de trabajo en Dataform: crear entornos de desarrollo, de preproducción y de producción, y configurar los ajustes de compilación y ejecución de cada entorno.

Para crear un ciclo de vida estandarizado de los flujos de trabajo de Dataform que mantenga la higiene de los datos y optimice los procesos de desarrollo, le recomendamos que haga lo siguiente:

  • Crea entornos de ejecución para aislar las tablas creadas durante el desarrollo de las tablas disponibles para los usuarios finales.

  • Configura las versiones y los flujos de trabajo para que se ejecuten en un entorno de producción y, opcionalmente, en un entorno de staging.

En este documento se describen soluciones para aislar tablas de desarrollo con sustituciones de compilación de espacio de trabajo y para configurar entornos de preproducción y producción con configuraciones de lanzamiento y configuraciones de flujo de trabajo.

Estas soluciones te permiten crear entornos de ejecución en un único repositorio y proyecto de Dataform. Google Cloud Puedes tener varias copias de un repositorio de Dataform, alojadas en diferentes proyectos deGoogle Cloud , y cada proyecto corresponderá a una fase del ciclo de vida de tu código (por ejemplo, desarrollo, staging y producción). Este enfoque te permite personalizar los permisos de Gestión de Identidades y Accesos en cada fase del ciclo de vida del código.

Prácticas recomendadas para entornos de ejecución aislados

Te recomendamos que aísles las tablas creadas durante las ejecuciones del flujo de trabajo de desarrollo de las tablas de producción en BigQuery. De esta forma, los usuarios finales pueden acceder a las tablas de producción y se elimina el riesgo de que accedan a datos incorrectos por error.

Puedes crear entornos de ejecución aislados de las siguientes formas:

Dividir las tablas de desarrollo y producción por esquemas
Recomendado para equipos pequeños. Dataform crea tablas de desarrollo y de producción en esquemas diferentes en BigQuery. Dataform ejecuta todas las tablas de desarrollo en esquemas que tienen el mismo sufijo, lo que indica que se crearon durante el desarrollo. Los desarrolladores pueden sobrescribir las tablas de desarrollo de otros desarrolladores.
Dividir las tablas de desarrollo y producción por esquema y Google Cloud proyecto
Recomendado para equipos medianos. Dataform crea tablas de desarrollo y de producción en diferentes esquemas y proyectos de BigQuery. Dataform ha publicado todas las tablas de desarrollo en un proyecto de desarrollo Google Cloud específico. Cada desarrollador de Dataform tiene su propio esquema único para las tablas de desarrollo. De esta forma, se elimina el riesgo de que los desarrolladores sobrescriban por error las tablas de desarrollo de otros desarrolladores. El inconveniente de este enfoque es que eliminar tablas y esquemas de desarrollo, y volver a crear todas las tablas en cada entorno puede requerir más tiempo.
Dividir las tablas de desarrollo, staging y producción por Google Cloud proyecto
Recomendado para equipos grandes o que necesiten un entorno de pruebas. Dataform ejecuta tablas de cada entorno en unGoogle Cloud proyecto específico de BigQuery. Esta solución te ofrece el mayor control sobre el ciclo de vida del código.

Todas las soluciones requieren un único repositorio de Dataform conectado a un único repositorio remoto de terceros.

En todas las soluciones, los desarrolladores activan manualmente las ejecuciones de las tablas de desarrollo en sus espacios de trabajo de Dataform. Dataform compila automáticamente las tablas de producción y de staging en una configuración de lanzamiento y las ejecuta con la frecuencia definida en una configuración de flujo de trabajo.

Dividir el desarrollo y la producción por esquema

Esta solución crea dos entornos de ejecución en los que Dataform ejecutará tus flujos de trabajo: desarrollo y producción. Para dividir las tablas de desarrollo y producción por esquema, debes configurar los ajustes del flujo de trabajo, las anulaciones de compilación del espacio de trabajo y una configuración de lanzamiento. Para programar ejecuciones de producción, debes crear una configuración de flujo de trabajo.

Dataform ejecuta todas las tablas de desarrollo de los esquemas que tienen el mismo sufijo, lo que indica que se crearon durante el desarrollo. Dataform ejecuta todas las tablas de producción de los esquemas sin ningún sufijo.

En la siguiente tabla se muestra una configuración que divide las tablas de desarrollo y producción por esquema, con un esquema de desarrollo:

Ajuste Desarrollo Producción
Google Cloud project enterprise-analytics enterprise-analytics
Rama de Git Nombre del espacio de trabajo main
Sustituciones de compilación de Workspace Sufijo del esquema: dev -
Configuración de la versión - production
Configuración del flujo de trabajo - production

En esta solución, las tablas de desarrollo y producción se almacenan en un único proyectoGoogle Cloud .

Los desarrolladores activan la ejecución manualmente en sus espacios de trabajo de Dataform. En todas las ejecuciones activadas manualmente, Dataform ejecuta tablas en esquemas que tienen el mismo sufijo, lo que indica que se crearon durante el desarrollo. Los desarrolladores deben tener en cuenta que pueden sobrescribir las tablas de otros desarrolladores.

En Dataform, los desarrolladores confirman y envían sus cambios a las ramas personalizadas del repositorio remoto. A continuación, en la plataforma de alojamiento de Git de terceros, envían solicitudes de extracción. Al aprobar una solicitud de extracción, se combinan los cambios en la rama main del repositorio remoto.

Dataform compila automáticamente las tablas de producción de la rama main del repositorio remoto en un resultado de compilación según los ajustes de configuración de la versión production.

Dataform ejecuta automáticamente el production resultado de la compilación según la programación definida en la production configuración del flujo de trabajo.

Para implementar esta solución, configura los siguientes ajustes de Dataform:

Configuración del flujo de trabajo

En función de tu versión de Dataform Core, los ajustes del flujo de trabajo se almacenan en workflow_settings.yaml o dataform.json. Para obtener más información, consulta Configurar los ajustes del flujo de trabajo de Dataform.

En workflow_settings.yaml, configura los siguientes ajustes:

defaultProject: enterprise-analytics
defaultDataset: analytics

En dataform.json, configura los siguientes ajustes:

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

Sustituciones de Workspace

Sufijo del esquema: "dev"

Configuración de la versión

Git commitish: "main"

Para programar ejecuciones de production resultados de compilación, crea una configuración de flujo de trabajo.

Proceso de desarrollo de ejemplo

En este ejemplo, los desarrolladores Sasha y Kai trabajan en el mismo repositorio de Dataform. El repositorio de Dataform está conectado a un repositorio de Git remoto de terceros.

Confirman y envían los cambios a las ramas personalizadas del repositorio remoto, llamadas sasha y kai.

En la siguiente tabla se muestran los ajustes del entorno aplicados a Sasha, Kai y el entorno de producción:

Ajuste Sasha Kai Producción
Google Cloud project enterprise-analytics enterprise-analytics enterprise-analytics
Rama de Git sasha kai main
Esquema analytics_dev analytics_dev analytics

Sasha crea una tabla y la implementa en producción siguiendo este proceso:

  1. En un espacio de trabajo de Dataform, Sasha crea la tabla user_stats.
  2. En el espacio de trabajo, Sasha activa manualmente la ejecución de la tabla.
  3. Dataform crea la tabla enterprise-analytics.analytics_dev.user_stats en el esquema analytics_dev del proyecto enterprise-analytics Google Cloud en BigQuery.
  4. En el espacio de trabajo, Sasha confirma el cambio y lo envía a la sasha rama del repositorio de Git remoto.
  5. En el repositorio remoto, Sasha envía una solicitud de extracción.
  6. En el repositorio remoto, Kai revisa y aprueba la solicitud de extracción, y combina el cambio en la rama main.
  7. Dataform actualiza automáticamente el resultado de la compilación en la production versión con la frecuencia especificada. Durante la siguiente actualización del resultado de compilación de production, Dataform añade la tabla enterprise-analytics.analytics.user_stats al resultado de compilación.
  8. Durante la ejecución programada de una configuración de flujo de trabajo, Dataform ejecuta la tabla enterprise-analytics.analytics.user_stats en el esquema analytics del proyecto enterprise-analytics Google Cloud en BigQuery.
  9. La tabla user_stats está disponible para los usuarios finales en el esquema analytics del proyecto enterprise-analytics Google Cloud en BigQuery.

Dividir el desarrollo y la producción por esquema y proyecto

Esta solución crea dos entornos de ejecución: desarrollo y producción. Para dividir las tablas de desarrollo y producción por esquema y Google Cloud proyecto, debes configurar los ajustes del flujo de trabajo, las anulaciones de compilación del espacio de trabajo y una configuración de lanzamiento. Para programar ejecuciones de producción, debes crear una configuración de flujo de trabajo.

En esta solución, Dataform ejecuta el desarrollo en un proyecto de desarrollo Google Cloud específico, en esquemas con un sufijo de esquema diferente para cada espacio de trabajo.

Dataform ejecuta todas las tablas de producción en BigQuery en un proyecto de producción específico sin sufijo de esquema. Google Cloud

En la siguiente tabla se muestra una configuración que divide las tablas de desarrollo y producción por esquema y Google Cloud proyecto, con un esquema de desarrollo por espacio de trabajo de Dataform:

Ajuste Desarrollo Producción
Google Cloud project enterprise-dev enterprise-prod
Rama de Git Nombre del espacio de trabajo main
Sustituciones de compilación de Workspace Sufijo del esquema: ${workspaceName} -
Configuración de la versión - production
Configuración del flujo de trabajo - production

En esta solución, Dataform ejecuta tablas de desarrollo y de producción en diferentes esquemas y Google Cloud proyectos de BigQuery.

Los desarrolladores activan la ejecución manualmente en sus espacios de trabajo de Dataform. Cada desarrollador trabaja en su espacio de trabajo específico, que lleva su nombre. Por ejemplo, sasha.

Cuando un desarrollador activa la ejecución en su espacio de trabajo, Dataform añade el nombre del espacio de trabajo como sufijo del esquema a todos los esquemas. A continuación, Dataform ejecuta tablas en el esquema personalizado.

Por ejemplo, Dataform crea tablas a partir del espacio de trabajo sasha en el esquema analytics_sasha de BigQuery. De esta forma, cada desarrollador almacena sus tablas de desarrollo en sus propios esquemas. No hay riesgo de sobrescribir por error las tablas de otros desarrolladores.

En Dataform, los desarrolladores confirman y envían sus cambios a las ramas personalizadas del repositorio remoto. A continuación, en la plataforma de alojamiento de Git de terceros, envían solicitudes de extracción. Al aprobar una solicitud de extracción, se combinan los cambios en la rama main del repositorio remoto.

Dataform compila automáticamente las tablas de producción de la rama main del repositorio remoto en un resultado de compilación según los ajustes de configuración de la versión production.

Dataform ejecuta automáticamente el production resultado de la compilación según la programación definida en la production configuración del flujo de trabajo.

Para implementar esta solución, configura los siguientes ajustes de Dataform:

Configuración del flujo de trabajo

En función de tu versión de Dataform Core, los ajustes del flujo de trabajo se almacenan en workflow_settings.yaml o dataform.json. Para obtener más información, consulta Configurar los ajustes del flujo de trabajo de Dataform.

En workflow_settings.yaml, configura los siguientes ajustes:

defaultProject: enterprise-dev
defaultDataset: analytics

En dataform.json, configura los siguientes ajustes:

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

Sustituciones de Workspace

Sufijo del esquema: "${workspaceName}"

Configuración de la versión

  • Git commitish: "main"
  • Google Cloud ID de proyecto: "enterprise-prod"

Para programar ejecuciones de productionresultados de compilación, crea una configuración de flujo de trabajo con una programación personalizada que se adapte mejor a tus necesidades.

Proceso de desarrollo de ejemplo

En este ejemplo, los desarrolladores Sasha y Kai trabajan en el mismo repositorio de Dataform. El repositorio de Dataform está conectado a un repositorio de Git remoto de terceros.

Sasha trabaja en su espacio de trabajo específico llamado sasha, y Kai trabaja en su espacio de trabajo específico llamado Kai. Confirman y envían los cambios a las ramas personalizadas del repositorio remoto, llamadas sasha y kai.

En la siguiente tabla se muestran los ajustes del entorno aplicados a Sasha, Kai y el entorno de producción:

Ajuste Sasha Kai Producción
Google Cloud project enterprise-dev enterprise-dev enterprise-prod
Rama de Git sasha kai main
Sustituciones de compilación de Workspace Sufijo del esquema: ${workspaceName} Sufijo del esquema: ${workspaceName} -
Configuración de la versión - - production
Configuración del flujo de trabajo - - production

Sasha crea una tabla y la implementa en producción siguiendo este proceso:

  1. En el espacio de trabajo de sashaDataform, Sasha crea la tabla user_stats.
  2. En el espacio de trabajo sasha, Sasha activa manualmente la ejecución de la tabla.
  3. Dataform ejecuta la tabla enterprise-dev.analytics_sasha.user_stats en el esquema analytics_sasha del proyecto enterprise-dev Google Cloud en BigQuery.
  4. En el espacio de trabajo sasha, Sasha confirma el cambio y lo envía a la rama sasha del repositorio de Git remoto.
  5. En el repositorio remoto, Sasha envía una solicitud de extracción.
  6. En el repositorio remoto, Kai revisa y aprueba la solicitud de extracción, y combina el cambio en la rama main.
  7. Dataform actualiza automáticamente el resultado de la compilación en la production versión con la frecuencia especificada. Durante la siguiente actualización del resultado de compilación de production, Dataform añade la tabla enterprise-prod.analytics.user_stats al resultado de compilación.
  8. Durante la ejecución programada de una configuración de flujo de trabajo, Dataform ejecuta la tabla enterprise-prod.analytics.user_stats en el esquema analytics del proyecto enterprise-prod Google Cloud en BigQuery.
  9. La tabla user_stats está disponible para los usuarios finales en el esquema analytics del proyecto enterprise-prod Google Cloud en BigQuery.

Dividir el desarrollo, el staging y la producción por esquema y proyecto

Esta solución crea tres entornos de ejecución: desarrollo, preproducción y producción. Todos los entornos se dividen por Google Cloud proyecto. Además, el desarrollo se separa del staging y la producción por esquemas.

Para dividir las tablas de desarrollo, de preproducción y de producción por esquema y Google Cloud proyecto, debes configurar los ajustes del flujo de trabajo, las anulaciones de compilación del espacio de trabajo y dos configuraciones de lanzamiento. Para programar ejecuciones de las fases de desarrollo y producción, debes crear dos configuraciones de flujo de trabajo independientes.

En esta solución, Dataform ejecuta tablas de desarrollo en BigQuery en varios esquemas de desarrollo, uno por cada espacio de trabajo de Dataform, en un proyecto de desarrollo Google Cloud específico.

Dataform ejecuta todas las tablas de almacenamiento provisional en BigQuery en un proyecto de almacenamiento provisional Google Cloud específico en esquemas que tienen el mismo sufijo, lo que indica que se crearon en el almacenamiento provisional.

Dataform ejecuta todas las tablas de producción de BigQuery en un proyecto de producción Google Cloud específico en esquemas que tienen el mismo sufijo, lo que indica que se crearon en producción.

En la siguiente tabla se muestra un ejemplo de configuración que divide las tablas de desarrollo, de preproducción y de producción por esquema y Google Cloud proyecto, con un esquema de desarrollo por espacio de trabajo de Dataform:

Ajuste Desarrollo Staging Producción
Google Cloud project enterprise-dev enterprise-staging enterprise-prod
Rama de Git Nombre del espacio de trabajo main prod
Sustituciones de compilación de Workspace Sufijo del esquema: ${workspaceName} - -
Configuración de la versión - staging production
Configuración del flujo de trabajo - staging production

En esta solución, Dataform ejecuta tablas de desarrollo, de staging y de producción en diferentes Google Cloud proyectos de BigQuery. Además, Dataform ejecuta tablas de desarrollo en varios esquemas personalizados, uno por espacio de trabajo. Dataform ejecuta tablas de staging y de producción en el mismo esquema, pero en proyectos diferentes. Google Cloud

Los desarrolladores activan la ejecución manualmente en sus espacios de trabajo de Dataform. Cada desarrollador trabaja en su espacio de trabajo específico, que lleva su nombre. Por ejemplo, sasha.

Cada espacio de trabajo corresponde a un esquema de BigQuery personalizado, cuyo nombre es el del espacio de trabajo. Cuando un desarrollador activa la ejecución en su espacio de trabajo, Dataform añade el nombre del espacio de trabajo como sufijo del esquema al esquema predeterminado. A continuación, Dataform ejecuta las tablas del esquema personalizado en BigQuery.

Por ejemplo, Dataform ejecuta tablas del espacio de trabajo sasha en el esquema analytics_sasha de BigQuery. De esta forma, cada desarrollador almacena sus tablas de desarrollo en su propio esquema. No hay riesgo de sobrescribir por error las tablas de otros desarrolladores.

En Dataform, los desarrolladores confirman y envían sus cambios a las ramas personalizadas del repositorio remoto. Después, en la plataforma de alojamiento de Git de terceros, envían solicitudes de extracción a la rama main. Al aprobar una solicitud de extracción, se combinan los cambios en la rama main del repositorio remoto.

Dataform compila automáticamente las tablas de almacenamiento provisional de la rama main del repositorio remoto en un resultado de compilación de acuerdo con los ajustes de configuración de la versión staging.

Dataform ejecuta automáticamente el staging resultado de la compilación según la programación definida en la staging configuración del flujo de trabajo.

Para promover tablas de la fase de pruebas a la de producción, en la plataforma de alojamiento de Git de terceros, los desarrolladores envían solicitudes de extracción de la rama main a la rama prod. Al aprobar una solicitud de extracción, se combinan los cambios en la rama prod del repositorio remoto.

Dataform compila automáticamente las tablas de producción de la rama prod del repositorio remoto en un resultado de compilación según los ajustes de configuración de la versión production.

Dataform ejecuta automáticamente el production resultado de la compilación según la programación definida en la production configuración del flujo de trabajo.

Para implementar esta solución, configura los siguientes ajustes de Dataform:

Configuración del flujo de trabajo

En función de tu versión de Dataform Core, los ajustes del flujo de trabajo se almacenan en workflow_settings.yaml o dataform.json. Para obtener más información, consulta Configurar los ajustes del flujo de trabajo de Dataform.

En workflow_settings.yaml, configura los siguientes ajustes:

defaultProject: enterprise-dev
defaultDataset: analytics

En dataform.json, configura los siguientes ajustes:

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

Sustituciones de Workspace

Sufijo del esquema: "${workspaceName}"

staging configuración de la versión

  • Git commitish: "main"
  • Google Cloud ID de proyecto: "enterprise-staging"

prod configuración de la versión

  • Git commitish: "prod"
  • Google Cloud ID de proyecto: "enterprise-prod"

Para programar ejecuciones de los resultados de compilación de staging y production, crea dos configuraciones de flujo de trabajo independientes con programaciones personalizadas que se adapten mejor a tus necesidades.

Proceso de desarrollo de ejemplo

En este ejemplo, los desarrolladores Sasha y Kai trabajan en el mismo repositorio de Dataform. El repositorio de Dataform está conectado a un repositorio de Git remoto de terceros.

Sasha trabaja en su espacio de trabajo específico llamado sasha, y Kai trabaja en su espacio de trabajo específico llamado Kai. Confirman y envían los cambios a las ramas personalizadas del repositorio remoto, llamadas sasha y kai.

En la siguiente tabla se muestran los ajustes del entorno aplicados a Sasha, Kai y el entorno de producción:

Ajuste Sasha Kai Staging Producción
Google Cloud project enterprise-dev enterprise-dev enterprise-staging enterprise-prod
Rama de Git sasha kai main prod
Esquema analytics_sasha analytics_kai analytics analytics

Sasha crea una tabla y la implementa en producción siguiendo este proceso:

  1. En el espacio de trabajo de sashaDataform, Sasha crea la tabla user_stats.
  2. En el espacio de trabajo sasha, Sasha activa manualmente la ejecución de la tabla.
  3. Dataform ejecuta la tabla enterprise-dev.analytics_sasha.user_stats en el esquema analytics_sasha del proyecto enterprise-dev Google Cloud en BigQuery.
  4. En el espacio de trabajo sasha, Sasha confirma el cambio y lo envía a la rama sasha del repositorio de Git remoto.
  5. En el repositorio remoto, Sasha envía una solicitud de extracción a la rama main.
  6. En el repositorio remoto, Kai revisa y aprueba la solicitud de extracción, y combina el cambio en la rama main.
  7. Dataform actualiza automáticamente el resultado de la compilación en la staging versión con la frecuencia especificada. Durante la siguiente actualización del resultado de compilación de staging, Dataform añade la tabla enterprise-staging.analytics.user_stats al resultado de compilación.
  8. Durante la ejecución programada de una configuración de flujo de trabajo, Dataform ejecuta la tabla enterprise-staging.analytics.user_stats en el esquema analytics del proyecto enterprise-staging Google Cloud en BigQuery.
  9. En el repositorio remoto, Sasha envía una solicitud de extracción a la rama prod.
  10. En el repositorio remoto, Kai revisa y aprueba la solicitud de extracción, y combina el cambio en la rama prod.
  11. Dataform actualiza automáticamente el resultado de la compilación en la production versión con la frecuencia especificada. Durante la siguiente actualización del resultado de compilación de production, Dataform añade la tabla enterprise-prod.analytics.user_stats al resultado de compilación.
  12. Durante la ejecución programada de una configuración de flujo de trabajo, Dataform ejecuta la tabla enterprise-prod.analytics.user_stats en el esquema analytics del proyecto enterprise-prod Google Cloud en BigQuery.
  13. La tabla user_stats está disponible para los usuarios finales en el esquema analytics del proyecto enterprise-prod Google Cloud en BigQuery.

Siguientes pasos