Cómo administrar el ciclo de vida del código

En este documento, se describen las prácticas recomendadas para administrar el ciclo de vida del código en Dataform: crear entornos de desarrollo, etapa de pruebas y producción, y establecer la configuración de compilación y ejecución para cada entorno.

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

  • Crear entornos de ejecución a fin de aislar las tablas creadas durante el desarrollo de las tablas disponibles para los usuarios finales

  • Establece configuraciones de lanzamiento y flujo de trabajo para ejecutar flujos de trabajo en un entorno de producción y, de forma 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 parámetros de configuración de lanzamiento y flujo de trabajo de entornos de etapa de pruebas y producción.

Estas soluciones te permiten crear entornos de ejecución dentro de un solo repositorio de Dataform y proyecto de Google Cloud. Puedes elegir tener varias copias de un repositorio de Dataform alojadas en diferentes proyectos de Google Cloud. Cada proyecto corresponde a una etapa del ciclo de vida del código, por ejemplo, desarrollo, etapa de pruebas y producción. Este enfoque te permite personalizar los permisos de administración de identidades y accesos en cada etapa del ciclo de vida del código.

Prácticas recomendadas para entornos de ejecución aislados

Recomendamos aislar las tablas creadas durante las ejecuciones del flujo de trabajo de SQL 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 los demás.
Divide las tablas de desarrollo y producción por esquema y proyecto de Google Cloud
Se recomienda para los equipos medianos. Dataform crea tablas de desarrollo y producción en diferentes esquemas y proyectos en BigQuery. Dataform publicó todas las tablas en un proyecto de 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 reemplacen por accidente las tablas de desarrollo de otros. 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.
Dividir las tablas de desarrollo, etapa de pruebas y producción por proyecto de Google Cloud
Se recomienda para equipos grandes o equipos que requieren un entorno de etapa de pruebas. Dataform ejecuta tablas de cada entorno en un proyecto dedicado de Google Cloud en BigQuery. Esta solución te da el máximo control sobre el ciclo de vida del código.

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

En todas las soluciones, los desarrolladores activan de forma manual ejecuciones de tablas de desarrollo dentro de sus espacios de trabajo de Dataform. Dataform compila automáticamente tablas de producción y 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 de SQL: desarrollo y producción. Para dividir las tablas de desarrollo y producción por esquema, debes establecer la configuración del flujo de trabajo, las anulaciones de compilación de lugares 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 esquemas que tienen el mismo sufijo, lo que indica que se crearon durante el desarrollo. Dataform ejecuta todas las tablas de producción en 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:

Parámetro de configuración Desarrollo Producción
Proyecto de Google Cloud enterprise-analytics enterprise-analytics
Rama de Git nombre del lugar de trabajo main
Anulaciones de compilación de lugares de trabajo sufijo de esquema: dev -
Configuración del 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 de Google Cloud.

Los desarrolladores activan la ejecución de forma manual en sus lugares de trabajo de Dataform. En todas las ejecuciones activadas de forma manual, 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.

En Dataform, los desarrolladores confirman y envían los cambios a sus ramas personalizadas del repositorio remoto. Luego, en la plataforma de hosting 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 tablas de producción de la rama main del repositorio remoto en un resultado de compilación según los parámetros de configuración de lanzamiento de 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, establece los siguientes parámetros de configuración de Dataform:

Configuración del flujo de trabajo

Según la versión del núcleo de Dataform, la configuración del flujo de trabajo se almacena en workflow_settings.yaml o dataform.json. Para obtener más información, consulta Establece la configuración del flujo de trabajo de Dataform.

En workflow_settings.yaml establece la siguiente configuración:

defaultProject: enterprise-analytics
defaultDataset: analytics

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

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

Anulaciones de lugares de trabajo

Sufijo de esquema: "dev"

Configuración del lanzamiento

Commitish de Git: "main"

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

Proceso de desarrollo de muestra

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 muestra la configuración del entorno aplicado para Sasha, Kai y el entorno de producción:

Parámetro de configuración Sasha Kai Producción
Proyecto de Google Cloud 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 en el siguiente proceso:

  1. En un lugar de trabajo de Dataform, Sasha crea la tabla user_stats.sqlx.
  2. En el lugar 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 de Google Cloud en BigQuery.
  4. En el lugar de trabajo, Sasha confirma el cambio y lo envía a la rama sasha del repositorio remoto de Git.
  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 con la rama main.
  7. Dataform actualiza automáticamente el resultado de la compilación en la versión production con la frecuencia especificada. Durante la próxima actualización del resultado de la compilación de production, Dataform agrega la tabla enterprise-analytics.analytics.user_stats al resultado de la compilación.
  8. Durante una 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 de Google Cloud en BigQuery.
  9. La tabla user_stats.sqlx está disponible para los usuarios finales en el esquema analytics en el proyecto enterprise-analytics de 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 establecer la configuración del flujo de trabajo, las anulaciones de compilación de lugares 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 dedicado de Google Cloud, en esquemas con un sufijo de esquema diferente para cada lugar de trabajo.

Dataform ejecuta todas las tablas de producción en BigQuery, un proyecto de producción dedicado de Google Cloud 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 lugar de trabajo de Dataform:

Parámetro de configuración Desarrollo Producción
Proyecto de Google Cloud enterprise-dev enterprise-prod
Rama de Git nombre del lugar de trabajo main
Anulaciones de compilación de lugares de trabajo sufijo de esquema: ${workspaceName} -
Configuración del 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 proyectos de Google Cloud en BigQuery.

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

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

Por ejemplo, Dataform crea 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 sus propios esquemas. No hay riesgo de reemplazar por accidente las tablas de otros desarrolladores.

En Dataform, los desarrolladores confirman y envían los cambios a sus ramas personalizadas del repositorio remoto. Luego, en la plataforma de hosting 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 tablas de producción de la rama main del repositorio remoto en un resultado de compilación según los parámetros de configuración de lanzamiento de 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, establece los siguientes parámetros de configuración de Dataform:

Configuración del flujo de trabajo

Según la versión del núcleo de Dataform, la configuración del flujo de trabajo se almacena en workflow_settings.yaml o dataform.json. Para obtener más información, consulta Establece la configuración 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 de lugares de trabajo

Sufijo de esquema: "${workspaceName}"

Configuración del lanzamiento

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

Para programar ejecuciones de 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 muestra

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 dedicado, sasha, y Kai, en Kai. Confirman y envían los cambios a las ramas personalizadas del repositorio remoto, llamadas sasha y kai.

En la siguiente tabla, se muestra la configuración del entorno aplicado para Sasha, Kai y el entorno de producción:

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

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

  1. En el lugar de trabajo de Dataform sasha, Sasha crea la tabla user_stats.sqlx.
  2. En el espacio de trabajo sasha, Sasha activa de forma manual 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 de Google Cloud en BigQuery.
  4. En el lugar 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 con la rama main.
  7. Dataform actualiza automáticamente el resultado de la compilación en la versión production con la frecuencia especificada. Durante la próxima actualización del resultado de la compilación de production, Dataform agrega la tabla enterprise-prod.analytics.user_stats al resultado de la compilación.
  8. Durante una 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 de Google Cloud en BigQuery.
  9. La tabla user_stats.sqlx está disponible para los usuarios finales en el esquema analytics en el proyecto enterprise-prod de 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 proyecto de Google Cloud. 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 establecer la configuración del flujo de trabajo, las anulaciones de compilación de lugares de trabajo y dos parámetros de configuración de lanzamiento. Para programar las ejecuciones de etapa de pruebas y de producción, debes crear dos configuraciones de flujo de trabajo separadas.

En esta solución, Dataform ejecuta tablas de desarrollo en BigQuery en varios esquemas de desarrollo, uno para cada lugar de trabajo de Dataform, en un proyecto de desarrollo exclusivo de Google Cloud.

Dataform ejecuta todas las tablas de etapa de pruebas en BigQuery en un proyecto de etapa de pruebas dedicado de Google Cloud 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 dedicado de Google Cloud en esquemas que tienen el mismo sufijo, lo que indica que se crearon en producción.

En la siguiente tabla, se muestra una configuración de ejemplo 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 lugar de trabajo de Dataform:

Parámetro de configuración Desarrollo Etapa de pruebas Producción
Proyecto de Google Cloud enterprise-dev enterprise-staging enterprise-prod
Rama de Git nombre del lugar de trabajo main prod
Anulaciones de compilación de lugares de trabajo sufijo de esquema: ${workspaceName} - -
Configuración del lanzamiento - staging production
Configuración del flujo de trabajo - staging production

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

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

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

Por ejemplo, Dataform ejecuta tablas del 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 reemplazar por accidente las tablas de otros desarrolladores.

En Dataform, los desarrolladores confirman y envían los cambios a sus ramas personalizadas del repositorio remoto. Luego, en la plataforma de hosting 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 tablas de etapa de pruebas de la rama main del repositorio remoto en un resultado de compilación según los ajustes de configuración de lanzamiento de 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 hosting 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 tablas de producción de la rama prod del repositorio remoto en un resultado de compilación según los parámetros de configuración de lanzamiento de 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, establece los siguientes parámetros de configuración de Dataform:

Configuración del flujo de trabajo

Según la versión del núcleo de Dataform, la configuración del flujo de trabajo se almacena en workflow_settings.yaml o dataform.json. Para obtener más información, consulta Establece la configuración 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 de lugares de trabajo

Sufijo de esquema: "${workspaceName}"

Configuración de lanzamiento de staging

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

Configuración de lanzamiento de prod

  • Commitish de Git: "prod"
  • ID del proyecto de Google Cloud: "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 muestra

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 dedicado, sasha, y Kai, en Kai. Confirman y envían los cambios a las ramas personalizadas del repositorio remoto, llamadas sasha y kai.

En la siguiente tabla, se muestra la configuración del entorno aplicado para Sasha, Kai y el entorno de producción:

Parámetro de configuración Sasha Kai Etapa de pruebas Producción
Proyecto de Google Cloud 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 en el siguiente proceso:

  1. En el lugar de trabajo de Dataform sasha, Sasha crea la tabla user_stats.sqlx.
  2. En el espacio de trabajo sasha, Sasha activa de forma manual 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 de Google Cloud en BigQuery.
  4. En el lugar 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 con la rama main.
  7. Dataform actualiza automáticamente el resultado de la compilación en la versión staging con la frecuencia especificada. Durante la próxima actualización del resultado de la compilación de staging, Dataform agrega la tabla enterprise-staging.analytics.user_stats al resultado de la compilación.
  8. Durante una 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 de 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 con la rama prod.
  11. Dataform actualiza automáticamente el resultado de la compilación en la versión production con la frecuencia especificada. Durante la próxima actualización del resultado de la compilación de production, Dataform agrega la tabla enterprise-prod.analytics.user_stats al resultado de la compilación.
  12. Durante una ejecución programada de una configuración de flujo de trabajo, Dataform ejecuta la tabla enterprise-prod.analytics.user_stats en el esquema analytics en el proyecto enterprise-prod de Google Cloud en BigQuery.
  13. La tabla user_stats.sqlx está disponible para los usuarios finales en el esquema analytics en el proyecto enterprise-prod de Google Cloud en BigQuery.

¿Qué sigue?