Probador de datos grandes y pequeños: tendencias, teoría, mi historia

Hola a todos, mi nombre es Alexander y soy un ingeniero de calidad de datos que verifica la calidad de los datos. Este artículo discutirá cómo llegué a esto y por qué en 2020 esta dirección de prueba resultó estar en la cima de una ola.



Tendencia mundial


El mundo de hoy está experimentando otra revolución tecnológica, uno de cuyos aspectos es el uso de varios datos por parte de varias compañías para promover su propio volante de ventas, ganancias y relaciones públicas. Parece que es la presencia de datos buenos (de calidad), así como de cerebros hábiles que pueden ganar dinero con ellos (procesar correctamente, visualizar, construir modelos de aprendizaje automático, etc.), se han convertido hoy en la clave del éxito para muchos. Si hace 15-20 años, las grandes empresas se dedicaban a un trabajo denso con la acumulación de datos y su monetización, hoy es la suerte de casi todas las personas sanas.

En este sentido, hace varios años, todos los portales de búsqueda de empleo en todo el mundo comenzaron a desbordarse con vacantes de Data Scientists, ya que todos estaban seguros de que al obtener un especialista de este tipo en el personal, se puede construir una supermodelo de aprendizaje automático, predecir el futuro y hacer un "quantum Salto para la empresa. Con el tiempo, las personas se dieron cuenta de que este enfoque casi nunca funciona, ya que lejos de todos los datos que caen en manos de tales especialistas es adecuado para modelos de capacitación.

Y las solicitudes de los científicos de datos comenzaron: "Vamos a comprar más datos de estos y de esos ...", "No tenemos suficientes datos ...", "Necesitamos más datos y preferiblemente de alta calidad ...". Con base en estas solicitudes, numerosas interacciones entre compañías que poseen un conjunto de datos en particular comenzaron a alinearse. Naturalmente, esto requirió la organización técnica de este proceso: conectarse a la fuente de datos, descargarlos, verificar que estén completamente cargados, etc. El número de tales procesos comenzó a crecer, y hoy hemos recibido una gran necesidad de otro tipo de especialistas: datos Ingenieros de calidad: aquellos que supervisarían el flujo de datos en el sistema (canalizaciones de datos), la calidad de los datos en la entrada y la salida, sacarían conclusiones sobre su adecuación, integridad y otras características.

La tendencia de los ingenieros de calidad de datos nos llegó desde los Estados Unidos, donde en medio de una era de capitalismo furioso, nadie está listo para perder la batalla por los datos. A continuación, proporcioné capturas de pantalla de los dos sitios de búsqueda de empleo más populares en los Estados Unidos: www.monster.com y www.dice.com , que muestran datos a partir del 17 de marzo de 2020 por el número de vacantes publicadas recibidas, por palabras clave: Calidad de datos y Científico de datos.

www.monster.com
Científicos de datos - 21,416 empleosCalidad de datos - 41,104 empleos

www.dice.com
Científicos de datos - 404 empleosCalidad de datos - empleos 2020

Obviamente, estas profesiones de ninguna manera compiten entre sí. Con capturas de pantalla, solo quería ilustrar la situación actual en el mercado laboral en términos de solicitudes de ingenieros de calidad de datos, que ahora requieren mucho más que los científicos de datos.

En junio de 2019, EPAM, respondiendo a las necesidades del mercado moderno de TI, destacó la calidad de datos como una práctica separada. Durante su trabajo diario, los ingenieros de Calidad de datos administran los datos, verifican su comportamiento en nuevas condiciones y sistemas, y controlan la relevancia de los datos, su adecuación y relevancia. Con todo esto, en el sentido práctico de la calidad de los datos, los ingenieros realmente dedican un poco de tiempo a las pruebas funcionales clásicas, PERO depende mucho del proyecto (daré un ejemplo a continuación).

Las tareas del ingeniero de calidad de datos no se limitan a las verificaciones manuales / automáticas de rutina para "nulos, recuentos y sumas" en las tablas de la base de datos, sino que requieren una comprensión profunda de las necesidades comerciales del cliente y, en consecuencia, la capacidad de transformar los datos existentes en información comercial útil.

Teoría de la calidad de los datos.




Para imaginar más completamente el papel de tal ingeniero, descubramos qué es la calidad de los datos en teoría.

La calidad de los datos es una de las etapas de la gestión de datos (el mundo entero que dejaremos para que estudies de forma independiente) y es responsable de analizar los datos de acuerdo con los siguientes criterios:


Creo que no vale la pena descifrar cada uno de los puntos (en teoría se les llama "dimensiones de datos"), están bastante bien descritos en la imagen. Pero el proceso de prueba en sí no implica una copia estricta de estos signos en los casos de prueba y su verificación. En la calidad de los datos, como en cualquier otro tipo de prueba, en primer lugar es necesario proceder de los requisitos para la calidad de los datos acordados con los participantes del proyecto que toman las decisiones comerciales.



Dependiendo del proyecto de calidad de datos, un ingeniero puede realizar varias funciones: desde un probador automatizado ordinario con una evaluación superficial de la calidad de los datos, hasta la persona que realiza su perfil profundo de acuerdo con los criterios anteriores.



Una descripción muy detallada de la gestión de datos, la calidad de los datos y los procesos relacionados se describe bien en un libro titulado "DAMA-DMBOK: Cuerpo de conocimiento de gestión de datos: 2ª edición" . Recomiendo este libro como una introducción a este tema (encontrará un enlace al final del artículo).

Mi historia


En la industria de TI, pasé de ser un probador de productos junior a un ingeniero líder de calidad de datos en EPAM. Después de aproximadamente dos años como probador, tenía la firme creencia de que hice absolutamente todo tipo de pruebas: regresión, funcional, estresante, estabilidad, seguridad, interfaz de usuario, etc., y probé una gran cantidad de herramientas de prueba, después de haber trabajado al mismo tiempo en tres lenguajes de programación: Java, Scala, Python.



Mirando hacia atrás, entiendo por qué el conjunto de mis habilidades profesionales resultó ser tan diverso: participé en proyectos vinculados al trabajo con datos, grandes y pequeños. Esto es lo que me llevó al mundo de una gran cantidad de herramientas y oportunidades de crecimiento.



Para apreciar la variedad de herramientas y oportunidades para obtener nuevos conocimientos y habilidades, solo mire la imagen a continuación, que muestra las más populares en el mundo de "Datos e IA".


Este tipo de ilustración es compilada anualmente por uno de los conocidos capitalistas de riesgo Matt Turck, nativo del desarrollo de software. Aquí hay un enlace a su blog y firma de capital de riesgo donde trabaja como socio.

Especialmente rápido crecí profesionalmente cuando era el único probador en el proyecto, o al menos al comienzo del proyecto. Es en ese momento que tiene que ser responsable de todo el proceso de prueba, y no tiene forma de retroceder, solo avanzar. Al principio era un espantapájaros, pero ahora todas las ventajas de tal prueba son obvias para mí:

  • Empiezas a comunicarte con todo el equipo más que nunca, ya que no existe un proxy para la comunicación: ni un gerente de pruebas ni otros evaluadores.
  • , , .
  • « , », , , .
  • — , , .

A medida que el proyecto creció el 100% del tiempo, me convertí en un mentor para los probadores que acudieron a él nuevamente, los capacitó y transmitieron el conocimiento que había aprendido. Al mismo tiempo, dependiendo del proyecto, no siempre obtuve el más alto nivel de expertos en pruebas automáticas de la gerencia y era necesario entrenarlos en automatización (para aquellos que lo deseen) o crear herramientas para usarlos en las actividades cotidianas (herramientas de generación de datos y cargarlos en el sistema , una herramienta para realizar pruebas de carga / pruebas de estabilidad "rápidas", etc.).

Ejemplo de proyecto específico


Desafortunadamente, debido a las obligaciones de no divulgación, no puedo hablar en detalle sobre los proyectos en los que trabajé, sin embargo, daré ejemplos de tareas típicas de Ingeniero de Calidad de Datos en uno de los proyectos.

La esencia del proyecto es implementar una plataforma para preparar datos para entrenar modelos de aprendizaje automático basados ​​en ellos. El cliente era una gran compañía farmacéutica de los Estados Unidos. Técnicamente, era un clúster de Kubernetes , llegando a instancias AWS EC2 , con varios microservicios y el proyecto EPAM- Legion subyacente de código abierto , adaptado a las necesidades de un cliente en particular (ahora el proyecto se reencarna como odahu ). Los procesos ETL se organizaron usando Apache Airflow y movieron datos deSistemas de cliente de SalesForce en AWS S3 Buckets. A continuación, se implementó una imagen acoplable de un modelo de aprendizaje automático en la plataforma, que se capacitó en los datos más recientes y produjo predicciones basadas en la interfaz REST API que eran de interés para el negocio y para resolver problemas específicos.

Visualmente, todo se parecía a esto:


Hubo muchas pruebas funcionales en este proyecto, y dada la velocidad de desarrollo de características y la necesidad de mantener el ritmo del ciclo de lanzamiento (sprints de dos semanas), fue necesario pensar de inmediato en la automatización de las pruebas de los nodos del sistema más críticos. La mayor parte de la plataforma en sí con Kubernetes estaba cubierta por pruebas automáticas implementadas en Robot Framework.+ Python, pero también necesitaban mantenerse y expandirse. Además, para la comodidad del cliente, se creó una GUI para administrar los modelos de aprendizaje automático integrados en un clúster, así como la capacidad de especificar dónde y dónde transferir datos para la capacitación del modelo. Esta amplia incorporación implicó la expansión de las comprobaciones funcionales automatizadas, que se realizaron principalmente a través de llamadas REST API y un pequeño número de pruebas de interfaz de usuario de extremo a extremo. Aproximadamente en el ecuador de todo este movimiento, se nos unió un probador manual, que hizo un excelente trabajo al aceptar las pruebas de las versiones del producto y comunicarse con el cliente sobre la aceptación del próximo lanzamiento. Además, debido a la aparición de un nuevo especialista, pudimos documentar nuestro trabajo y agregar algunas verificaciones manuales muy importantes,que fueron difíciles de automatizar de inmediato.

Y finalmente, después de lograr la estabilidad de la plataforma y un complemento de GUI sobre ella, comenzamos a construir tuberías ETL usando Apache Airflow DAG. El control automatizado de la calidad de los datos se realizó escribiendo DAG de flujo de aire especiales que verificaron los datos de acuerdo con los resultados del proceso ETL. Como parte de este proyecto, tuvimos suerte y el cliente nos dio acceso a conjuntos de datos anónimos, en los que probamos. Verificamos los datos línea por línea para verificar el cumplimiento de los tipos, la presencia de datos rotos, el número total de registros antes y después, comparando las transformaciones realizadas por el proceso ETL para la agregación, cambiando los nombres de columnas y otras cosas. Además, estas comprobaciones se escalaron a diferentes fuentes de datos, por ejemplo, además de SalesForce, también en MySQL.

Las comprobaciones de la calidad final de los datos ya se llevaron a cabo en el nivel S3, donde se almacenaron y estaban listas para usar para los modelos de aprendizaje automático. Para obtener datos del archivo CSV final que se encuentra en el Bucket S3 y validarlo, el código se escribió usando el cliente boto3 .

Además, por parte del cliente, había un requisito para almacenar parte de los datos en un S3 Bucket, parte en otro. Para esto, también se requería escribir verificaciones adicionales para verificar la confiabilidad de tal tipo.

Experiencia general en otros proyectos.


Un ejemplo de la lista más generalizada de actividades de calidad de datos de un ingeniero:

  • Prepare datos de prueba (válidos / inválidos / grandes / pequeños) a través de una herramienta automatizada.
  • Descargue el conjunto de datos preparado a la fuente original y verifique su disponibilidad para su uso.
  • Inicie procesos ETL para procesar un conjunto de datos desde el almacenamiento de origen al final o intermedio utilizando un conjunto específico de configuraciones (si es posible, establezca parámetros configurables para la tarea ETL).
  • Verifique los datos procesados ​​por el proceso ETL para su calidad y cumplimiento de los requisitos comerciales.

Al mismo tiempo, el énfasis principal de las comprobaciones no solo debe estar en el hecho de que el flujo de datos en el sistema ha funcionado y alcanzado el final (que es parte de las pruebas funcionales), sino principalmente en la verificación y validación de los datos para el cumplimiento de los requisitos esperados, identificando anomalías y otras cosas.

Herramientas


Una de las técnicas para tal control de datos puede ser la organización de verificaciones de cadena en cada etapa del procesamiento de datos, la llamada "cadena de datos" en la literatura: control de datos desde la fuente hasta el punto de uso final. Dichas comprobaciones se implementan con mayor frecuencia escribiendo consultas SQL de validación. Está claro que tales solicitudes deben ser lo más livianas posible y verificar piezas individuales de calidad de datos (tablas de metadatos, líneas en blanco, NULL, errores de sintaxis, otros atributos de verificación requeridos).

En el caso de las pruebas de regresión, que utiliza conjuntos de datos listos para usar (inmutables / ligeramente modificables), las plantillas listas para verificar la calidad de los datos (descripciones de los metadatos de la tabla esperados; los objetos selectivos en minúsculas que se pueden seleccionar aleatoriamente durante la prueba, se pueden almacenar en el código de prueba automática) Y así).

También durante las pruebas, debe escribir procesos ETL de prueba utilizando marcos como Apache Airflow, Apache Spark o incluso una herramienta de nube de caja negra como GCP Dataprep , GCP DataflowY así. Esta circunstancia hace que el ingeniero de pruebas se sumerja en los principios de las herramientas anteriores e incluso de manera más efectiva cómo realizar pruebas funcionales (por ejemplo, procesos ETL existentes en el proyecto) y usarlos para verificar los datos. En particular, Apache Airflow tiene operadores listos para trabajar con bases de datos analíticas populares, por ejemplo GCP BigQuery . El ejemplo más básico de su uso ya se ha descrito aquí , por lo que no lo repetiré.

Además de las soluciones listas para usar, nadie le prohíbe vender sus técnicas y herramientas. Esto no solo será un beneficio para el proyecto, sino también para el propio ingeniero de calidad de datos, lo que aumenta sus horizontes técnicos y sus habilidades de codificación.

Cómo funciona en un proyecto real


Una buena ilustración de los últimos párrafos sobre "cadena de datos", ETL y las comprobaciones ubicuas es el siguiente proceso de uno de los proyectos reales:



Aquí, diferentes datos (preparados naturalmente por nosotros) caen en el "embudo" de entrada de nuestro sistema: válido, inválido, mixto, etc. n., luego se filtran y terminan en un almacenamiento intermedio, luego nuevamente esperan una serie de transformaciones y se colocan en un almacenamiento final, desde el cual, a su vez, se realizarán análisis, exhibición de datos y búsqueda de información comercial. En dicho sistema, sin verificar funcionalmente el funcionamiento de los procesos ETL, nos enfocamos en la calidad de los datos antes y después de las transformaciones, así como en ir a la analítica.

Resumiendo lo anterior, independientemente de los lugares donde trabajé, participé en todos los proyectos de datos que combinaban las siguientes características:

  • Solo a través de la automatización puede verificar algunos casos y lograr un ciclo de lanzamiento favorable para las empresas.
  • El evaluador de dicho proyecto es uno de los miembros del equipo más respetados, ya que brinda grandes beneficios a cada uno de los participantes (pruebas aceleradas, buenos datos de Data Scientist, identificación de defectos en las primeras etapas).
  • No importa si trabaja en su hardware o en las nubes: todos los recursos se abstraen en un clúster como Hortonworks, Cloudera, Mesos, Kubernetes, etc.
  • Los proyectos se basan en un enfoque de microservicio, prevalecen la informática distribuida y paralela.

Observo que, mientras realiza las pruebas en el campo de la calidad de los datos, el especialista en pruebas cambia su enfoque profesional hacia el código del producto y las herramientas utilizadas.

Características distintivas de las pruebas de calidad de datos


Además, para mí, destaqué las siguientes características distintivas (inmediatamente haré una reserva MUY generalizada y exclusivamente subjetiva) de las pruebas en proyectos (sistemas) de Datos (Big Data) y otras áreas:


Enlaces útiles


  1. Teoría: DAMA-DMBOK: Cuerpo de conocimiento de gestión de datos: 2ª edición .
  2. Centro de entrenamiento  EPAM 
  3. Materiales recomendados para el ingeniero de calidad de datos novato:

    1. Curso gratuito de Stepik:  una introducción a las bases de datos
    2. Curso sobre LinkedIn Learning:  Fundamentos de ciencia de datos: Ingeniería de datos .
    3. Artículos:

    4. Vídeo:


Conclusión


La calidad de los datos es un área prometedora muy joven, ser parte de lo que significa ser parte de una startup. Una vez en Data Quality, se sumergirá en una gran cantidad de tecnologías modernas que están en demanda, pero lo más importante: tendrá grandes oportunidades para generar e implementar sus ideas. Puede utilizar el enfoque de mejora continua no solo en el proyecto, sino también para usted mismo, desarrollándose continuamente como especialista.

All Articles