En este artículo se describe cómo una oficina de planeamiento de una ciudad ficticia podría usar esta solución. La solución proporciona una canalización de datos de un extremo a otro que sigue el patrón de arquitectura de MDW, junto con los procesos de DevOps y DataOps correspondientes, para evaluar el uso del estacionamiento y tomar decisiones empresariales más informadas.
Architecture
El siguiente diagrama muestra la arquitectura general de la solución.
Descargue un archivo Visio de esta arquitectura.
Flujo de datos
Azure Data Factory orquesta los datos y Azure Data Lake Storage Gen2 los almacena:
La API del servicio web de estacionamiento de la ciudad de Contoso está disponible para transferir datos desde las zonas de estacionamiento.
Hay un trabajo de copia de factoría de datos que transfiere los datos al esquema del terreno.
A continuación, Azure Databricks limpia y normaliza los datos. Toma los datos sin procesar y las condiciones para que los científicos de datos puedan usarlos.
Si la validación revela algún dato incorrecto, se vuelca en el esquema con formato incorrecto.
Importante
Los usuarios han preguntado por qué no se validan los datos antes de almacenarlos en Data Lake Storage. La razón es que la validación podría introducir un error que podría dañar el conjunto de datos. Si introduce un error en este paso, puede corregirlo y volver a producir la canalización. Si ha volcado los datos incorrectos antes de agregarlos a Data Lake Store, los datos dañados serán inservibles porque no se podrá volver a producir la canalización.
Hay un segundo paso de transformación de Azure Databricks que convierte los datos en un formato que se puede almacenar en el almacenamiento de datos.
Por último, la canalización proporciona los datos de dos maneras diferentes:
Databricks pone los datos a disposición del científico de datos para que pueda entrenar modelos.
Polybase mueve los datos del lago de datos a Azure Synapse Analytics, y Power BI accede a los datos y los presenta al usuario empresarial.
Componentes
La solución usa estos componentes:
Detalles del escenario
Un almacenamiento de datos moderno (MDW) le permite reunir fácilmente todos los datos a cualquier escala. No importa si se trata de datos estructurados, no estructurados o semiestructurados. Puede obtener información sobre un MDW a través de paneles analíticos, informes operativos o análisis avanzados para todos los usuarios.
La configuración de un entorno de MDW para entornos de desarrollo (dev) y producción (prod) es compleja. La automatización del proceso es clave. Ayuda a aumentar la productividad a la vez que minimiza el riesgo de errores.
En este artículo se describe cómo una oficina de planeamiento de una ciudad ficticia podría usar esta solución. La solución proporciona una canalización de datos de un extremo a otro que sigue el patrón de arquitectura de MDW, junto con los procesos de DevOps y DataOps correspondientes, para evaluar el uso del estacionamiento y tomar decisiones empresariales más informadas.
Requisitos de la solución
Capacidad de recopilar datos de distintos orígenes o sistemas.
Infraestructura como código: implemente nuevos entornos de desarrollo y almacenamiento provisional (stg) de forma automatizada.
Implementación de cambios de aplicaciones en diferentes entornos de forma automatizada:
Implemente canalizaciones de integración continua y entrega continua (CI/CD).
Use puertas de implementación para aprobaciones manuales.
Canalización como código: asegúrese de que las definiciones de canalización de CI/CD están en el control de código fuente.
Realice pruebas de integración en los cambios mediante un conjunto de datos de ejemplo.
Ejecute canalizaciones de forma programada.
Soporte para el desarrollo ágil futuro, incluida la adición de cargas de trabajo de ciencia de datos.
Compatibilidad con la seguridad de nivel de fila y de nivel de objeto:
La característica de seguridad está disponible en SQL Database.
También puede encontrarla en Azure Synapse Analytics, Azure Analysis Services y Power BI.
Compatibilidad con 10 usuarios del panel simultáneos y 20 usuarios avanzados simultáneos.
La canalización de datos debe llevar a cabo la validación de datos y filtrar los registros incorrectos en un almacén especificado.
Soporte para la supervisión.
Configuración centralizada en un almacenamiento seguro, como Azure Key Vault.
Posibles casos de uso
En este artículo se usa la ciudad ficticia de Contoso para describir el escenario del caso de uso. En la narración, Contoso posee y administra los sensores de estacionamiento de la ciudad. También posee las API que se conectan a los sensores y obtienen datos de estos. Necesita una plataforma que recopile datos de muchos orígenes diferentes. Los datos deben validarse, limpiarse y transformarse a un esquema conocido. Los planificadores de la ciudad de Contoso pueden explorar y evaluar datos de informes sobre el uso del estacionamiento con herramientas de visualización de datos, como Power BI, para determinar si necesitan más recursos de estacionamiento o relacionados.
Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad de una carga de trabajo. Para más información, consulte Marco de buena arquitectura de Microsoft Azure.
Las consideraciones de esta sección resumen los aprendizajes clave y los procedimientos recomendados mostrados por esta solución:
Nota:
Cada consideración de esta sección se vincula a la sección Key Learnings relacionada del documento para el ejemplo de solución de sensor de estacionamiento en GitHub.
Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y sistemas valiosos. Para obtener más información, consulte Lista de comprobación de revisión de diseño para seguridad.
Excelencia operativa
La excelencia operativa abarca los procesos de las operaciones que implementan una aplicación y la mantienen en ejecución en producción. Para obtener más información, consulte la Lista de comprobación de revisión de diseño para la excelencia operativa.
Asegúrese de que el código de transformación de datos se pueda probar.
Supervise la infraestructura, las canalizaciones y los datos.
Implementación de este escenario
La lista siguiente contiene los pasos de alto nivel necesarios para configurar la solución de sensores de estacionamiento con las canalizaciones de compilación y versión correspondientes. Puede encontrar los pasos de configuración y requisitos previos detallados en este repositorio de ejemplos de Azure.
Instalación e implementación
Programa de instalación inicial: instale los requisitos previos, importe el repositorio de GitHub de ejemplos de Azure en su propio repositorio y establezca las variables de entorno necesarias.
Implementación de recursos de Azure: la solución incluye un script de implementación automatizada. Implementa todos los recursos de Azure necesarios y las entidades de servicio de Microsoft Entra por entorno. El script también implementa Azure Pipelines, grupos de variables y conexiones de servicio.
Configuración de la integración de Git en la instancia de desarrollo de Data Factory: configure la integración de Git para que funcione con el repositorio de GitHub importado.
Desarrollo de una compilación y una versión iniciales: cree un cambio de ejemplo en Data Factory, como la habilitación de un desencadenador de programación y, a continuación, observe que el cambio se implementa automáticamente en los entornos.
Recursos implementados
Si la implementación se realiza correctamente, debe haber tres grupos de recursos en Azure, que representan tres entornos: dev, stg y prod. También debe haber canalizaciones de compilación y versión de un extremo a otro en Azure DevOps que puedan implementar automáticamente los cambios en estos tres entornos.
Para obtener una lista detallada de todos los recursos, consulte la sección sobre recursos implementados del archivo LÉAME DataOps - Parking Sensor Demo (DataOps: demostración de la solución de sensores de estacionamiento).
Integración continua y entrega continua (CI/CD)
En el diagrama siguiente se muestra el proceso de CI/CD y la secuencia de las canalizaciones de compilación y versión.
Descargue un archivo Visio de esta arquitectura.
Los desarrolladores realizan su trabajo en sus propios entornos de espacio aislado del grupo de recursos de desarrollo y confirman los cambios en sus propias ramas de Git de corta duración. Por ejemplo,
<developer_name>/<branch_name>
.Cuando los cambios han finalizado, los desarrolladores generan una solicitud de incorporación de cambios (PR) en la rama principal para su revisión. Al hacerlo, se inicia automáticamente la canalización de validación de pr, que ejecuta las pruebas unitarias, linting y compilaciones del paquete de aplicación de capa de datos (DACPAC).
Al completarse la comprobación de PR, la confirmación en la rama principal desencadenará una canalización de compilación que publicará los artefactos de compilación necesarios.
La finalización de una canalización de compilación correcta desencadenará la primera fase de la canalización de versión. Al hacerlo, se implementan los artefactos de compilación de publicación en el entorno de desarrollo, excepto en el caso de Data Factory.
Los desarrolladores harán la publicación manualmente en el Data Factory de desarrollo desde la rama de colaboración (principal). La publicación manual actualiza las plantillas de Azure Resource Manager en la rama
adf_publish
.La finalización correcta de la primera fase desencadena una puerta de aprobación manual.
Al realizar la aprobación, la canalización de versión continúa con la segunda fase e implementa los cambios en el entorno de stg.
Ejecute pruebas de integración para probar los cambios en el entorno de stg.
Tras finalizar correctamente la segunda fase, la canalización desencadena una segunda puerta de aprobación manual.
Al realizar la aprobación, la canalización de versión continúa con la tercera fase e implementa los cambios en el entorno de producción.
Para obtener más información, lea la sección sobre la canalización de compilación y versión del archivo LÉAME.
Prueba
La solución incluye soporte para pruebas unitarias y pruebas de integración. Usa pytest-Data Factory y el marco de pruebas de Nutter. Para más información, consulte la sección sobre pruebas del archivo LÉAME.
Observabilidad y supervisión
La solución admite la observabilidad y la supervisión de Databricks y Data Factory. Para obtener más información, consulte la sección sobre observabilidad y supervisión del archivo LÉAME.
Pasos siguientes
Si desea implementar la solución, siga los pasos descritos en la sección sobre cómo usar el ejemplo del archivo LÉAME DataOps - Parking Sensor Demo (DataOps: demostración de la solución de sensores de estacionamiento).
Ejemplos de código de la solución en GitHub
Observabilidad y supervisión
Azure Databricks
- Supervisión de Azure Databricks con Azure Monitor
- Supervisión de trabajos de Azure Databricks con Application Insights
Data Factory
- Supervisión de Azure Data Factory con Azure Monitor
- Creación de alertas para supervisar de forma proactiva las canalizaciones de Data Factory
Azure Synapse Analytics
- Supervisión del uso de recursos y la actividad de consultas en Azure Synapse Analytics
- Supervisión de la carga de trabajo de grupos de SQL de Azure Synapse Analytics mediante DMV
Azure Storage
Resistencia y recuperación ante desastres
Azure Databricks
Data Factory
Azure Synapse Analytics
- Copias de seguridad geográficas y recuperación ante desastres
- Restauración geográfica del grupo de SQL
Azure Storage
- Recuperación ante desastres y conmutación por error de la cuenta de almacenamiento
- Procedimiento recomendado para usar Azure Data Lake Storage Gen2: Alta disponibilidad y recuperación ante desastres
- Redundancia de Azure Storage
Tutorial detallado
Para obtener un tutorial detallado de la solución y los conceptos clave, vea la siguiente grabación de vídeo: DataDevOps for the Modern Data Warehouse on Microsoft Azure (DataDevOps para el almacenamiento de datos moderno en Microsoft Azure)