Los pipelines de Azure DevOps permiten el CI/CD (integración y entrega continua) en las Azure Data Factories. ¡Descubre el método para impulsar los cambios realizados en un entorno de desarrollo hacia los entornos de prueba y producción!
Los Data Engineers desarrollan y construyen pipelines en un entorno de Desarrollo, luego los transfieren hacia el entorno de Pruebas. Una vez realizadas las pruebas, los pipelines pueden ser desplegados en Producción. El objetivo del proceso es detectar bugs, problemas de calidad de datos o datos faltantes.
Esta separación de los entornos permite una separación de tareas y minimiza el impacto de los cambios realizados por otros equipos. También reduce los riesgos y los tiempos de interrupción, y permite restringir la seguridad y los permisos para cada entorno con el fin de evitar errores humanos y proteger los datos.
Es por esta razón que los entornos de desarrollo, prueba y producción separados son esenciales. El CI/CD (integración y entrega continua) permite ir más allá automatizando las tareas administrativas y minimizando los riesgos técnicos.
La automatización y la integración de la prueba y el despliegue garantizan que las mismas acciones ocurran de forma constante cada vez. Los pipelines CI/CD implementados en el proceso de desarrollo permiten probar y desplegar los pipelines de datos sistemáticamente y automáticamente.
A lo largo de este artículo, descubre cómo configurar un repositorio de Azure DevOps para tu Data Factory y usar los pipelines de Azure DevOps para impulsar los cambios de un entorno a otros.
¿Por qué CI/CD para Azure Data Factory?
Según la definición propuesta por Microsoft, la integración continua es la práctica de probar cada cambio realizado al código fuente automáticamente y lo antes posible. La entrega continua sigue la prueba que ocurre durante la integración continua, y envía los cambios hacia un sistema de staging o producción.
En Azure Data Factory, la integración continua y la entrega continua (CI/CD) consisten en transferir los pipelines de Data Factory de un entorno (desarrollo, prueba, producción) a otro.
El objetivo es entonces probar todo lo que desarrollamos en Data Factory, utilizar múltiples entornos separados y simplificar al máximo los despliegues entre estos entornos para obtener una plataforma de Data Engineering confiable y fácil de mantener.
¿Cuáles son los elementos prerrequisitos?
Varios elementos son prerrequisitos para este proceso. Se requiere una suscripción al cloud de Azure, con la capacidad de crear grupos de recursos y recursos con la asignación de rol “Propietario”.
Sin los privilegios ligados a este rol, es imposible crear un principal de servicio, abriendo el acceso a las Data Factories dentro del grupo de recursos.
La creación de pipelines de Azure Data Factory y DevOps también es indispensable. Para este ejemplo, crearemos todos los recursos requeridos para tres entornos: DEV, UAT y PROD.
¿Cómo configurar el entorno de Azure?
Para comenzar, crearemos tres grupos de recursos y tres Data Factories desde el Azure Portal. Los nombres de cada grupo de recursos deben ser únicos en la suscripción, y las Data Factories deben ser únicas en el cloud de Azure.
Para este ejemplo, mantendremos esta estructura para el nombre de los recursos: «iniciales-proyecto-entorno-recurso». Para obtener más información sobre las convenciones de nombres, puedes consultar la documentación oficial de Microsoft.
Siguiendo esta estructura, crea tres Grupos de Recursos con los siguientes nombres: <Iniciales>-warehouse-dev-rg <Iniciales>-warehouse-uat-rg <Iniciales>-warehouse-prod-rg
Una vez conectado a Azure, haz clic en el botón «crear un recurso» en la parte superior de la página de inicio. Usando la barra de búsqueda, busca «Grupo Recurso» y selecciona «Grupo Recurso» en los resultados.
Una vez en la página de información de recurso «Grupo Recurso», haz clic en «Crear». En la página «Crear un grupo recurso», debes completar tres campos:
- Suscripción: elige tu suscripción en la lista
- Grupo Recurso: «<Iniciales>-warehouse-dev-rg»
- Región: selecciona la región más adecuada a tu ubicación actual
Valida, luego haz clic en «Crear» en la parte inferior de la página. Para crear los Grupos Recurso UAT y PROD, repite el proceso simplemente reemplazando el nombre del grupo en la página de creación. Ahora deberías ver los tres Grupos Recurso en el portal de Azure.
Ahora crearemos las Data Factories para cada uno de estos tres Grupos Recurso. Los nombres de estas fábricas seguirán la misma estructura: <Iniciales>-warehouse-dev-df <Iniciales>-warehouse-uat-df <Iniciales>-warehouse-prod-df
Ten en cuenta que los nombres de Data Factory deben ser únicos en todo el cloud de Azure. Por lo tanto, es posible que debas agregar un número aleatorio al final de las iniciales elegidas.
Para crear la Data Factory DEV, haz clic en el botón «Crear un Recurso» en la parte superior de la página de inicio de Azure. En la barra de búsqueda, escribe «Data Factory» y elige «Data Factory» en los resultados de búsqueda.
Una vez en la página de información de recurso «Data Factory», haz clic en «Crear». En la página de creación de Data Factory, debes completar cinco campos.
- Suscripción: elige tu suscripción en la lista
- Grupo Recurso: elige «<Iniciales>-warehouse-dev-rg» en el menú desplegable
- Región: elige la Región más cercana a tu ubicación actual
- Nombre: «<Iniciales>-warehouse-dev-df»
- Versión: V2
Luego haz clic en el botón: «Siguiente: configuración Git» en la parte inferior de la página. Marca «Configurar Git más tarde», valida y luego haz clic en «Crear» en la parte inferior de la página.
Para crear las Data Factories UAT y PROD, repite el proceso reemplazando el nombre y eligiendo el Grupo Recurso correspondiente a cada una.
Después de completar este paso, verás una Data Factory en cada Grupo Recurso. El entorno de la Data Factory debe ser idéntico al del Grupo Recurso.
Configurar el entorno DevOps
La siguiente parte del proceso consiste en crear un repositorio que contenga el código de Azure Data Factory y los pipelines. Visita el sitio web de Azure DevOps y haz clic en «registrarse en Azure DevOps» bajo el botón azul «Comenzar gratis».
Usa tus credenciales de Azure para iniciar sesión. En la página de confirmación de directorio, no hagas clic en «Continuar». El curso de acción depende del tipo de cuenta que utilices.
Si utilizas una cuenta personal para Azure y DevOps, deberás cambiar de directorio al iniciar sesión. Esto te permitirá conectar los Servicios de Azure a DevOps. Una vez conectado, haz clic en «cambiar de directorio» junto a la dirección de correo electrónico y selecciona «directorio predeterminado». Luego haz clic en «Continuar».
Si utilizas una cuenta de empresa, ya está asociada con un directorio. Por lo tanto, puedes hacer clic directamente en «Continuar». En la pantalla «Crear un proyecto para comenzar», el nombre de la organización se crea automáticamente en la parte superior izquierda.
Antes de crear el proyecto, verifica que la organización DevOps esté bien conectada al correcto Azure Active Directory. En la parte superior izquierda, haz clic en «Configuración de la organización». En el panel de la izquierda, selecciona «Azure Active Directory» y asegúrate de que sea la cuenta utilizada para los Servicios de Azure.
Ahora puedes comenzar a crear el proyecto. Nómbralo «Azure Data Factory», deja la visibilidad como privada, y selecciona «Git» para la «gestión de versiones» y «Basic» para el «seguimiento de trabajo». Luego haz clic en «Crear el proyecto».
En este punto, has creado una organización en DevOps y un proyecto que contiene el repositorio de código de Azure Data Factory. Ahora estás en la página de inicio del proyecto, y el siguiente paso es vincular la Data Factory DEV al repositorio DevOps.
Es la única Data Factory que se añadirá al directorio, ya que servirá como pipeline de relajación DevOps para impulsar el código hacia UAT y PROD.
En el portal de Azure, ve al Grupo Recurso DEV y haz clic en la Data Factory DEV. En la página de inicio, haz clic en «configurar un repositorio de código».
En el panel de «configuración del repositorio», completa los diferentes campos:
- Tipo de repositorio: Azure DevOps Git
- Azure Active Directory: elige tu Azure Active Directory en la lista
- Cuenta de Azure DevOps: elige el nombre de la organización creada durante el paso anterior
- Nombre del proyecto: Azure Data Factory
- Nombre del repositorio: elige «usar un repositorio existente» y luego «Azure Data Factory» en el menú desplegable
- Rama de colaboración: master
- Rama de publicación: adf_publish
- Directorio raíz: deja el directorio por defecto «/»
- Importar un recurso existente: no marques esta opción, ya que la Data Factory es nueva y no contiene nada.
Confirma, y verifica que tu Data Factory esté conectada al repositorio. A la izquierda de la pantalla, haz clic en «Autor». Al momento de elegir una rama de trabajo, asegúrate de marcar «Usar una rama existente» y «master». Guarda.
Bajo «Recursos de la Fábrica», haz clic en el signo «+» y elige «nuevo pipeline». Nómbralo «pipeline de espera 1» e inserta una actividad «Esperar» en el lienzo del pipeline. Haz clic en «Guardar todo» en la parte superior de la pantalla y luego en «Publicar» y «OK».
Ve al proyecto Azure Data Factory en DevOps, y selecciona «Repositorios». Allí encontrarás el pipeline que acabas de crear.
El repositorio actualmente contiene dos ramas. La rama master creada al mismo tiempo que el repositorio contiene cada elemento de la Data Factory, incluidos los datasets, los runtimes de integración, los servicios vinculados, los pipelines y los interruptores. Cada elemento está asociado a un archivo .json con sus propiedades.
La rama adf_publish se crea automáticamente al publicar el «Pipeline de espera 1» y contiene dos archivos extremadamente importantes que permiten pasar el código de la Data Factory DEV hacia UAT y PROD.
El archivo ARMTemplateForFactory.json contiene todos los activos dentro de la Data Factory y todas sus propiedades, y el archivo ARMTemplateParametersForFactory.json contiene todos los parámetros utilizados por los activos dentro de la Data Factory DEV.
Ahora que los recursos están creados y conectados, puedes crear el pipeline. Permite que el contenido de la rama adf_publish esté disponible para relajaciones en UAT y PROD.
Crear un pipeline de Azure DevOps
El papel principal del pipeline es capturar los contenidos de la rama adf_publish. Esta rama contendrá la versión más reciente de la Data Factory DEV, que puede ser utilizada posteriormente para el despliegue en las Data Factories UAT y PROD.
El script PowerShell de «pre y post-despliegue» debe ejecutarse en cada relajación. Sin este script, la eliminación de un pipeline en la Data Factory DEV y el despliegue del estado actual de DEV a UAT y PROD no se tendrá en cuenta en UAT y PROD.
Este script se encuentra en la documentación de Azure Data Factory al final de la página. Cópielo en tu editor de código favorito, y guárdalo como un archivo PowerShell.
En Azure DevOps, haz clic en «Repositorios» a la izquierda de la pantalla. En la rama adf_publish, pasa el mouse sobre el directorio de Data Factory DEV y haz clic en «elipsis». Haz clic en «Subir archivos» y sube el archivo desde su ubicación de guardado. Valida. Ahora deberías ver el script con una extensión «.ps1» en la rama adf_publish.
Ahora vamos a crear el Pipeline Azure de CI/CD. A la izquierda de la página DevOps, haz clic en «Pipelines» y selecciona «Crear un Pipeline».
En la siguiente página, elige «Usar el editor clásico», ya que permite seguir visualmente los pasos en curso. Una vez completado todo, podrás inspeccionar el código YAML generado.
Este pipeline debe estar conectado a la rama adf_publish, ya que contiene los archivos .json ARMTemplateForFactory y ARMTemplateParametersForFactory.
En el panel de selección de fuentes, elige Azure Data Factory como proyecto de equipo y repositorio y adf_publish como rama por defecto. Haz clic en «Continuar».
Ahora, transferiremos el contenido del directorio de Data Factory DEV bajo la rama adf_publish en «Repositorios» > «Archivos». A la derecha de «Agent job 1», haz clic en el signo «+». Busca «Publicar los artefactos», y haz clic en «Agregar».
Al hacer clic en la tarea «Publicar Artefacto: soltar» bajo «Agent job 1», verás configuraciones adicionales a la derecha de la pantalla. Cambia solo el «Camino de Publicación» haciendo clic en el botón de elipsis y elige el directorio «<Iniciales>-warehouse-dev-df». Haz clic en «OK».
En la parte superior del pipeline, haz clic en la pestaña «Interruptores» y asegúrate de haber marcado «Habilitar integración continua». Bajo «Especificación de rama», elige «adf_publish».
Esta configuración permite al pipeline ejecutarse y capturar el estado más reciente de la Data Factory DEV cada vez que un usuario publica nuevos elementos. Haz clic en «Guardar y Colas», luego «Guardar y Ejecutar».
Al hacer clic en «Agent job 1», puedes observar más a fondo lo que pasa en segundo plano. Una vez que el trabajo se completa con éxito, haz clic en «Pipelines» a la izquierda de la pantalla. Puedes ver el pipeline creado y su estado, y los cambios más recientes.
Crear un pipeline de relajación de DevOps para el CI/CD
El pipeline de relajación utiliza el producto del pipeline creado en el paso anterior, para transferirlo a las Data Factories UAT y PROD.
En la página DevOps, haz clic en «Pipelines» y luego en «Relajaciones». Haz clic en «Nuevo Pipeline», y renombra la etapa «UAT». Haz clic en «Guardar» en la esquina superior derecha, y valida.
Después de haber creado la etapa UAT, vamos a añadir el artefacto: el pipeline creado previamente. Este pipeline contendrá las configuraciones para transferir entre cada etapa.
Dentro del pipeline de relajación, haz clic en «Agregar un artefacto». En el panel «Agregar un artefacto», haz clic en «Agregar».
La siguiente parte del proceso es agregar tareas a la etapa UAT dentro del «nuevo pipeline de relajación». En la parte superior del pipeline, haz clic en «Variables». Vamos a agregar las variables GrupoRecurso, DataFactory y Ubicación para que puedan ser pasadas automáticamente a las diferentes tareas.
Haz clic en el botón «Agregar» y crea las tres variables del pipeline. Asegúrate de que la variable de ubicación contenga la misma ubicación que los Grupos de Recursos y las Data Factories.
Guarde los cambios y vaya a la vista pipeline. Haga clic en «1 job, 0 tasks» en el cuadro UAT y haga clic en el botón «+» a la derecha de «Agent job». Busca «Azure PowerShell» y añádelo de la lista. Nombra este trabajo «Azure PowerShell script: pre-deployment».
Cuando elija una Azure Subscription, deberá crear un Service Principal dentro del UAT Resource Group. Este Service Principal se añadirá al Grupo de recursos PROD más adelante.
Elija su suscripción Azure de la lista desplegable. Para restringir el acceso al Service Principal, no haga clic directamente en «Autorizar» y seleccione «opciones avanzadas».
En la ventana emergente «Service Principal Authentication», compruebe que la opción «UAT Resource Group» está seleccionada para el «Resource Group». Haga clic en «Aceptar».
Mantenga «Script file path» como «Script type». Haga clic en la elipsis situada a la derecha de «Ruta del script» y seleccione el script PowerShell descargado anteriormente. Haga clic en Aceptar.
Utilizaremos los «Script Arguments» proporcionados en la documentación de Azure Data Factory. Para el pre-despliegue, utiliza los argumentos «-armTemplate» $(System.DefaultWorkingDirectory)/<your-arm-template-location> «-ResourceGroupName <your-resource-group-name> -DataFactoryName <your-data-factory-name> -predeployment $true -deleteDeployment $false». Asegúrese de que la ubicación de la plantilla Arm se encuentra dentro del desplegable de artefactos, elija el entorno UAT para el nombre del grupo de recursos y configure el nombre de Data Factory como el grupo de recursos UAT. Para la versión de Azure PowerShell, elija «Última versión instalada». Guardar.
Añada otra tarea, haga clic en el botón «+», busque «ARM Template» y añada «ARM Template Deployment» de la lista. Cambie el nombre a «ARM Template Deployment: Data Factory». Elige el Service Principal creado anteriormente en la «Azure Resource Manager connection».
Rellene los demás campos:
- Suscripción: elija su suscripción
- Acción: crear o actualizar un Grupo de Recursos
- Grupo de recursos: utilice la variable Grupo de recursos creada anteriormente
- Ubicación: utilice la variable Ubicación
- Ubicación de la plantilla: Artefacto vinculado
- Parámetros de plantilla: elija el archivo ARMTemplateForFactory.json
- Parámetros de sustitución de plantillas: sustituya el parámetro «factory name» por la variable Data Factory
- Modo de despliegue: Incremental
A continuación, añada una tarea Azure PowerShell denominada «Azure PowerShell script: Post-Deployment». En relación con los argumentos previos al despliegue, sustituya únicamente «-predeployment $true» por «-predeployment $false» y «-deleteDeployment $false» por «-deleteDeployment $true».
Ahora necesitas dar acceso al Service Manager al grupo de recursos PROD, antes de empezar a crear la etapa PROD del pipeline de relajación. Ve al portal Azure, navega hasta el Grupo de Recursos UAT y selecciona «Control de Acceso (IAM)». Bajo el rol «Contributor», copia el nombre de la organización DevOps y el nombre del proyecto.
Vaya al grupo de recursos PROD y navegue hasta «Control de acceso (IAM)». En la pestaña de vista de acceso, haz clic en el botón «+ Añadir» y selecciona «Añadir una asignación de rol». Elija el rol de Colaborador en el menú desplegable y deje «Asignar acceso a» como «Usuario, Grupo o Servicio Principal». Pegue el nombre copiado anteriormente en la barra de búsqueda y seleccione el Director de departamento. Guardar.
Ahora podemos completar la etapa PROD del proceso de relajación. Vuelva a la «Nueva tubería de relajación» y mueva el ratón sobre la etapa UAT. Haga clic en «Clonar».
Cambie el nombre de «Copia de UAT» a «PROD». Las variables ResourceGroup y DataFactory están duplicadas, pero bajo el ámbito Prod. Cambia sus valores sustituyendo «UAT» por «PROD». Guarde los cambios.
Mientras que el Azure Data Factory-CI pipeline está configurado para ejecutarse en cada cambio en adf_publish, ahora necesitamos ajustar el Relax Pipeline para que se produzca un nuevo relax en cada cambio en adf_publish. El cambio se aplicará automáticamente a la Data Factory UAT. Para la fábrica de datos PROD, se requiere la aprobación previa al despliegue antes de que se apliquen los cambios DEV y UAT.
En la «Nueva canalización de relajación», haga clic en el botón «Interruptor de despliegue continuo» para activarlo. Para ajustar las condiciones de la etapa UAT para que se ejecuten automáticamente, haga clic en el botón «condiciones previas al despliegue» de la etapa UAT. Asegúrese de seleccionar la opción «después de la relajación».
Haga clic en las «condiciones previas al despliegue» de la planta PROD y ajuste el interruptor a «después de la planta» con la planta ajustada a UAT. Activa también las «aprobaciones previas al despliegue» e introduce tu dirección de correo electrónico. Guardar.
Para probar la tubería de relajación, inicie manualmente la tubería Azure Data Factory-CI para activarla. Vaya a Pipelines y seleccione Azure Data Factory-CI. Haga clic en «Ejecutar canalización» en la parte superior y vuelva a hacer clic en «Ejecutar». Vaya a «Relaxes», y ahora debería ver el primer relax. También verás que la etapa UAT del Relax Pipeline se está ejecutando.
Una vez que la etapa UAT se ha completado con éxito, la etapa PROD está lista para su aprobación. Vaya a su Fábrica de Datos UAT y compruebe que «Waiting Pipeline 1» está presente.
Vaya a su «New Relaxation Pipeline» y haga clic en la etapa PROD. Aprobar. Podrá ver el progreso de la etapa PROD, y la presencia del «Waiting Pipeline 1».
Por último, puede realizar cambios en la Data Factory DEV para observar todo el proceso de principio a fin. Vaya a la Data Factory DEV, cree un pipeline llamado «Waiting Pipeline 2» e inserte una actividad «Waiting Pipeline 2». Elimine el «Waiting Pipeline 1».
Haz clic en «Guardar todo» y «Publicar» todos los cambios. En «Pipelines» en Azure DevOps, puedes ver que el pipeline Azure Data Factory-CI ya ha sido activado ya que el adf_publish acaba de cambiar. Del mismo modo, en «Relaxes», se ha creado «Relaxe-2» y se está desplegando la etapa UAT.
La fábrica de datos PROD se encuentra actualmente en «Relaxe-1». Apruebe la planta PROD. Puede ver que los cambios realizados en la Data Factory DEV también se aplican a las Data Factories UAT y PROD.
Esto confirma que todos los recursos están conectados correctamente y que los pipelines funcionan correctamente. Cualquier despliegue futuro en la Factoría de Datos DEV puede ser replicado en UAT y PROD.
De este modo, podrá evitar pequeñas diferencias entre entornos y evitará perder tiempo resolviendo problemas. No dude en ver el código YAML generado en el curso de este tutorial, para comprender su estructura y contenido…
¿Cómo se aprende a dominar Azure DevOps?
Azure DevOps es ampliamente utilizado por los equipos DevOps. Para aprender a dominar este servicio en la nube y sus distintos elementos, como las Data Factories, puedes elegir DataScientest.
Nuestros cursos a distancia te permiten dominar todas las mejores herramientas cloud y DevOps, así como las mejores prácticas y métodos de trabajo. Al final del curso, tendrás todas las habilidades de un ingeniero DevOps.
Del mismo modo, nuestro curso de Data Engineer cubre todos los aspectos de la ingeniería de datos. En particular, aprenderás sobre programación Python, CI/CD, bases de datos, Big Data y técnicas de automatización y despliegue.
Todos nuestros programas pueden realizarse en modalidad de Formación en tiempo completo o BootCamp, y te permiten aprender haciendo gracias a un proyecto hilo rojo. También podrás obtener las mejores certificaciones cloud y DevOps. ¡No esperes más y descubre DataScientest!
Ahora ya lo sabes todo sobre Azure DevOps Pipelines y Data Factory. Para más información sobre el mismo tema, consulta nuestro dossier completo sobre DevOps y nuestro dossier sobre la nube Microsoft Azure.