T + Conf 2019: Tarantool chez Aeroflot, ou MDM à la volée



Aujourd'hui, nous publions une transcription du rapport de Nikolai Shevtsov et Rustam Kildiev avec T + Conf 2019 " Tarantool in Aeroflot, ou MDM (Master Data Management) à la volée ". Le rapport vous apprendra:

  • Pourquoi le MDM est-il nécessaire?
  • Pourquoi ai-je besoin en temps réel?
  • La science des données est plus qu'un simple bloc-notes Jupyter.
  • Avantages de Tarantool.
  • Pourquoi Lua est bon à vendre.

Les technologies de l'information aident activement notre entreprise à attirer des clients. Aujourd'hui, nous introduisons activement un certain nombre de projets Big Data. Ce sont des projets marketing qui nous aident à segmenter les données et à fournir des informations aux clients, à la recherche sociale, à gérer les plaintes et les appels, et bien plus encore. De plus, plusieurs projets sont mis en œuvre qui contribuent à accroître la rentabilité et la rentabilité de l'entreprise. Par exemple, l'un des projets consiste à analyser les bagages disponibles à bord afin de vendre le surplus à temps ou de prévoir la défaillance de composants individuels et de pièces de rechange d'avions pour une maintenance en temps opportun.

C'est dans la plateforme de gestion des appels que nous utilisons activement Tarantool, et un peu plus à ce sujet.

La principale valeur du Big Data pour nous est la capacité d'analyser les données. Nous essayons de collecter toutes les nouvelles sources d'informations liées à Aeroflot dans un seul champ d'information pour un traitement ultérieur.

Nikolay Shevtsov, Aeroflot. Chef de projet au Département des systèmes d'information.

Comment les gens achètent-ils généralement un billet? Il y a une idée du voyage, une personne la partage avec des amis et des parents, sur les réseaux sociaux et les forums, puis achète un ticket sur le site. Il existe de nombreuses sources d'informations, et notre tâche est de les collecter toutes et de les analyser afin de comprendre l'attitude des passagers vis-à-vis du service et de la compagnie aérienne dans son ensemble.

L'un de nos projets s'appelle la plateforme d'appel. Nous collectons tous les avis, appels et plaintes de nombreuses sources. «Plateforme» est notre fenêtre de collecte unique sur le site ou dans l'application mobile à travers laquelle nous recevons des informations des utilisateurs. Nous collectons également des avis sur les réseaux sociaux liés à Aeroflot.

De nombreuses divisions d'Aeroflot sont impliquées dans le traitement des réclamations et des appels: employés engagés dans les services à bord, dans la zone de départ, dans la zone d'arrivée, etc. La plupart des plaintes, environ 2,5 mille par jour, proviennent de passagers arrivant qui ont des problèmes. Chaque plainte doit être traitée, classée et redirigée vers le service approprié vers un employé spécifique qui peut résoudre le problème du passager. Les plaintes identiques peuvent être regroupées pour gagner du temps à analyser la situation et à prendre une décision.

L'objectif du projet est d'optimiser le traitement des demandes et de réduire les délais de traitement. Pour ce faire, il a fallu créer un système qui, lors d'une réclamation, détermine automatiquement son sujet et l'envoie au service approprié à l'employé responsable. En cours de traitement d'une réclamation, le système doit retrouver toutes les informations disponibles sur le client, jusqu'à son profil, les futurs vols prévus, etc.

Au début du projet, nous avons envisagé plusieurs outils qui pourraient nous aider dans cette affaire et avons finalement choisi Tarantool. La vie a montré que c'était le bon choix: il vous permet de vous conformer aux exigences du SLA tout en s'adaptant bien à l'augmentation de la charge.

la mise en oeuvre


Aeroflot a introduit une plateforme de traitement des plaintes. Il s'agit d'un référentiel d'informations non structurées, sur la base duquel l'analyse et la synthèse de profils clients uniques sont effectuées.


Les informations reçues lors des demandes doivent être traitées et systématisées. Les appels sont du texte qui ne peut pas être stocké sous une forme brute, donc tout le texte est vectorisé. Une recherche est effectuée pour un ensemble de résultats, une carte de mots et de phrases uniques est compilée, sur la base de laquelle le vecteur initial est calculé pour convertir tous les résultats ultérieurs. Au départ, nos spécialistes de l'analyse de données utilisaient des outils classiques - Python et Jupyter Notebook sur un cluster ou un ordinateur portable local. Le vecteur a une taille dynamique, ce qui crée des difficultés.

Contrairement à de nombreux autres outils, Tarantool est un serveur d'applications complet. Nous pouvons utiliser de nombreuses bibliothèques, telles que SciLua, écrire la logique dans un langage de programmation normal, etc. Maintenant, nous vectorisons des données en utilisant la bibliothèque SicLua en temps réel directement dans Tarantool. Ensuite, en utilisant la méthode de la distance cosinusoïdale, le système recherche un vecteur similaire pendant une période de trois mois. En conséquence, nous recevons un double ou des appels similaires pour un traitement ultérieur. Dans le processus de recherche, de nombreux calculs mathématiques sont effectués: en 3 mois, environ 100 000 appels sont traités à partir de toutes les sources disponibles. Le temps de traitement moyen est de 120 ms.

Rustam Kildiev, CTO chez Innodata.

Infrastructure


Notre base de données Tarantool fonctionne sur quatre serveurs à seize cœurs avec une grande quantité de RAM. Grâce au module Vshard, il a été possible d'implémenter une recherche rapide avec force brute. Les données sont divisées en parties - compartiments, de sorte que le traitement des requêtes est parallélisé. Le système est facile à mettre à l'échelle, il suffit d'ajouter un serveur. Nous avons implémenté la réplication maître-maître, bien que la plupart des SGBD y arrivent maintenant. De plus, nous n'avons pas besoin d'ajouter de modules, il n'y a aucun problème d'administration.

Notre quantité de données, si nous comptons à partir de la RAM, est d'environ 1 To. Au stade du démarrage, du débogage et de la correction des erreurs dans le projet, des problèmes sont survenus. Presque toutes les tables contiennent 7 à 8 index, donc la base de données Tarantool pour 1 To nous a pris 20 à 40 minutes, ce qui est inacceptable. Au démarrage, le système crée des index et si vous les supprimez, le chargement se fera beaucoup plus rapidement. Dans cette situation, la fonction Hot-standby nous a aidés.

Des plans


Le client et nous, les artistes, aimions Tarantool. Nous avons envisagé d'autres bases, mais finalement nous avons choisi Tarantool. Tout d'abord, nous avions besoin d'une base très rapide. Deuxièmement, il devra beaucoup travailler avec cela, écrire la logique, etc., donc Lua à part entière était un avantage pour nous. Troisièmement, Tarantool écrit immédiatement sur le disque et ne prend pas d'instantanés, ce qui est également bon pour nous, car bien qu'il y ait beaucoup d'appels de clients, nous ne pouvons pas nous permettre d'en perdre un seul.

Tarantool a prouvé son utilité en production, et nous y chargerons encore plus de données, en ajoutant une logique métier. Contrairement à d'autres bases de données, il n'a pas besoin d'être constamment réglé et quelque chose a changé. Soit dit en passant, la conversion et le chargement des données dans Tarantool à partir d'un autre système sont automatisés et sont effectués quotidiennement.

À l'avenir, nous prévoyons de passer à Tarantool Enterprise, ce qui nous permettra d'administrer et de configurer facilement plusieurs instances de Tarantool. Il y a encore peu de spécialistes dans cette base de données et leur besoin ne cesse de croître. Nos qualifications ne sont parfois pas suffisantes. Dans de tels cas, le chat interne des développeurs Tarantool aide, dans lequel vous pouvez demander de l'aide. Ce n'est dans aucun autre système.

Nous prévoyons également de mettre à niveau vers Tarantool2 et SQL. Il existe de nombreux experts SQL sur le marché du travail, donc la transition ne sera pas très difficile.

résultats


Le problème principal de ce projet était Lua. Peu de développeurs le savent, mais ils l'aiment encore moins. Au départ, nous écrivions dans une autre langue, mais en raison du grand nombre de demandes, le système fonctionnait lentement. Par conséquent, nous avons copié tout avec Lua pendant une longue période de temps, mais en conséquence, le système fonctionne clairement et rapidement, avec un petit nombre de corrections et de versions. Lua est très proche du code machine et est l'un des langages les plus rapides de la famille C. Bien qu'il s'agisse d'un petit langage de script, il possède toutes les bibliothèques nécessaires, et nous avons pu transférer des algorithmes de recherche, vectorisation, distance cosinus, etc.

Tarantool est très tolérant aux pannes et fonctionne hors de la boîte. Nous avons mené de nombreuses expériences: éteint Tarantool, levé, etc. - tout fonctionne bien et les données intermédiaires sont écrites sur le disque, nous ne perdons donc pas de données.

All Articles