T + Conf 2019: Tarantool en Aeroflot o MDM sobre la marcha



Hoy publicamos una transcripción del informe de Nikolai Shevtsov y Rustam Kildiev con T + Conf 2019 " Tarantool en Aeroflot, o MDM (Master Data Management) sobre la marcha ". Del informe aprenderás:

  • ¿Por qué se necesita MDM?
  • ¿Por qué necesito tiempo real?
  • Data Science es más que un simple cuaderno Jupyter.
  • Ventajas de Tarantool.
  • Por qué Lua es buena vendiendo.

La tecnología de la información ayuda activamente a nuestra empresa a atraer clientes. Hoy, estamos presentando activamente una serie de proyectos de Big Data. Estos son proyectos de marketing que nos ayudan en la segmentación de datos y llevar información a los clientes, investigación social, trabajar con quejas y apelaciones, y mucho más. Además, se están implementando varios proyectos que ayudan a aumentar la rentabilidad y la rentabilidad del negocio. Por ejemplo, uno de los proyectos es el análisis del equipaje disponible a bordo para vender el excedente a tiempo, o para predecir la falla de componentes individuales y repuestos de aeronaves para el mantenimiento oportuno.

Es en la plataforma de manejo de llamadas que utilizamos activamente Tarantool, y un poco más al respecto.

El principal valor de Big Data para nosotros es la capacidad de analizar datos. Estamos tratando de recopilar todas las nuevas fuentes de información relacionadas con Aeroflot en un solo campo de información para su posterior procesamiento.

Nikolay Shevtsov, Aeroflot. Gerente de Proyectos en el Departamento de Sistemas de Información.

¿Cómo suele comprar un boleto la gente? Existe una idea sobre el viaje, una persona lo comparte con amigos y familiares, en redes sociales y foros, y luego compra un boleto en el sitio. Existen muchas fuentes de información, y nuestra tarea es recopilarlas todas y analizarlas para comprender la actitud de los pasajeros hacia el servicio y la aerolínea en general.

Uno de nuestros proyectos se llama Call Platform. Recopilamos todas las revisiones, apelaciones y quejas de numerosas fuentes. "Plataforma" es nuestra ventana de recopilación única en el sitio o en la aplicación móvil a través de la cual recibimos información de los usuarios. También recopilamos reseñas de redes sociales relacionadas con Aeroflot.

Muchas divisiones de Aeroflot están involucradas en el manejo de quejas y apelaciones: empleados dedicados al servicio a bordo, en el área de salida, en el área de llegada, etc. La mayoría de las quejas, alrededor de 2.5 mil por día, provienen de pasajeros que llegan que tienen algún problema. Cada queja debe ser procesada, clasificada y redirigida al departamento apropiado a un empleado específico que pueda resolver el problema del pasajero. Las quejas idénticas se pueden agrupar para ahorrar tiempo analizando la situación y tomando una decisión.

El objetivo del proyecto es optimizar el procesamiento de las aplicaciones y reducir el tiempo para su procesamiento. Para hacer esto, era necesario crear un sistema que, en el momento de una queja, determina automáticamente su tema y lo envía al departamento correspondiente al empleado responsable. En el proceso de procesamiento de una queja, el sistema debe encontrar toda la información disponible sobre el cliente, hasta su perfil, vuelos planeados para el futuro, etc.

Al comienzo del proyecto, consideramos varias herramientas que podrían ayudarnos en este asunto y finalmente elegimos Tarantool. La vida ha demostrado que esta fue la elección correcta: le permite cumplir con los requisitos de SLA y al mismo tiempo se adapta bien con el aumento de la carga.

Implementación


Aeroflot presentó una plataforma para manejar quejas. Este es un depósito de información no estructurada, sobre la base de la cual se lleva a cabo el análisis y la síntesis de perfiles únicos de clientes.


La información recibida a solicitud debe ser procesada y sistematizada. Las apelaciones son textos que no pueden almacenarse en forma cruda, por lo que todo el texto está vectorizado. Se realiza una búsqueda de un conjunto de resultados, se compila un mapa de palabras y frases únicas, en función del cual se calcula el vector inicial para convertir todos los resultados posteriores. Inicialmente, nuestros especialistas en análisis de datos utilizaron herramientas clásicas: Python y Jupyter Notebook en un clúster o computadora portátil local. El vector tiene un tamaño dinámico, lo que crea dificultades.

A diferencia de muchas otras herramientas, Tarantool es un servidor de aplicaciones completo. Podemos usar muchas bibliotecas, como SciLua, escribir lógica en un lenguaje de programación regular, etc. Ahora estamos vectorizando datos usando la biblioteca SicLua en tiempo real directamente en Tarantool. Luego, utilizando el método de la distancia cosenoidal, el sistema busca un vector similar durante un período de tres meses. Como resultado, recibimos una llamada doble o similar para un procesamiento posterior. En el proceso de búsqueda, se realizan muchos cálculos matemáticos: en 3 meses, se procesan aproximadamente 100 mil llamadas de todas las fuentes disponibles. El tiempo de procesamiento promedio es de 120 ms.

Rustam Kildiev, CTO de Innodata.

Infraestructura


Nuestra base de datos Tarantool se ejecuta en cuatro servidores de dieciséis núcleos con una gran cantidad de RAM. Gracias al módulo Vshard, fue posible implementar una búsqueda rápida con fuerza bruta. Los datos se dividen en partes: cubos, de modo que el procesamiento de consultas se paraleliza. El sistema es fácil de escalar, solo agregue un servidor. Hemos implementado la replicación maestro-maestro, aunque la mayoría de los DBMS ahora están llegando a eso. Además, no necesitamos agregar módulos, no hay problemas con la administración.

Nuestra cantidad de datos, si contamos desde RAM, es de aproximadamente 1 TB. En la etapa de inicio, depuración y corrección de errores en el proyecto, surgieron problemas. Casi todas las tablas contienen 7-8 índices, por lo que la base de datos de Tarantool para 1 TB nos tomó 20-40 minutos, lo cual es inaceptable. Durante el inicio, el sistema crea índices y, si los elimina, la carga será mucho más rápida. En esta situación, la función Hot-standby nos ayudó.

Planes


Tanto al cliente como a nosotros, los artistas, nos gustó Tarantool. Consideramos otras bases, pero al final elegimos Tarantool. En primer lugar, necesitábamos una base muy rápida. En segundo lugar, tendrá que trabajar mucho con él, escribir lógica, etc., por lo que Lua fue una ventaja para nosotros. En tercer lugar, Tarantool escribe inmediatamente en el disco y no toma instantáneas, lo cual también es bueno para nosotros, porque aunque hay muchas llamadas de clientes, no podemos permitirnos perder ni una.

Tarantool ha demostrado su utilidad en la producción, y cargaremos aún más datos en él, agregaremos lógica empresarial. A diferencia de otras bases de datos, no es necesario ajustarlo constantemente y cambiar algo. Por cierto, la conversión y carga de datos en Tarantool desde otro sistema está automatizada y se realiza a diario.

En el futuro, planeamos cambiar a Tarantool Enterprise, que nos permitirá administrar y configurar convenientemente varias instancias de Tarantool. Todavía hay pocos especialistas en esta base de datos, y la necesidad de ellos está en constante crecimiento. Nuestras calificaciones a veces no son suficientes. En tales casos, el chat interno de los desarrolladores de Tarantool ayuda, en el que puede pedir ayuda. Esto no está en ningún otro sistema.

También planeamos actualizar a Tarantool2 y SQL. Hay muchos expertos en SQL en el mercado laboral, por lo que la transición no será muy difícil.

recomendaciones


El principal problema de este proyecto fue Lua. Pocos desarrolladores lo saben, pero lo aman aún menos. Inicialmente, escribimos usando otro idioma, pero debido a la gran cantidad de solicitudes, el sistema funcionó lentamente. Por lo tanto, copiamos todo con Lua durante mucho tiempo y dolor, pero como resultado, el sistema funciona de manera clara y rápida, con un pequeño número de correcciones y lanzamientos. Lua está muy cerca del código de máquina y es uno de los lenguajes más rápidos de la familia C. Aunque es un lenguaje de script pequeño, tiene todas las bibliotecas necesarias, y pudimos transferir algoritmos de búsqueda, vectorización, distancia coseno, etc.

Tarantool es muy tolerante a fallas y funciona fuera de la caja. Realizamos numerosos experimentos: apagamos Tarantool, levantamos, etc. - todo funciona bien y los datos intermedios se escriben en el disco, por lo que no perdemos datos.

All Articles