Cómo una empresa debe elegir herramientas para ingenieros de datos y no convertir todo en un zoológico tecnológico: la experiencia de PROFI.RU

El editor de Netology conversó con el líder del equipo de BI en Profi.ru Pavel Sayapin sobre qué tareas resuelven los ingenieros de datos en su equipo, qué tipo de herramientas utilizan para esto y cómo, después de todo, el enfoque correcto para la elección de herramientas para resolver problemas de datos, en incluso atípico. Pavel es profesor en el curso de Ingeniería de datos



- Profi.ru



Profi.ru es un servicio que ayuda a los clientes y especialistas de diversos campos a encontrarse. La base de datos de servicios contiene más de 900 mil especialistas en 700 tipos de servicios: tutores, reparadores, entrenadores, maestros de belleza, artistas y otros. Cada día se registran más de 10 mil nuevos pedidos; todo esto da alrededor de 100 millones de eventos por día. Es imposible mantener el orden en esta cantidad de datos sin ingenieros de datos profesionales.  



Idealmente, un ingeniero de datos desarrolla una cultura de datos que le permite a la empresa generar ingresos adicionales o reducir costos. Aporta valor a la empresa al trabajar en equipo y actuar como un vínculo importante entre varios participantes, desde los desarrolladores hasta los consumidores empresariales de informes. Pero en cada empresa las tareas pueden diferir, por lo que las consideraremos utilizando el ejemplo de Profi.ru.



— -, -,  



Los datos deben ser claros para la toma de decisiones y fáciles de usar. No necesita esforzarse para encontrar la descripción o escribir una consulta SQL compleja que tenga en cuenta muchos factores diferentes. Imagen ideal: el usuario mira el tablero y está satisfecho con todo. Y si no hay suficientes datos en algún aspecto, entonces va a la base de datos y con la ayuda de una simple consulta SQL obtiene lo que necesita.





Lugar del proceso de calidad de datos en la estructura general del almacén de datos La



documentación explicativa sobre el trabajo con datos es de gran importancia. Esto simplifica el trabajo tanto del ingeniero de datos (que no se distrae con preguntas) como del usuario de datos (él mismo puede encontrar las respuestas a sus preguntas). En Profi.ru, dichos documentos se recopilan en el foro interno.



La conveniencia incluye la velocidad de recuperación de datos. Velocidad = disponibilidad en un paso, haga clic en: panel de control. Pero en la práctica todo es más complicado. 



Desde el punto de vista del usuario final del tablero, el mismo Tableau no permite mostrar todas las dimensiones posibles. El usuario está contento con los filtros que hizo el desarrollador del tablero. Esto crea dos escenarios: 



  • El desarrollador hace muchos recortes para el tablero ⟶ el número de páginas aumenta considerablemente. Esto reduce la disponibilidad de datos: se vuelve difícil entender dónde se encuentra. 
  • El desarrollador solo crea cortes clave. Es más fácil encontrar información, pero para un corte un poco menos estándar, aún tiene que ir a la base de datos o a los analistas. Lo que también es malo para la accesibilidad. 


La accesibilidad es un concepto amplio. Esta es la disponibilidad de datos en la forma adecuada y la capacidad de obtener información en paneles, así como el corte de datos necesario.


Acumule datos de todas las fuentes en un solo lugar



Las fuentes de datos pueden ser internas y externas. Por ejemplo, el negocio de alguien depende de los informes meteorológicos que se recopilen y almacenen, de fuentes externas. 



Es necesario almacenar información con una indicación de la fuente, y también para que los datos se puedan encontrar fácilmente. Profi.ru resuelve este problema con la ayuda de documentación automatizada. Los archivos YML se utilizan como documentación sobre fuentes de datos internas.



Hacer cuadros de mando



La visualización de datos se realiza mejor en una herramienta profesional como Tableau. 



La mayoría toma decisiones emocionalmente: la visibilidad y la estética son importantes. El mismo Excel para visualización, por cierto, no es muy adecuado: no cubre todas las necesidades de los usuarios de datos. Por ejemplo, a un gerente de producto le gusta profundizar en los números, pero de una manera conveniente. Esto le permite resolver sus problemas y no pensar en cómo obtener información y recopilar métricas.



La visualización de datos de alta calidad hace que las decisiones sean más fáciles y rápidas.
 

Cuanto más alto está una persona en su posición, más urgente es la necesidad de tener datos agregados a mano, en el teléfono. Los altos directivos no necesitan detalles; es importante controlar la situación en su conjunto y BI es una buena herramienta para ello.





Un ejemplo de un panel de producto Profi.ru (una de las hojas). Por motivos de confidencialidad, los nombres de métricas y ejes están ocultos



Ejemplos de tareas reales 



Tarea 1: transferir datos desde sistemas de origen (operativos) a un almacén de datos o ETL



Una de las tareas rutinarias de un ingeniero de datos. 



Para esto se puede utilizar:



  • scripts autoescritos ejecutados por cron o usando un orquestador especial como Airflow o Prefect; 
  • Soluciones ETL de código abierto: Pentaho Data Integration, Talend Data Studio y otros;
  • soluciones propietarias: Informatica PowerCenter, SSIS y otras;
  • soluciones en la nube: Matillion, Panoply y otras. 


En una versión simple, la tarea se resuelve escribiendo un archivo YML de 20 líneas. Tarda unos 5 minutos. 



En el caso más difícil, cuando necesita agregar una nueva fuente, por ejemplo, una nueva base de datos, puede tardar varios días. 



En Profi, esta sencilla tarea, con un proceso simplificado, consta de los siguientes pasos:



  • Pregunte al cliente qué datos se necesitan y dónde se encuentran.
  • Comprenda si hay acceso a estos datos.
  • Si no hay acceso, pregunte a los administradores.
  • Agrega una nueva rama a Git con el código de emisión en Jira.
  • Cree una migración para agregar datos al modelo de ancla a través de un script de Python interactivo.
  • Agregue archivos de descarga (archivo YML con una descripción de dónde se toman los datos y en qué tabla están escritos).
  • Prueba en el stand.
  • Sube datos al repositorio.
  • Crea una solicitud de extracción.
  • Revisa la revisión del código.
  • Después de pasar la revisión del código, los datos se cargan en la rama maestra y se transfieren automáticamente a producción (CI / CD).


Tarea 2: coloque convenientemente los datos descargados



Otra tarea común es colocar los datos descargados para que el usuario final (o la herramienta de BI) se sienta cómodo trabajando con ellos y no tenga que hacer movimientos innecesarios para completar la mayoría de las tareas. Es decir, cree o actualice un Dimension Data Store (DDS). 



Para ello se pueden aplicar las soluciones de la 1ª tarea, ya que este también es un proceso ETL. En su forma más simple, el DDS se actualiza utilizando scripts SQL.



Tarea 3: de la categoría de tareas atípicas



La analítica de transmisión nace en Profi. Se genera una gran cantidad de eventos de los equipos de productos, los registramos en ClickHouse. Pero no puede insertar registros allí uno a la vez en un gran número, por lo que debe combinar registros en lotes. Es decir, no puede escribir directamente; necesita un controlador intermedio.



Usamos el motor basado en Apache Flink. Hasta ahora, el procedimiento es el siguiente: el motor procesa el flujo de eventos entrante ⟶ los agrega en lotes en ClickHouse ⟶ sobre la marcha cuenta el número de eventos en 15 minutos ⟶ los transfiere al servicio, que determina si hay anomalías - compara con valores para los mismos 15 minutos con una profundidad de 3 meses ⟶ si lo hay, envía una notificación a Slack.





Esquema de análisis de front-end (parte de descarga)



El marco Apache Flink garantiza la entrega al menos una vez. Sin embargo, existe la posibilidad de duplicados. En el caso de RabbitMQ, esto se puede resolver utilizando el ID de correlación. Entonces se garantiza una única entrega ⟶ la integridad de los datos.



Contamos el número de eventos nuevamente usando Apache Flink, lo mostramos a través de un tablero autoescrito escrito en NodeJS, + frente en ReactJS. Una búsqueda rápida no arrojó soluciones similares. Y el código en sí resultó ser simple: no tomó mucho tiempo escribirlo.



El seguimiento es bastante técnico. Observamos las anomalías para prevenir problemas en las primeras etapas. Algunas métricas globales importantes de la empresa aún no están incluidas en el monitoreo, ya que la dirección de la analítica de transmisión se encuentra en la etapa de formación.



Herramientas de ingeniería de datos esenciales



Con las tareas de los ingenieros de datos, está más o menos claro, ahora un poco sobre las herramientas que se utilizan para resolverlas. Por supuesto, las herramientas en diferentes empresas pueden (y deben) diferir; todo depende del volumen de datos, su velocidad de recepción y heterogeneidad. También puede depender del sesgo del especialista hacia un instrumento en particular solo porque trabajó con él y lo conoce bien. Profi.ru se decidió por tales opciones →



Para visualización de datos: Tableau, Metabase



Tableau fue elegido durante mucho tiempo. Este sistema le permite analizar rápidamente grandes cantidades de datos, sin requerir una implementación costosa. Para nosotros, es conveniente, hermoso y familiar: a menudo trabajamos en él.



Pocas personas conocen Metabase, mientras que es muy bueno para la creación de prototipos. 



Desde las herramientas de visualización, también puede decir sobre el Superset de Airbnb. Su característica especial son muchas conexiones de base de datos y capacidades de visualización. Sin embargo, para un usuario común, es menos conveniente que Metabase: no puede unir tablas en él, para esto necesita crear vistas separadas. 



En la misma Metabase se pueden unir tablas, además, el servicio lo hace por sí mismo, teniendo en cuenta el esquema de la base de datos. Y la interfaz de Metabase es más simple y agradable.



Hay muchas herramientas, solo encuentre la suya.



Para almacenamiento de datos: ClickHouse, Vertica



ClickHouse es una herramienta rápida y gratuita para almacenar eventos de comestibles. En él, los propios analistas realizan análisis por separado (si tienen suficientes datos) o los ingenieros de datos toman agregados y los vuelven a cargar en Vertica para construir escaparates.



Vertica es un producto genial y fácil de usar para exhibir en tiendas finales. 



Para el control y el cálculo del flujo de datos: Airflow



Cargamos datos a través de herramientas de consola. Por ejemplo, a través de un cliente que viene con MySQL, resulta más rápido. 



La ventaja de las herramientas de consola es la velocidad. Los datos no se bombean a través de la memoria del mismo proceso de Python. De las desventajas, hay menos control sobre los datos que transitan de una base de datos a otra.



El principal lenguaje de programación es Python



Python tiene un umbral de entrada mucho más bajo + la empresa tiene competencia en este idioma. Otra razón es que en Airflow los DAG están escritos en Python. Estos scripts son simplemente envoltorios de descargas, la mayor parte del trabajo se realiza a través de scripts de consola. 



Usamos Java para el desarrollo de análisis en tiempo real.



Un enfoque para elegir herramientas de datos: qué hacer para no generar un zoológico tecnológico



Hay muchas herramientas en el mercado para trabajar con datos en cada etapa: desde su aparición hasta su salida y un tablero para la junta directiva. No es sorprendente que algunas empresas tengan varias soluciones no relacionadas: el llamado zoológico tecnológico.



El zoológico tecnológico son herramientas que hacen lo mismo. Por ejemplo, Kafka y RabbitMQ para mensajería o Grafana y Zeppelin para visualización. 





Mapa de tecnologías y empresas en el campo de los datos y la IA : puede ver cuántas soluciones duplicadas pueden ser



Además, muchos pueden usar diferentes herramientas ETL para fines personales. En Profi, esta es exactamente la situación. El ETL principal está en Airflow, pero alguien usa Pentaho para cargas personales. Prueban hipótesis y no necesitan ejecutar estos datos a través de ingenieros. Básicamente, las herramientas de autoservicio son utilizadas por especialistas con bastante experiencia que participan en actividades de investigación, explorando nuevas formas de desarrollo de productos. El conjunto de sus datos para el análisis les interesa principalmente, además, está en constante cambio. En consecuencia, no tiene sentido agregar estas cargas a la plataforma principal. 



Volviendo al zoológico. A menudo, el uso de tecnologías duplicadas se asocia con un factor humano. Los equipos internos separados están acostumbrados a trabajar con una u otra herramienta que otro equipo no puede utilizar. Y a veces la autonomía es la única forma de resolver problemas especiales. Por ejemplo, el equipo de I + D debe probar algo con una determinada herramienta: es conveniente, alguien del equipo ya la ha utilizado o hay otra razón. Es mucho tiempo esperar a que el recurso de los administradores del sistema instale y configure esta herramienta. Al mismo tiempo, los administradores reflexivos y meticulosos aún deben demostrar que esto es realmente necesario. Entonces el equipo instala la herramienta en sus máquinas virtuales y resuelve sus tareas específicas.



, . , . 


Otra razón común para la aparición de nuevas herramientas es el deseo de probar un producto desconocido en un área relativamente nueva, donde aún no se han formado estándares o no existen pautas probadas. Un ingeniero de datos, como un desarrollador, siempre debe investigar nuevas herramientas con la esperanza de encontrar una mejor solución a los problemas actuales o estar al tanto de lo que ofrece el mercado.



La tentación de probar nuevas herramientas es realmente grande. Pero para tomar la decisión correcta, primero necesita autodisciplina. Le ayudará a no entregarse por completo a los impulsos de investigación, sino a tener en cuenta las capacidades de la empresa para respaldar la infraestructura de una nueva herramienta. 

No use la tecnología por la tecnología. Es mejor abordar la pregunta de manera pragmática: una tarea es un conjunto de herramientas que pueden resolver esta tarea.
 Y luego evalúa cada uno de ellos y elige el mejor. Por ejemplo, esta herramienta puede resolver el problema de manera más eficiente, pero no hay competencias para ello, y esta es un poco menos efectiva, pero la empresa tiene personas que saben trabajar con ella. Esta herramienta es de pago, pero fácil de mantener y usar, y está de moda en código abierto, pero necesita un equipo de administradores para respaldarla. Surgen tales dicotomías que requieren una cabeza fría para resolverse.

Elegir un instrumento es la mitad de un acto de fe, la mitad de una experiencia personal. No hay certeza absoluta de que la herramienta se ajuste.
Por ejemplo, en Profi empezaron con Pentaho, porque tenían experiencia en este instrumento, pero al final resultó ser una decisión equivocada. El repositorio interno de Pentaho se volvió muy lento a medida que el proyecto crecía. Por cierto, me tomó un minuto guardar datos, y si tengo la costumbre de ahorrar trabajo constantemente, el tiempo simplemente se me escapó de los dedos. A esto se agregó un lanzamiento complejo, tareas programadas: la computadora se colgó. 



El sufrimiento terminó después de cambiar a Airflow, una herramienta popular con una gran comunidad. 

La presencia de un servicio comunitario, una herramienta, es importante para resolver problemas complejos; puede pedir consejo a sus colegas.
Si la empresa es madura y tiene los recursos, tiene sentido considerar comprar soporte técnico. Esto le ayudará a solucionar problemas rápidamente y a recibir recomendaciones para utilizar el producto.



Si hablamos sobre el enfoque de la elección, Profi se adhiere a los siguientes principios:



  • No tomes una decisión solo . Cuando una persona elige algo, automáticamente se convence de que tiene razón. Otra cuestión es convencer a los demás cuando hay que hacer una fuerte defensa. Esto también ayuda a ver las debilidades del instrumento.
  • Solicite asesoramiento al director de datos (diálogo vertical) . Puede ser el ingeniero jefe de datos, el jefe del equipo de BI. Los tops ven la situación de manera más amplia. 
  • Comunicarse con otros equipos (diálogo horizontal) . Qué herramientas usan y qué tan bien. Quizás la herramienta de un colega pueda resolver sus problemas y no tenga que organizar un zoológico de soluciones.


Competencias internas como reemplazo efectivo de un proveedor de servicios externo



El enfoque para la elección de herramientas también puede considerarse el uso de las competencias internas de la empresa. 



Muy a menudo hay situaciones en las que una empresa tiene una tarea difícil, pero no hay dinero para implementarla. La tarea es grande e importante, y en el buen sentido es mejor involucrar a un proveedor de servicios externo que tenga la experiencia relevante. Pero como no existe tal oportunidad (dinero), se asigna un equipo interno para resolver el problema. Además, generalmente una empresa confía más en sus empleados si ya han demostrado su eficacia.



Ejemplos de tales tareas, cuando los empleados están desarrollando una nueva dirección, es realizar pruebas de carga y crear un almacén de datos. Especialmente el almacén de datos, ya que es una historia única para cada negocio. El almacenamiento no se puede comprar, solo se pueden contratar especialistas externos que lo construirán con el apoyo de un equipo interno.  



Por cierto, a medida que se desarrolla la nueva dirección, el equipo puede darse cuenta de que ha desaparecido la necesidad de un proveedor de servicios externo.



En Profi, la implementación de BI fue interna. La principal dificultad era que la empresa quería lanzar BI rápidamente. Pero llevó tiempo construir un proyecto de este tipo: desarrollar competencias, completar datos, construir un esquema de almacenamiento conveniente, seleccionar herramientas y dominarlas.



La fase principal, caliente, en la que todo estaba construido y cristalizado, duró aproximadamente un año. Y el proyecto aún está en desarrollo. 

Al construir un almacén de datos corporativo, es importante cumplir con altos estándares, defender su posición y no hacer nada para complacer a la empresa. 



Fue con gran dolor que rehicimos la mayor parte del proyecto, que tenía que hacerse rápidamente en ese momento.
 Pero a veces es aconsejable un enfoque rápido. Entonces, en el desarrollo de productos, incluso puede ser el único correcto. Necesita avanzar rápidamente, probar hipótesis de productos y más. Pero el almacenamiento debe basarse en una arquitectura sólida, de lo contrario no podrá adaptarse rápidamente al negocio en crecimiento y el proyecto se extinguirá.



En este difícil proyecto, nuestro líder ayudó mucho, quien defendió el avance de la obra, explicó a la gerencia lo que estábamos haciendo, eliminó recursos y simplemente nos defendió. Sin ese apoyo, no estoy seguro de que hubiéramos podido lanzar el proyecto.



En tales historias, los llamados adoptantes tempranos, aquellos que están listos para probar cosas nuevas, juegan un papel importante entre los altos ejecutivos, analistas y gerentes de producto. Para que un tema crudo despegue, necesitamos pioneros que confirmen que todo funciona y es conveniente de usar.



Si alguien quiere compartir la solución al tercer problema descrito anteriormente, bienvenido :-)



All Articles