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

Este documento describe las prácticas recomendadas para administrar el ciclo de vida del código en Dataform: Creación de entornos de desarrollo, etapa de pruebas y producción. y configurar ajustes 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, mantiene la higiene de los datos y optimiza los procesos de desarrollo, te recomendamos lo siguiente:

  • Crear entornos de ejecución para aislar las tablas creadas durante a partir de tablas disponibles para los usuarios finales.

  • Establece configuraciones de lanzamientos y flujos 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 el desarrollo tablas con anulaciones de compilación de lugares de trabajo y configurar entornos de etapa de pruebas y producción parámetros de configuración de lanzamiento y las configuraciones del flujo de trabajo.

Estas soluciones te permiten crear entornos de ejecución dentro de una sola Repositorio de Dataform y proyecto de Google Cloud. Puedes elegir tener varias copias de un repositorio de Dataform, alojadas en diferentes Proyecto de Google Cloud, y cada proyecto corresponde a una etapa de tu código como 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

Recomendamos aislar las tablas creadas durante el flujo de trabajo de desarrollo de SQL ejecuciones de tablas de producción en BigQuery. Esto garantiza que los usuarios finales puedan navegar a producción y elimina el riesgo de que los usuarios finales 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 modelos de desarrollo en diferentes esquemas de 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 modelos de desarrollo en diferentes esquemas y proyectos de BigQuery. Dataform publicó todas las tablas de desarrollo en un proyecto de desarrollo exclusivo de Google Cloud. Cada desarrollador de Dataform tiene su propio esquema único para el desarrollo. tablas. Esta solución elimina el riesgo de los desarrolladores y reemplazar accidentalmente las tablas de desarrollo de cada uno. La desventaja de es que borrar tablas y esquemas de desarrollo y volver a crear es posible que todas las tablas de cada entorno requieran 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 de Google Cloud en BigQuery. Esta solución te brinda la mayor control sobre el ciclo de vida del código.

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

En todas las soluciones, los desarrolladores activar manualmente ejecuciones de desarrollo. en 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 configurar configuración del flujo de trabajo, anulaciones de compilación de lugares de trabajo y una versión configuración. 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 el desarrollo y de producción por esquema, con un esquema de desarrollo:

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 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 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 sobrescribir las tablas de cada uno.

En Dataform, los desarrolladores confirman y envían los cambios a sus ramas 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 a la rama main del repositorio remoto.

Dataform compila automáticamente tablas de producción a partir del main del repositorio remoto en un resultado de compilación de acuerdo con los ajustes de configuración de lanzamiento de production

Dataform ejecuta automáticamente el resultado de la compilación 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 tu versión de Dataform Core, se aplica la configuración del flujo de trabajo almacenado 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 de lanzamiento

Commitish de Git: "main"

Para programar ejecuciones de resultados de compilación de production, haz lo siguiente: crear 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 en un repositorio remoto de Git de terceros.

Confirman y envían cambios a ramas personalizadas en el repositorio remoto. llamados sasha y kai.

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

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 de Esquema analytics_dev en enterprise-analytics proyecto de Google Cloud en BigQuery.
  4. En el espacio de trabajo, Sasha confirma el cambio y lo envía a sasha. en el 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 la combinación del cambio en la rama main.
  7. Dataform actualiza automáticamente el resultado de compilación en el production versión con la frecuencia especificada. Durante la próxima actualización del Resultado de la compilación production, Dataform agrega el Tabla enterprise-analytics.analytics.user_stats para el resultado de la 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 en el proyecto de Google Cloud enterprise-analytics en BigQuery.
  9. La tabla user_stats.sqlx está disponible para los usuarios finales de analytics. esquema 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, sigue estos pasos: debes establecer la 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 de desarrollo exclusivo 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 el desarrollo y de producción por esquema y proyecto de Google Cloud, con un solo por un lugar de trabajo de Dataform:

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 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 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 exclusivo, con el nombre de ellos. 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, se ejecuta Dataform 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 tablas de otros desarrolladores.

En Dataform, los desarrolladores confirman y envían los cambios a sus ramas 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 a la rama main del repositorio remoto.

Dataform compila automáticamente tablas de producción a partir del main del repositorio remoto en un resultado de compilación de acuerdo con los ajustes de configuración de lanzamiento de production

Dataform ejecuta automáticamente el resultado de la compilación 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 tu versión de Dataform Core, se aplica la configuración del flujo de trabajo almacenado 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

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

Para programar ejecuciones de resultados de compilación de production, haz lo siguiente: Crear una configuración de flujo de trabajo con un programa personalizado que mejor se adapte 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 en un repositorio remoto de Git de terceros.

Sasha trabaja en su espacio de trabajo dedicado llamado sasha, y Kai trabaja en su espacio de trabajo dedicado llamado Kai. Confirman y envían cambios a ramas personalizadas en el repositorio remoto. llamados sasha y kai.

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

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 de 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 espacio 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 de Esquema analytics_sasha en el proyecto de Google Cloud enterprise-dev en BigQuery.
  4. En el espacio de trabajo de sasha, Sasha confirma el cambio y lo envía al 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 la combinación del cambio en la rama main.
  7. Dataform actualiza automáticamente el resultado de compilación en el production versión con la frecuencia especificada. Durante la próxima actualización del Resultado de la compilación production, Dataform agrega el Tabla enterprise-prod.analytics.user_stats para el resultado de la 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 en el proyecto de Google Cloud enterprise-prod en BigQuery.
  9. La tabla user_stats.sqlx está disponible para los usuarios finales de analytics. esquema 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 del espacio de trabajo, y dos configuraciones de lanzamiento. Para programar la etapa de pruebas y la producción de flujo de trabajo, debes crear dos parámetros de configuración de flujo de trabajo separados.

En esta solución, Dataform ejecuta tablas de desarrollo en BigQuery en múltiples esquemas de desarrollo, una por 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 tengan el mismo sufijo 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 que indica que se crearon en producción.

En la siguiente tabla, se muestra un ejemplo de configuración que divide el desarrollo, de almacenamiento en etapa intermedia y producción por esquema y proyecto de Google Cloud, con una de desarrollo por un lugar de trabajo de Dataform:

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 de lanzamiento - staging production
Configuración del flujo de trabajo - staging production

En esta solución, Dataform ejecuta el desarrollo, la etapa de pruebas y en diferentes proyectos de Google Cloud en BigQuery. Además, Dataform ejecuta tablas de desarrollo en múltiples esquemas, uno por lugar de trabajo. Dataform ejecuta la etapa de pruebas y la 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 exclusivo, con el nombre de ellos. 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, se ejecuta Dataform 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 tablas de otros desarrolladores.

En Dataform, los desarrolladores confirman y envían los cambios a sus ramas del repositorio remoto. Luego, en la plataforma de hosting de Git de terceros, envían solicitudes de extracción a la rama main. 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 a partir del main del repositorio remoto en un resultado de compilación de acuerdo con los ajustes de configuración de lanzamiento de staging

Dataform ejecuta automáticamente el resultado de la compilación 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 las de producción en el hosting de Git de terceros plataforma, los desarrolladores envían solicitudes de extracción de la rama main a 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 a partir del prod del repositorio remoto en un resultado de compilación de acuerdo con los ajustes de configuración de lanzamiento de production

Dataform ejecuta automáticamente el resultado de la compilación 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 tu versión de Dataform Core, se aplica la configuración del flujo de trabajo almacenado 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 la compilación de staging y production, haz lo siguiente: Crear dos configuraciones de flujo de trabajo independientes con programas personalizados que mejor se adapte 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 en un repositorio remoto de Git de terceros.

Sasha trabaja en su espacio de trabajo dedicado llamado sasha, y Kai trabaja en su espacio de trabajo dedicado llamado Kai. Confirman y envían cambios a ramas personalizadas en el repositorio remoto. llamados sasha y kai.

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

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 espacio 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 de Esquema analytics_sasha en el proyecto de Google Cloud enterprise-dev en BigQuery.
  4. En el espacio de trabajo de sasha, Sasha confirma el cambio y lo envía al 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 la combinación del cambio en la rama main.
  7. Dataform actualiza automáticamente el resultado de compilación en el staging versión con la frecuencia especificada. Durante la próxima actualización del Resultado de la compilación staging, Dataform agrega el Tabla enterprise-staging.analytics.user_stats para el resultado de la 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 en el proyecto de Google Cloud enterprise-staging 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 la combinación del cambio en la rama prod.
  11. Dataform actualiza automáticamente el resultado de compilación en el production versión con la frecuencia especificada. Durante la próxima actualización del Resultado de la compilación production, Dataform agrega el Tabla enterprise-prod.analytics.user_stats para el resultado de la 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 en el proyecto de Google Cloud enterprise-prod de en BigQuery.
  13. La tabla user_stats.sqlx está disponible para los usuarios finales de analytics. esquema en el proyecto enterprise-prod de Google Cloud en BigQuery.

¿Qué sigue?