Comment une entreprise doit choisir des outils pour les ingénieurs de données et ne pas tout transformer en zoo technologique: l'expérience de PROFI.RU

L'éditeur de Netology s'est entretenu avec le chef d'équipe de l'équipe BI du Profi.ru Pavel Sayapin sur les tâches que les ingénieurs de données résolvent dans son équipe, les outils qu'ils utilisent pour cela et comment choisir le bon outil pour résoudre les problèmes de données. y compris atypique. Pavel est enseignant au cours d' ingénieur de données



- Profi.ru



Profi.ru est un service qui aide les clients et les spécialistes de divers domaines à se rencontrer. La base de données de services contient plus de 900 000 spécialistes dans 700 types de services: tuteurs, réparateurs, entraîneurs, maîtres de beauté, artistes et autres. Plus de 10 000 nouvelles commandes sont enregistrées chaque jour - tout cela donne environ 100 millions d'événements par jour. Il est impossible de maintenir l'ordre dans cette quantité de données sans des ingénieurs de données professionnels.  



Idéalement, un ingénieur de données développe une culture de données qui peut aider une entreprise à générer des revenus supplémentaires ou à réduire ses coûts. Il apporte de la valeur à l'entreprise en travaillant en équipe et en agissant comme un lien important entre divers participants - des développeurs aux consommateurs professionnels de rapports. Mais dans chaque entreprise, les tâches peuvent différer, nous les considérerons donc en utilisant l'exemple de Profi.ru.



— -, -,  



Les données doivent être claires pour la prise de décision et faciles à utiliser. Vous n'avez pas besoin de faire des efforts pour trouver une description ou écrire une requête SQL complexe qui prend en compte de nombreux facteurs différents. Une image idéale - l'utilisateur regarde le tableau de bord et est satisfait de tout. Et s'il n'y a pas assez de données dans certains aspects, alors il va à la base de données et à l'aide d'une simple requête SQL obtient ce dont il a besoin.





Place du processus Data Quality dans la structure générale de l'entrepôt de données La



documentation explicative sur le travail avec les données est d'une grande importance. Cela simplifie le travail de l'ingénieur de données (non distrait par les questions) et de l'utilisateur des données (il peut trouver lui-même les réponses à ses questions). Dans Profi.ru, ces documents sont collectés sur le forum interne.



La commodité inclut la vitesse de récupération des données. Vitesse = disponibilité en une seule étape, cliquez sur - tableau de bord. Mais en pratique, tout est plus compliqué. 



Du point de vue de l'utilisateur final du tableau de bord, le même Tableau ne permet pas d'afficher toutes les dimensions possibles. L'utilisateur est satisfait des filtres créés par le développeur du tableau de bord. Cela crée deux scénarios: 



  • Le développeur fait de nombreuses coupes pour le tableau de bord ⟶ le nombre de pages augmente beaucoup. Cela réduit la disponibilité des données: il devient difficile de comprendre où se trouve ce qui se trouve. 
  • Le développeur ne crée que des coupes de clés. Trouver des informations est plus facile, mais pour une coupe légèrement moins standard, vous devez toujours vous rendre soit à la base de données, soit aux analystes. Ce qui est également mauvais pour l'accessibilité. 


L'accessibilité est un concept large. Il s'agit de la disponibilité des données sous la forme appropriée, et de la capacité d'obtenir des informations sur les tableaux de bord, ainsi que de la coupe de données nécessaire.


Accumulez les données de toutes les sources en un seul endroit



Les sources de données peuvent être internes ou externes. Par exemple, l'entreprise de quelqu'un dépend des rapports météorologiques à collecter et à stocker - à partir de sources externes. 



Il est nécessaire de stocker des informations avec une indication de la source, et aussi pour que les données puissent être facilement trouvées. Profi.ru résout ce problème à l'aide d'une documentation automatisée. Les fichiers YML sont utilisés comme documentation sur les sources de données internes.



Créer des tableaux de bord



La visualisation des données est mieux réalisée dans un outil professionnel comme Tableau. 



La plupart prennent des décisions émotionnelles - la visibilité et l'esthétique sont importantes. Le même Excel pour la visualisation, d'ailleurs, n'est pas très adapté: il ne couvre pas tous les besoins des utilisateurs de données. Par exemple, un chef de produit aime creuser dans les chiffres, mais d'une manière pratique à faire. Cela lui permet de résoudre ses problèmes et de ne pas réfléchir à la manière d'obtenir des informations et de collecter des métriques.



La visualisation des données de haute qualité rend les décisions plus faciles et plus rapides.
 

Plus la personne en position est élevée, plus il est urgent de disposer de données agrégées, au téléphone. Les cadres supérieurs n'ont pas besoin de détails - il est important de contrôler la situation dans son ensemble, et la BI est un bon outil pour cela.





Un exemple de tableau de bord de produit Profi.ru (une des fiches). Pour la confidentialité des informations, les noms des métriques et des axes sont masqués



Exemples de tâches réelles 



Tâche 1 - Transférer des données depuis les systèmes (d'exploitation) source vers un entrepôt de données ou ETL



L'une des tâches de routine d'un ingénieur de données. 



Pour cela peut être utilisé:



  • scripts auto-écrits exécutés par cron ou utilisant un orchestrateur spécial tel que Airflow ou Prefect; 
  • Solutions ETL open source: Pentaho Data Integration, Talend Data Studio et autres;
  • solutions propriétaires: Informatica PowerCenter, SSIS et autres;
  • solutions cloud: Matillion, Panoply et autres. 


Dans une version simple, le problème est résolu en écrivant un fichier YML de 20 lignes. Cela prend environ 5 minutes. 



Dans le cas le plus difficile, lorsque vous devez ajouter une nouvelle source - par exemple, une nouvelle base de données - cela peut prendre jusqu'à plusieurs jours. 



Dans Profi, cette tâche simple - avec un processus simplifié - comprend les étapes suivantes:



  • Découvrez auprès du client quelles données sont nécessaires et où elles se trouvent.
  • Comprenez s'il y a accès à ces données.
  • S'il n'y a pas d'accès, demandez aux administrateurs.
  • Ajoutez une nouvelle branche à Git avec le code du problème dans Jira.
  • Créez une migration pour ajouter des données au modèle d'ancrage via un script Python interactif.
  • Ajoutez des fichiers de téléchargement (fichier YML avec une description de l'origine des données et de la table dans laquelle elles sont écrites).
  • Test sur le stand.
  • Téléchargez les données dans le référentiel.
  • Créez une pull request.
  • Passez en revue le code.
  • Après avoir passé l'examen du code, les données sont téléchargées dans la branche principale et automatiquement mises en production (CI / CD).


Tâche 2 - Placez facilement les données téléchargées



Une autre tâche courante consiste à placer les données téléchargées de manière à ce que l'utilisateur final (ou l'outil BI) soit à l'aise de travailler avec elles et n'ait pas à effectuer de mouvements inutiles pour effectuer la plupart des tâches. Autrement dit, créez ou mettez à jour un magasin de données de dimension (DDS). 



Pour cela, les solutions de la 1ère tâche peuvent être appliquées, puisqu'il s'agit également d'un processus ETL. Dans sa forme la plus simple, le DDS est mis à jour à l'aide de scripts SQL.



Tâche 3 - de la catégorie des tâches atypiques



L'analyse en continu est née dans Profi. Un grand nombre d'événements des équipes produit sont générés - nous les enregistrons dans ClickHouse. Mais vous ne pouvez pas y insérer d'enregistrements un à la fois dans un grand nombre, vous devez donc combiner les enregistrements en lots. Autrement dit, vous ne pouvez pas écrire directement - vous avez besoin d'un gestionnaire intermédiaire.



Nous utilisons le moteur basé sur Apache Flink. Jusqu'à présent, la procédure est la suivante: le moteur traite le flux d'événements entrants ⟶ les ajoute par lots dans ClickHouse ⟶ à la volée compte le nombre d'événements en 15 minutes ⟶ les transfère au service, qui détermine s'il y a des anomalies - compare avec les valeurs pour les mêmes 15 minutes avec une profondeur de 3 mois s'il y en a, il envoie une notification à Slack.





Schéma d'analyse frontale (partie téléchargement)



Le framework Apache Flink garantit la livraison au moins une fois. Cependant, il y a un risque de doublons. Dans le cas de RabbitMQ, cela peut être résolu à l'aide de l'ID de corrélation. Ensuite, une seule livraison ⟶ l'intégrité des données est garantie.



On compte à nouveau le nombre d'événements en utilisant Apache Flink, on l'affiche via un tableau de bord auto-écrit écrit en NodeJS, + front en ReactJS. Une recherche rapide n'a donné aucune solution similaire. Et le code lui-même s'est avéré simple - il n'a pas fallu longtemps pour l'écrire.



Le suivi est plutôt technique. Nous examinons les anomalies afin de prévenir les problèmes aux premiers stades. Certaines métriques globales importantes de l'entreprise ne sont pas encore incluses dans la surveillance, car la direction de l'analyse en continu est au stade de la formation.



Outils d'ingénierie de données essentiels



Avec les tâches des ingénieurs de données, c'est plus ou moins clair, maintenant un peu sur les outils qui sont utilisés pour les résoudre. Bien entendu, les outils des différentes entreprises peuvent (et devraient) différer - tout dépend de la quantité de données, de leur vitesse de réception et de leur hétérogénéité. Cela peut également dépendre du parti pris du spécialiste pour un instrument en particulier simplement parce qu'il a travaillé avec et qu'il le connaît bien. Profi.ru a choisi de telles options →



Pour la visualisation des données - Tableau, Metabase



Tableau a été choisi pendant longtemps. Ce système vous permet d'analyser rapidement de grandes quantités de données, sans nécessiter une mise en œuvre coûteuse. Pour nous, c'est pratique, beau et familier - nous y travaillons souvent.



Peu de gens connaissent Metabase, en attendant, il est très bon pour le prototypage. 



À partir des outils de visualisation, vous pouvez également parler du Superset d'Airbnb. Sa particularité est de nombreuses connexions à la base de données et des capacités de visualisation. Cependant, pour un utilisateur ordinaire, c'est moins pratique que Metabase - vous ne pouvez pas y joindre des tables, pour cela, vous devez créer des vues séparées. 



Dans la même métabase, vous pouvez joindre des tables, de plus, le service le fait lui-même, en tenant compte du schéma de la base de données. Et l'interface de Metabase est plus simple et plus agréable.



Il existe de nombreux outils - trouvez le vôtre.



Pour le stockage des données - ClickHouse, Vertica



ClickHouse est un outil rapide gratuit pour stocker les événements d'épicerie. Là-dessus, les analystes effectuent eux-mêmes des analyses séparées (s'ils disposent de suffisamment de données) ou les ingénieurs de données prennent des agrégats et les téléchargent à nouveau sur Vertica pour créer des vitrines.



Vertica est un produit convivial pour la présentation en magasin. 



Pour le contrôle et le calcul des flux de données - Airflow



Nous chargeons les données via les outils de la console. Par exemple, grâce à un client fourni avec MySQL, cela s'avère plus rapide. 



L'avantage des outils de console est la rapidité. Les données ne sont pas pompées dans la mémoire du même processus Python. En revanche, il y a moins de contrôle sur les données qui transitent d'une base de données à une autre.



Le principal langage de programmation est Python



Python a un seuil d'entrée beaucoup plus bas + l'entreprise a des compétences dans ce langage. Une autre raison est que sous Airflow, les DAG sont écrits en Python. Ces scripts ne sont qu'un wrapper autour des téléchargements, la plupart du travail est effectué via des scripts de console. 



Nous utilisons Java pour le développement d'analyses en temps réel.



Une approche pour choisir les outils de données - que faire pour ne pas élever un zoo technologique



Il existe de nombreux outils sur le marché pour travailler avec les données à chaque étape: de son apparition à la sortie en passant par un tableau de bord pour le conseil d'administration. Sans surprise, certaines entreprises peuvent avoir un certain nombre de solutions indépendantes - le soi-disant zoo technologique.



Le zoo technologique est un outil qui fait la même chose. Par exemple, Kafka et RabbitMQ pour la messagerie ou Grafana et Zeppelin pour la visualisation. 





Carte des technologies et des entreprises dans le domaine des données et de l'IA - vous pouvez voir combien de solutions dupliquées peuvent être



En outre, beaucoup à des fins personnelles peuvent utiliser différents outils ETL. Dans Profi, c'est exactement la situation. Le principal ETL est sur Airflow, mais quelqu'un utilise Pentaho pour les téléchargements personnels. Ils testent des hypothèses et n'ont pas besoin de faire passer ces données par des ingénieurs. Fondamentalement, les outils en libre-service sont utilisés par des spécialistes assez expérimentés qui sont engagés dans des activités de recherche - explorant de nouvelles voies de développement de produits. L'ensemble de leurs données à analyser les intéresse principalement, de plus, il est en constante évolution. En conséquence, cela n'a aucun sens d'ajouter ces charges à la plate-forme principale. 



Retour au zoo. Souvent, l'utilisation de technologies en double est associée à un facteur humain. Des équipes internes distinctes ont l'habitude de travailler avec l'un ou l'autre outil qu'une autre équipe ne peut pas utiliser. Et parfois, l'autonomie est le seul moyen de résoudre des problèmes particuliers. Par exemple, l'équipe R&D doit tester quelque chose avec un certain outil - c'est juste pratique, quelqu'un de l'équipe l'a déjà utilisé, ou il y a une autre raison. Il faudra beaucoup de temps à la ressource des administrateurs système pour installer et configurer cet outil. Dans le même temps, des administrateurs réfléchis et méticuleux doivent encore prouver que cela est vraiment nécessaire. L'équipe installe donc l'outil sur ses machines virtuelles et résout leurs tâches spécifiques.



, . , . 


Une autre raison courante de l'émergence de nouveaux outils est le désir d'essayer un produit inconnu dans un domaine relativement nouveau, où les normes n'ont pas encore été formées ou il n'y a pas de lignes directrices éprouvées. Un ingénieur de données, comme un développeur, doit toujours rechercher de nouveaux outils dans l'espoir de trouver une meilleure solution aux problèmes actuels ou de suivre ce que le marché a à offrir.



La tentation d'essayer de nouveaux outils est vraiment grande. Mais pour faire le bon choix, il faut d'abord se discipliner soi-même. Cela vous aidera à ne pas vous donner complètement aux impulsions de recherche, mais à prendre en compte les capacités de l'entreprise à soutenir l'infrastructure d'un nouvel outil. 

N'utilisez pas la technologie pour le bien de la technologie. Il est préférable d'aborder la question de manière pragmatique: une tâche est un ensemble d'outils permettant de résoudre cette tâche.
 Et puis évaluez chacun d'eux et choisissez le meilleur. Par exemple, cet outil peut résoudre le problème plus efficacement, mais il n'y a pas de compétences pour cela, et celui-ci est légèrement moins efficace, mais l'entreprise a des gens qui savent comment travailler avec. Cet outil est payant, mais facile à entretenir et à utiliser, et c'est l'open source à la mode, mais il a besoin d'un personnel d'administrateurs pour le prendre en charge. De telles dichotomies surviennent qui nécessitent une tête froide pour être résolues.

Le choix d'un instrument est un demi-acte de foi, une demi-expérience personnelle. Il n'y a aucune certitude totale que l'outil conviendra.
Par exemple, à Profi, ils ont commencé avec Pentaho, parce qu'ils avaient une expertise dans cet instrument, mais à la fin, cela s'est avéré être une mauvaise décision. Le référentiel interne Pentaho est devenu très lent à mesure que le projet se développait. Soit dit en passant, il a fallu une minute pour enregistrer les données, et s'il y a une habitude de sauvegarder constamment du travail, le temps m'a simplement échappé. À cela s'ajoutait un lancement complexe, des tâches planifiées - l'ordinateur était suspendu. 



La souffrance a pris fin après le passage à Airflow, un outil populaire auprès d'une grande communauté. 

La présence d'un service communautaire, un outil est important pour résoudre des problèmes complexes - vous pouvez demander conseil à des collègues.
Si l'entreprise est mature et dispose des ressources, il est logique d'envisager d'acheter un support technique. Cela vous aidera à résoudre rapidement les problèmes et à recevoir des recommandations pour l'utilisation du produit.



Si nous parlons de l'approche du choix, alors Profi adhère aux principes suivants:



  • Ne prenez pas de décision seul . Lorsqu'une personne choisit quelque chose, elle est automatiquement convaincue qu'elle a raison. C'est une autre question de convaincre les autres quand il y a une défense solide à faire. Cela permet également de voir les faiblesses de l'instrument.
  • Demandez conseil au Chief Data Officer (dialogue vertical) . Cela peut être le Chief Data Engineer, le chef de l'équipe BI. Les tops voient la situation plus largement. 
  • Communiquer avec d'autres équipes (dialogue horizontal) . Quels outils utilisent-ils et dans quelle mesure. Peut-être que l'outil d'un collègue peut résoudre vos problèmes et que vous n'avez pas à organiser un zoo de solutions.


Compétences internes pour remplacer efficacement un prestataire de services externe



L'approche du choix des outils peut également être considérée comme l'utilisation des compétences internes de l'entreprise. 



Il arrive souvent qu'une entreprise ait une tâche difficile, mais qu'il n'y ait pas d'argent pour la mettre en œuvre. La tâche est vaste et importante et, dans le bon sens, il est préférable d'impliquer un prestataire de services externe possédant l'expérience appropriée. Mais comme il n'y a pas une telle opportunité (argent), une équipe interne est affectée pour résoudre le problème. De plus, une entreprise fait généralement plus confiance à ses employés s'ils ont déjà prouvé leur efficacité.



Des exemples de telles tâches, lorsqu'une nouvelle direction est développée par les employés, consiste à effectuer des tests de charge et à créer un entrepôt de données. Surtout l'entrepôt de données, car c'est une histoire unique pour chaque entreprise. Le stockage ne peut pas être acheté, vous ne pouvez engager que des spécialistes externes qui le construiront avec le soutien d'une équipe interne.  



À propos, au fur et à mesure que la nouvelle direction se développe, l'équipe peut se rendre compte que le besoin d'un fournisseur de services externe a disparu.



Dans Profi, la mise en œuvre de la BI était interne. La principale difficulté était que l'entreprise souhaitait lancer rapidement la BI. Mais il a fallu du temps pour construire un tel projet: développer des compétences, remplir des données, construire un schéma de stockage pratique, sélectionner des outils et les maîtriser.



La phase principale - chaude -, lorsque tout a été construit et cristallisé, a duré environ un an. Et le projet est toujours en développement. 

Lors de la construction d'un entrepôt de données d'entreprise, il est important de respecter des normes élevées, de défendre votre position et de ne pas faire quelque chose pour plaire à l'entreprise. 



C'est avec beaucoup de peine que nous avons refait la majeure partie du projet, ce qui devait être fait rapidement alors.
 Mais parfois, une approche rapide est recommandée. Donc, dans le développement de produits, il peut même être le seul correct. Vous devez avancer rapidement, tester des hypothèses de produits, etc. Mais le stockage doit être basé sur une architecture solide, sinon il ne pourra pas s'adapter rapidement à l'activité croissante et le projet s'éteindra.



Dans ce projet difficile, notre chef a beaucoup aidé, qui a défendu l'avancement des travaux, expliqué à la direction ce que nous faisions, assommé des ressources et nous a simplement défendus. Sans un tel soutien, je ne suis pas sûr que nous aurions pu lancer le projet.



Dans de telles histoires, un rôle important est joué par les soi-disant adopteurs précoces - ceux qui sont prêts à essayer de nouvelles choses - parmi les top managers, analystes, chefs de produit. Pour qu'un sujet grossier décolle, nous avons besoin de pionniers qui confirmeront que tout fonctionne et est pratique à utiliser.



Si quelqu'un veut partager la solution au troisième problème décrit ci-dessus - bienvenue :-)



All Articles