Llegamos a ustedes gracias a:



Columnas de opinión

Desarrollo de conductos de integración de datos: Mejores prácticas

[21/11/2018] Las plataformas de conductos de integración de datos mueven los datos de un sistema de origen a un sistema de destino posterior. Debido a que las líneas de datos pueden entregar datos críticos para la misión y para decisiones comerciales importantes, se requiere asegurar su precisión y rendimiento, ya sea que los implemente mediante scripts, integración de datos y plataformas ETL (extracción de transformación y carga), tecnologías de preparación de datos o software real.

Arquitecturas en tiempo real de transmisión de datos

Cuando implemente líneas de integración de datos, debe considerar al principio de la fase de diseño varias prácticas recomendadas para garantizar que el procesamiento de los datos sea sólido y fácil de mantener. Ya sea que lo formalice, hay un nivel de servicio heredado en estas líneas de datos, porque pueden afectar si los informes se generan a tiempo o si las aplicaciones tienen los datos más recientes para los usuarios. También existe una necesidad continua de que TI realice mejoras para admitir nuevos requisitos de datos, manejar volúmenes de datos cada vez mayores y abordar problemas de calidad de datos.

Si ha trabajado en TI el tiempo suficiente, probablemente haya visto lo bueno, lo malo y lo feo cuando se trata de conductos de datos. Descubrir por qué un trabajo de canalización de datos falló cuando se escribió como un procedimiento almacenado de una sola base de datos de varios cientos de líneas sin documentación, registro o manejo de errores, no es una tarea fácil. Entonces, cuando diseñe nuevos canales de datos, considere algunas de estas mejores prácticas para evitar resultados tan feos.

Aplique principios de diseño modular a los conductos de datos

Como desarrollador de la línea de datos, debe considerar la arquitectura de sus canales para que sean ágiles a las necesidades futuras y fáciles de evaluar cuando hay problemas. Puede hacer esto modularizando la tubería en bloques de construcción, con cada bloque manejando un paso de procesamiento y luego pasando los datos procesados a bloques adicionales. Las plataformas ETL de proveedores como Informatica, Talend e IBM proporcionan paradigmas de programación visual que facilitan el desarrollo de bloques de construcción en módulos reutilizables que luego se pueden aplicar a múltiples canales de datos.

Moustafa Elshaabiny, un desarrollador de stack completo en CharityNavigator.org, ha estado utilizando IBM DataStage para automatizar los canales de datos. Él dice que "construir nuestro flujo de datos de forma modular y parametrizar las variables clave del entorno nos ha ayudado tanto a identificar como a solucionar problemas que surgen de manera rápida y eficiente". La modularidad hace que reducir un problema sea mucho más fácil, y la parametrización hace que los cambios de prueba y la ejecución de trabajos ETL sean mucho más rápidos".

Otras mejores prácticas generales de desarrollo de software también son aplicables a los canales de datos:

* Las variables de entorno y otros parámetros deben configurarse en archivos de configuración y otras herramientas que permitan configurar fácilmente los trabajos para las necesidades de tiempo de ejecución.

* El código subyacente debe ser versionado, idealmente en un repositorio de control de versión estándar.

* Los entornos separados para el desarrollo, las pruebas, la producción y la recuperación ante desastres se deben encargar con un canal de CI/CD para automatizar las implementaciones de cambios de código.

Valide la exactitud de los datos a lo largo del conducto

No es bueno procesar datos en bloques y módulos para garantizar un flujo sólido. Las fuentes de datos pueden cambiar y los datos subyacentes pueden tener problemas de calidad que surgen en el tiempo de ejecución. Para asegurarse de que la canalización sea sólida, debe implementar una combinación de registro, manejo de excepciones y validación de datos en cada bloque.

Al implementar la validación de datos en una canalización de datos, debe decidir cómo manejar los problemas de datos a nivel de fila. La forma en que maneja una fila de datos errónea depende de la naturaleza de los datos y de cómo se usa en sentido descendente. Si los sistemas descendentes y sus usuarios esperan un conjunto de datos limpio y completamente cargado, entonces puede ser necesario detener la línea hasta que se resuelvan los problemas con una o más filas de datos. Pero si el uso descendente es más tolerante a los esfuerzos de limpieza de datos incrementales, el flujo de datos puede manejar los problemas de nivel de fila como excepciones y continuar procesando las otras filas que tienen datos limpios.

Muchas tecnologías de integración de datos tienen capacidades adicionales de administración de datos. Esto le permite encaminar las excepciones de datos a alguien asignado como administrador de datos que sabe cómo corregir el problema. Estas herramientas luego permiten que las filas fijas de datos vuelvan a ingresar al flujo de datos y continúen procesándose.

Si está trabajando en una arquitectura de transmisión de datos, tiene otras opciones para abordar la calidad de los datos mientras procesa datos en tiempo real. Sanjeet Banerji, vicepresidente ejecutivo y jefe de inteligencia artificial y ciencias cognitivas en DataMatics, sugiere que "las funciones integradas en plataformas como Spark Streaming proporcionan capacidades de aprendizaje automático para crear un verdadero conjunto de modelos para la limpieza de datos".

Establezca un proceso de prueba para validar cambios

En algún momento, es posible que se le solicite realizar una mejora en el flujo de datos, mejorar su solidez o refactorizarlo para mejorar su rendimiento. Implementará los cambios necesarios y luego deberá considerar cómo validar la implementación antes de llevarla a producción.

¿Qué puede salir mal? Mucho: Podría cambiar inadvertidamente los filtros y procesar las filas de datos incorrectas, o su lógica para procesar una o más columnas de datos podría tener un defecto.

Piense en cómo probar sus cambios. Una forma de hacer esto es tener un conjunto de datos estable para ejecutarlos a través del conducto. Teniendo un conjunto de pruebas definido, puede utilizarlas en un entorno de prueba y comparar su ejecución a través de la versión de producción de su canal de datos y una segunda vez con su nueva versión. Luego puede comparar los datos de las dos ejecuciones y validar si se esperan diferencias en las filas y columnas de datos.

Construya conductos de datos para diferentes requisitos operacionales

Los canales de datos pueden ser fáciles de concebir y desarrollar, pero a menudo requieren una planificación para soportar diferentes requisitos de tiempo de ejecución.

Primero, considere que el flujo de datos probablemente requiera flexibilidad para admitir las ejecuciones completas de conjuntos de datos, las ejecuciones parciales de conjuntos de datos y las ejecuciones incrementales. Es probable que se necesite una ejecución completa la primera vez que se use la canalización de datos, y también puede ser necesaria si hay cambios significativos en la fuente de datos o en los requisitos posteriores.

A veces, es útil hacer una ejecución de datos parciales. Quizás el flujo de datos está procesando datos de transacciones y se le solicita que vuelva a ejecutar el valor de un año específico de datos a través del proceso. Un flujo de datos sólido debería poder reprocesar un conjunto de datos parciales.

El estado estable de muchas líneas de datos es ejecutarse incrementalmente en cualquier dato nuevo. Esto implica que la fuente de datos o el flujo de datos en sí pueden identificarse y ejecutarse en estos nuevos datos.

Debido a que las líneas de datos pueden tener cargas de datos variables para procesar, y probablemente se ejecuten varios trabajos en paralelo, es importante considerar la elasticidad de la infraestructura subyacente. La ejecución de las tuberías de datos en la infraestructura de la nube, proporciona cierta flexibilidad para aumentar los recursos para admitir múltiples trabajos activos. Si su tecnología de canalización de datos admite la paralelización de trabajos, use líneas de datos de ingeniería para aprovechar esta capacidad para ejecuciones completas y parciales que pueden tener conjuntos de datos más grandes de procesar.

Isaac Sacolick es el autor de Driving Digital: La Guía del líder para la transformación de negocios a través de la tecnología, que cubre muchas prácticas como ágile, devops y ciencia de datos que son fundamentales para los programas exitosos de transformación digital. Sacolick es uno de los principales CIOs sociales reconocidos, un bloguero de larga data en Social, Agile y Transformation y CIO.com, y presidente de StarCIO.