Prácticas recomendadas para el ciclo de vida del flujo de trabajo

En este documento, se describen las prácticas recomendadas para administrar el ciclo de vida del flujo de trabajo en Dataform: crear entornos de desarrollo, de etapa de pruebas y de producción, y configurar los parámetros de configuración de compilación y ejecución para 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, te recomendamos que hagas lo siguiente:

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

  • Configurar los parámetros de configuración de lanzamiento y flujo de trabajo para ejecutar flujos de trabajo en un entorno de producción y, de manera opcional, en un entorno de etapa de pruebas

En este documento, se describen soluciones para aislar tablas de desarrollo con anulaciones de compilación de lugares de trabajo y configurar entornos de producción y de etapa de pruebas con parámetros de configuración de lanzamiento y parámetros de configuración de flujo de trabajo.

Estas soluciones te permiten crear entornos de ejecución dentro de un solo repositorio y proyecto de Dataform. Google Cloud Puedes optar por tener varias copias de un repositorio de Dataform, alojadas en diferentesGoogle Cloud proyectos, y cada proyecto corresponderá a una etapa de tu ciclo de vida del código, por ejemplo, desarrollo, etapa de pruebas y producción. Este enfoque te permite personalizar los permisos de Identity and Access Management en cada etapa 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. Esto garantiza que los usuarios finales puedan navegar a las tablas de producción y elimina el riesgo de que accedan a datos incorrectos por accidente.

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

Divide las tablas de desarrollo y producción por esquema
Se recomienda para equipos pequeños. Dataform crea tablas de desarrollo y producción en diferentes esquemas 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 reemplazar las tablas de desarrollo de otros desarrolladores.
Divide las tablas de desarrollo y producción por esquema y proyecto Google Cloud
Se recomienda para equipos medianos. Dataform crea tablas de desarrollo y producción en diferentes esquemas y proyectos en BigQuery. Dataform publicó todas las tablas de desarrollo en un proyecto de desarrollo Google Cloud dedicado. Cada desarrollador de Dataform tiene su propio esquema único para las tablas de desarrollo. Esta solución elimina el riesgo de que los desarrolladores sobrescriban accidentalmente las tablas de desarrollo de otros desarrolladores. La desventaja de este enfoque es que borrar las tablas y los esquemas de desarrollo, y volver a crear todas las tablas en cada entorno puede requerir más tiempo.
Divide las tablas de desarrollo, etapa de pruebas y producción por proyecto Google Cloud
Se recomienda para equipos grandes o que requieren un entorno de pruebas. Dataform ejecuta tablas de cada entorno en unGoogle Cloud proyecto dedicado en BigQuery. Esta solución te brinda el mayor control sobre el ciclo de vida del código.

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

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

Divide 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 parámetros de configuración 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 en los esquemas que tienen el mismo sufijo, lo que indica que se crearon durante el desarrollo. Dataform ejecuta todas las tablas de producción en 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:

Configuración Desarrollo Producción
Google Cloud proyecto enterprise-analytics enterprise-analytics
Rama de Git Nombre del espacio de trabajo main
Anulaciones de compilación de lugares de trabajo Sufijo del esquema: dev -
Configuración de lanzamiento - production
Configuración del flujo de trabajo - production

En esta solución, las tablas de desarrollo y producción se almacenan en un solo proyecto deGoogle Cloud .

Los desarrolladores activan la ejecución de forma manual 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 saber que pueden reemplazar las tablas de otros desarrolladores.

En Dataform, los desarrolladores confirman y envían sus cambios a las ramas personalizadas del repositorio remoto. Luego, en la plataforma de alojamiento de Git de terceros, envían solicitudes de extracción. La aprobación de una solicitud de extracción combina 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 la configuración de lanzamiento production.

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

Para implementar esta solución, configura los siguientes parámetros de Dataform:

Configuración del flujo de trabajo

Según tu versión de Dataform Core, la configuración del flujo de trabajo se almacena en workflow_settings.yaml o dataform.json. Para obtener más información, consulta Configura los parámetros del flujo de trabajo de Dataform.

En workflow_settings.yaml, configura los siguientes parámetros:

defaultProject: enterprise-analytics
defaultDataset: analytics

En dataform.json, establece la siguiente configuración:

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

Anulaciones del espacio de trabajo

Sufijo del esquema: "dev"

Configuración de lanzamiento

Commitish de Git: "main"

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

Proceso de desarrollo de muestras

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 cambios a ramas personalizadas en el repositorio remoto, llamadas sasha y kai.

En la siguiente tabla, se muestran los parámetros de configuración del entorno aplicados para Sasha, Kai y el entorno de producción:

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

Sasha crea una tabla nueva y la implementa en producción con el siguiente 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 en BigQuery.Google Cloud
  4. En el espacio de trabajo, Sasha confirma el cambio y lo envía a la rama sasha en el 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 versión de production con la frecuencia especificada. Durante la próxima actualización del resultado de compilación production, Dataform agrega 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.

Divide 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 proyecto de Google Cloud , debes configurar los parámetros de configuración 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 Google Cloud de desarrollo dedicado, 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 Google Cloud dedicado sin sufijo de esquema.

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

Configuración Desarrollo Producción
Google Cloud proyecto enterprise-dev enterprise-prod
Rama de Git Nombre del espacio de trabajo main
Anulaciones de compilación de lugares de trabajo Sufijo del esquema: ${workspaceName} -
Configuración de lanzamiento - production
Configuración del flujo de trabajo - production

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

Los desarrolladores activan la ejecución de forma manual en sus espacios de trabajo de Dataform. Cada desarrollador trabaja en su espacio de trabajo dedicado, que lleva su nombre, por ejemplo, sasha.

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

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

En Dataform, los desarrolladores confirman y envían sus cambios a las ramas personalizadas del repositorio remoto. Luego, en la plataforma de alojamiento de Git de terceros, envían solicitudes de extracción. La aprobación de una solicitud de extracción combina 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 la configuración de lanzamiento production.

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

Para implementar esta solución, configura los siguientes parámetros de Dataform:

Configuración del flujo de trabajo

Según tu versión de Dataform Core, la configuración del flujo de trabajo se almacena en workflow_settings.yaml o dataform.json. Para obtener más información, consulta Configura los parámetros del flujo de trabajo de Dataform.

En workflow_settings.yaml, establece la siguiente configuración:

defaultProject: enterprise-dev
defaultDataset: analytics

En dataform.json, establece la siguiente configuración:

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

Anulaciones del espacio de trabajo

Sufijo del esquema: "${workspaceName}"

Configuración de lanzamiento

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

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

Proceso de desarrollo de muestras

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 exclusivo llamado sasha, y Kai trabaja en su espacio de trabajo exclusivo llamado Kai. Confirman y envían cambios a ramas personalizadas en el repositorio remoto, llamadas sasha y kai.

En la siguiente tabla, se muestran los parámetros de configuración del entorno aplicados para Sasha, Kai y el entorno de producción:

Configuración Sasha Kai Producción
Google Cloud proyecto enterprise-dev enterprise-dev enterprise-prod
Rama de Git sasha kai main
Anulaciones de compilación de lugares de trabajo Sufijo del esquema: ${workspaceName} Sufijo del esquema: ${workspaceName} -
Configuración de lanzamiento - - production
Configuración del flujo de trabajo - - production

Sasha crea una tabla nueva y la implementa en producción con el siguiente proceso:

  1. En el espacio de trabajo de sasha Dataform, 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 en el 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 versión de production con la frecuencia especificada. Durante la próxima actualización del resultado de compilación production, Dataform agrega 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.

Divide el desarrollo, la etapa de pruebas y la producción por esquema y proyecto

Esta solución crea tres entornos de ejecución: desarrollo, etapa de pruebas y producción. Todos los entornos se dividen por Google Cloud proyecto. Además, el desarrollo se divide de la etapa de pruebas y la producción por esquema.

Para dividir las tablas de desarrollo, etapa de pruebas y producción por esquema y proyecto de Google Cloud , debes configurar los parámetros de configuración del flujo de trabajo, las anulaciones de compilación del espacio de trabajo y dos parámetros de configuración de lanzamiento. Para programar ejecuciones de etapa de pruebas 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 dedicado.

Dataform ejecuta todas las tablas de etapa de pruebas en BigQuery en un proyecto de etapa de pruebas Google Cloud dedicado en esquemas que tienen el mismo sufijo, lo que indica que se crearon en la etapa de pruebas.

Dataform ejecuta todas las tablas de producción en BigQuery en un proyecto de producción Google Cloud dedicado 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, etapa de pruebas y producción por esquema y proyecto de Google Cloud , con un esquema de desarrollo por cada espacio de trabajo de Dataform:

Configuración Desarrollo Etapa de pruebas Producción
Google Cloud proyecto enterprise-dev enterprise-staging enterprise-prod
Rama de Git Nombre del espacio de trabajo main prod
Anulaciones de compilación de lugares de trabajo Sufijo del esquema: ${workspaceName} - -
Configuración de lanzamiento - staging production
Configuración del flujo de trabajo - staging production

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

Los desarrolladores activan la ejecución de forma manual en sus espacios de trabajo de Dataform. Cada desarrollador trabaja en su espacio de trabajo dedicado, que lleva su nombre, por ejemplo, sasha.

Cada espacio de trabajo corresponde a un esquema personalizado de BigQuery, cuyo nombre se basa en el espacio de trabajo. Cuando un desarrollador activa la ejecución en su espacio de trabajo, Dataform agrega el nombre del espacio de trabajo como sufijo del esquema al esquema predeterminado. Luego, Dataform ejecuta tablas en el esquema personalizado en BigQuery.

Por ejemplo, Dataform ejecuta tablas desde el lugar de trabajo sasha en el esquema analytics_sasha en BigQuery. De esta manera, cada desarrollador almacena sus tablas de desarrollo en su propio esquema. No hay riesgo de sobrescribir accidentalmente las tablas de otros desarrolladores.

En Dataform, los desarrolladores confirman y envían sus cambios a las ramas personalizadas del repositorio remoto. Luego, en la plataforma de alojamiento de Git de terceros, envían solicitudes de extracción a la rama main. La aprobación de una solicitud de extracción combina los cambios en la rama main del repositorio remoto.

Dataform compila automáticamente las tablas de etapa de pruebas de la rama main del repositorio remoto en un resultado de compilación según la configuración de lanzamiento staging.

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

Para promover tablas de la etapa de pruebas a la 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. La aprobación de una solicitud de extracción combina 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 la configuración de lanzamiento production.

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

Para implementar esta solución, configura los siguientes parámetros de Dataform:

Configuración del flujo de trabajo

Según tu versión de Dataform Core, la configuración del flujo de trabajo se almacena en workflow_settings.yaml o dataform.json. Para obtener más información, consulta Configura los parámetros del flujo de trabajo de Dataform.

En workflow_settings.yaml, establece la siguiente configuración:

defaultProject: enterprise-dev
defaultDataset: analytics

En dataform.json, establece la siguiente configuración:

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

Anulaciones del espacio de trabajo

Sufijo del esquema: "${workspaceName}"

Configuración de lanzamiento de staging

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

Configuración de lanzamiento de prod

  • Commitish de Git: "prod"
  • Google Cloud ID del 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 programas personalizados que se adapten mejor a tus necesidades.

Proceso de desarrollo de muestras

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 exclusivo llamado sasha, y Kai trabaja en su espacio de trabajo exclusivo llamado Kai. Confirman y envían cambios a ramas personalizadas en el repositorio remoto, llamadas sasha y kai.

En la siguiente tabla, se muestran los parámetros de configuración del entorno aplicados para Sasha, Kai y el entorno de producción:

Configuración Sasha Kai Etapa de pruebas Producción
Google Cloud proyecto 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 nueva y la implementa en producción con el siguiente proceso:

  1. En el espacio de trabajo de sasha Dataform, 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 en el 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 versión de staging con la frecuencia especificada. Durante la próxima actualización del resultado de compilación staging, Dataform agrega 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 versión de production con la frecuencia especificada. Durante la próxima actualización del resultado de compilación production, Dataform agrega 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.

¿Qué sigue?