Testeur de grandes et petites données : tendances, théorie, mon histoire

Bonjour à tous, je m'appelle Alexandre, et je suis ingénieur en qualité des données, spécialisé dans la vérification de la qualité des données. Dans cet article, je vais vous expliquer comment je suis arrivé là et pourquoi, en 2020, ce domaine du test est devenu trÚs en vogue.

Testeur de grandes et petites données : tendances, théorie, mon histoire

Tendance mondiale

Le monde d'aujourd'hui traverse une nouvelle révolution technologique, dont l'un des aspects est l'utilisation par diverses entreprises des données accumulées pour faire avancer leur propre moteur de vente, de profits et de communication. Il semble que la possession de bonnes (qualitatives) données, ainsi que des esprits capables de les transformer en argent (traitement adéquat, visualisation, construction de modÚles d'apprentissage automatique, etc.), soit la clé du succÚs pour beaucoup aujourd'hui. Il y a 15 à 20 ans, la gestion des données accumulées et leur monétisation étaient principalement l'apanage des grandes entreprises, alors qu'aujourd'hui, c'est devenu le lot de presque toutes les entreprises sensées.

De ce fait, il y a quelques années, tous les portails de recherche d'emploi à travers le monde ont été inondés d'offres d'emploi pour des Data Scientists, car tout le monde était convaincu qu'en engageant un tel spécialiste, on pourrait construire un super modÚle d'apprentissage automatique, prédire l'avenir et réaliser un « bond quantique » pour l'entreprise. Avec le temps, les gens ont compris que cette approche ne fonctionne que dans de rares cas, car toutes les données qui parviennent à ces spécialistes ne sont pas forcément adaptées à l'entraßnement de modÚles.

Et les demandes de Data Scientists ont commencĂ© : « Achetons encore des donnĂ©es chez ceux-ci et ceux-lĂ .
 », « Il nous manque des donnĂ©es
 », « Nous avons encore besoin de donnĂ©es et de prĂ©fĂ©rence de qualité  ». En se basant sur ces demandes, de nombreuses interactions ont vu le jour entre les entreprises possĂ©dant divers ensembles de donnĂ©es. Naturellement, cela a nĂ©cessitĂ© une organisation technique de ce processus — se connecter Ă  la source de donnĂ©es, les extraire, vĂ©rifier qu'elles sont chargĂ©es en intĂ©gralitĂ©, etc. Le nombre de ces processus a commencĂ© Ă  croĂźtre, et aujourd'hui nous faisons face Ă  un immense besoin d'un autre type de spĂ©cialistes — des ingĂ©nieurs en qualitĂ© des donnĂ©es — ceux qui surveilleraient le flux de donnĂ©es dans le systĂšme (data pipelines), la qualitĂ© des donnĂ©es Ă  l'entrĂ©e et Ă  la sortie, et tireraient des conclusions sur leur suffisance, intĂ©gritĂ© et d'autres caractĂ©ristiques.

La tendance des ingĂ©nieurs en Data Quality nous vient des États-Unis, oĂč, dans la pleine Ăšre capitaliste, personne n'est prĂȘt Ă  perdre la bataille des donnĂ©es. Voici des captures d'Ă©cran de deux des sites d'emploi les plus populaires aux États-Unis : www.monster.com et www.dice.com — qui montrent des donnĂ©es en date du 17 mars 2020 concernant le nombre d'offres d'emploi obtenues, par mots-clĂ©s : Data Quality et Data Scientist.

www.monster.com

Data Scientists – 21416 offres
Data Quality – 41104 offres

Testeur de grandes et petites données : tendances, théorie, mon histoire
Testeur de grandes et petites données : tendances, théorie, mon histoire

www.dice.com

Data Scientists – 404 offres
Data Quality – 2020 offres

Testeur de grandes et petites données : tendances, théorie, mon histoire
Testeur de grandes et petites données : tendances, théorie, mon histoire

Il est évident que ces professions ne sont en aucun cas en concurrence l'une avec l'autre. Avec ces captures d'écran, je voulais simplement illustrer la situation actuelle du marché du travail en ce qui concerne la demande d'ingénieurs en Data Quality, qui sont actuellement beaucoup plus recherchés que les Data Scientists.

En juin 2019, EPAM, réagissant aux besoins du marché IT moderne, a séparé la direction Data Quality en une pratique distincte. Les ingénieurs en Data Quality, dans le cadre de leur travail quotidien, gÚrent les données, vérifient leur comportement dans de nouvelles conditions et systÚmes, contrÎlent la pertinence, la suffisance et l'actualité des données. Pourtant, dans un sens pratique, les ingénieurs en Data Quality consacrent réellement un peu de temps aux tests fonctionnels classiques, MAIS cela dépend fortement du projet (je donnerai un exemple plus loin).

Les responsabilités des ingénieurs en Data Quality ne se limitent pas seulement aux vérifications manuelles/automatisées routiniÚres sur les « nulls, count et sums » dans les tables de bases de données, mais nécessitent une compréhension approfondie des besoins commerciaux du client et, par conséquent, la capacité de transformer les données existantes en informations commerciales exploitables.

La théorie de la Data Quality

Testeur de grandes et petites données : tendances, théorie, mon histoire

Pour mieux comprendre le rÎle d'un tel ingénieur, examinons ce qu'est la Data Quality en théorie.

Data Quality — l'une des Ă©tapes de la gestion des donnĂ©es (un monde entier que nous vous laisserons explorer par vous-mĂȘme) et est responsable de l'analyse des donnĂ©es selon les critĂšres suivants :

Testeur de grandes et petites données : tendances, théorie, mon histoire
Je pense qu'il n'est pas nécessaire d'expliquer chacun des points (appelés en théorie «data dimensions»), ils sont déjà bien décrits sur l'image. Mais le processus de test ne nécessite pas de copier strictement ces caractéristiques dans des tests et de les vérifier. Dans la qualité des données, comme dans tout autre type de test, il faut d'abord s'appuyer sur les exigences de qualité des données, convenues avec les participants du projet qui prennent des décisions commerciales.

Selon le projet, un ingénieur en qualité des données peut remplir différentes fonctions : d'un simple testeur automatisé avec une évaluation superficielle de la qualité des données, à une personne réalisant un profilage approfondi selon les caractéristiques mentionnées ci-dessus.

Une description trĂšs dĂ©taillĂ©e des processus de gestion des donnĂ©es, de la qualitĂ© des donnĂ©es et des domaines connexes est bien prĂ©sentĂ©e dans le livre intitulĂ© «DAMA-DMBOK: Data Management Body of Knowledge: 2Ăšme Édition». Je recommande vivement ce livre comme introduction Ă  ce sujet (le lien vers celui-ci se trouve Ă  la fin de l'article).

Mon histoire

Dans l'industrie informatique, je suis passĂ© de Junior testeur dans des entreprises de produits Ă  Lead Data Quality Engineer chez EPAM. AprĂšs environ deux ans de travail en tant que testeur, j'Ă©tais convaincu que je rĂ©alisais tous les types de test : rĂ©gression, fonctionnel, stress, stabilitĂ©, sĂ©curitĂ©, UI, etc. — et j'ai essayĂ© un grand nombre d'outils de test tout en travaillant sur trois langages de programmation : Java, Scala, Python.

En rĂ©flĂ©chissant au passĂ©, je comprends pourquoi l'ensemble de mes compĂ©tences professionnelles est si variĂ© — j'ai participĂ© Ă  des projets liĂ©s au travail avec des donnĂ©es, grandes et petites. C'est exactement cela qui m'a conduit dans un monde rempli d'outils et de possibilitĂ©s de croissance.

Pour apprĂ©cier la variĂ©tĂ© des outils et des possibilitĂ©s d'acquĂ©rir de nouvelles connaissances et compĂ©tences, il suffit de jeter un Ɠil Ă  l'image ci-dessous qui montre les plus populaires dans le monde de la «Data & AI».

Testeur de grandes et petites données : tendances, théorie, mon histoire
Ce type d'illustrations est rĂ©alisĂ© chaque annĂ©e par l'un des cĂ©lĂšbres capital-risqueurs Matt Turck, issu du dĂ©veloppement logiciel. Voici lien son blog et la firme de capital-risque, oĂč il travaille en tant que partenaire.

J'ai particuliĂšrement beaucoup progressĂ© professionnellement lorsque j'Ă©tais le seul testeur du projet, ou du moins au dĂ©but du projet. À ce moment-lĂ , il faut ĂȘtre responsable de l'ensemble du processus de test, et il n'y a pas de retour en arriĂšre, seulement en avant. Au dĂ©but, cela faisait peur, mais maintenant je vois clairement tous les avantages de cette Ă©preuve :

  • Tu commences Ă  communiquer avec toute l'Ă©quipe comme jamais auparavant, car il n'y a pas de proxy pour la communication : ni de test-manager, ni de collĂšgues testeurs.
  • L'immersion dans le projet devient incroyablement profonde, et tu maĂźtrises l'information sur tous les composants tant au niveau gĂ©nĂ©ral que dans les dĂ©tails.
  • Les dĂ©veloppeurs ne te regardent pas comme « ce gars du test qui ne fait pas vraiment grand-chose », mais plutĂŽt comme un Ă©gal, apportant une valeur incroyable Ă  l'Ă©quipe avec tes tests automatisĂ©s et ta capacitĂ© Ă  anticiper l'apparition de bugs dans un certain module du produit.
  • En consĂ©quence, tu es plus efficace, plus qualifiĂ©, plus en demande.

Au fur et à mesure que le projet grandissait, dans 100% des cas, je devenais mentor pour les nouveaux testeurs arrivant sur le projet, les formant et partageant les connaissances que j'avais acquises. Selon le projet, je ne recevais pas toujours les spécialistes en automatisation de haut niveau, et il y avait un besoin soit de les former à l'automatisation (pour ceux qui le voulaient), soit de créer des outils pour les aider dans leurs activités quotidiennes (outils de génération de données et de chargement dans le systÚme, outils pour des tests de charge/test de stabilité « rapides », etc.).

Exemple d'un projet concret

Malheureusement, en raison des obligations de non-divulgation, je ne peux pas parler en détail des projets sur lesquels j'ai travaillé, mais je vais donner des exemples des tùches typiques d'un ingénieur en qualité des données sur l'un des projets.

L'objectif du projet Ă©tait de mettre en Ɠuvre une plateforme pour prĂ©parer des donnĂ©es afin d'entraĂźner des modĂšles d'apprentissage automatique. Le client Ă©tait une grande entreprise pharmaceutique des États-Unis. Techniquement, c'Ă©tait un cluster Kubernetes, s'Ă©levant sur AWS EC2 instances, avec plusieurs microservices et reposant sur le projet open source de l'entreprise EPAM - Legion, adaptĂ© aux besoins spĂ©cifiques du client (le projet a maintenant Ă©tĂ© rebaptisĂ© en odahu). Les processus ETL ont Ă©tĂ© organisĂ©s Ă  l'aide de Apache Airflow et a dĂ©placĂ© les donnĂ©es de SalesForce du systĂšme du client vers AWS S3 Buckets. Ensuite, une image Docker du modĂšle d'apprentissage automatique a Ă©tĂ© dĂ©ployĂ©e sur la plateforme, qui s'est entraĂźnĂ©e sur des donnĂ©es rĂ©centes et a fourni des prĂ©dictions via l'interface REST API, rĂ©pondant aux besoins de l'entreprise et rĂ©solvant des problĂšmes spĂ©cifiques.

Visuellement, cela ressemblait Ă  peu prĂšs Ă  ceci :

Testeur de grandes et petites données : tendances, théorie, mon histoire
Il y avait suffisamment de tests fonctionnels sur ce projet, et Ă©tant donnĂ© la rapiditĂ© de dĂ©veloppement des fonctionnalitĂ©s et la nĂ©cessitĂ© de maintenir un rythme de cycle de publication (sprints de deux semaines), il Ă©tait nĂ©cessaire de rĂ©flĂ©chir immĂ©diatement Ă  l'automatisation des tests des nƓuds critiques du systĂšme. La majoritĂ© de la plateforme, basĂ©e sur Kubernetes, Ă©tait couverte par des tests automatisĂ©s rĂ©alisĂ©s avec Robot Framework + Python, mais il Ă©tait Ă©galement nĂ©cessaire de les maintenir et de les Ă©tendre. De plus, pour le confort du client, une interface graphique a Ă©tĂ© créée pour gĂ©rer les modĂšles d'apprentissage automatique dĂ©ployĂ©s sur le cluster, ainsi que la possibilitĂ© d'indiquer d'oĂč et vers oĂč les donnĂ©es devaient ĂȘtre transfĂ©rĂ©es pour entraĂźner les modĂšles. Cet ajout vaste a entraĂźnĂ© une extension des vĂ©rifications fonctionnelles automatisĂ©es, qui Ă©taient majoritairement effectuĂ©es par des appels REST API et un petit nombre de tests UI end-to-end. Environ Ă  mi-parcours de tout ce mouvement, un testeur manuel nous a rejoint, qui s'est trĂšs bien occupĂ© de l'acceptation des tests des versions du produit et de la communication avec le client concernant l'acceptation de la prochaine version. De plus, grĂące Ă  l'arrivĂ©e de ce nouveau spĂ©cialiste, nous avons pu documenter notre travail et ajouter quelques vĂ©rifications manuelles trĂšs importantes qui Ă©taient difficiles Ă  automatiser immĂ©diatement.

Et enfin, aprÚs avoir atteint la stabilité de la plateforme et de l'interface graphique qui la surplombe, nous avons commencé à construire des pipelines ETL à l'aide des DAGs d'Apache Airflow. La vérification automatisée de la qualité des données a été effectuée en écrivant des DAGs Airflow spécifiques qui validaient les données en fonction des résultats du processus ETL. Dans le cadre de ce projet, nous avons eu la chance que le client nous ait fourni un accÚs à des ensembles de données anonymisées, sur lesquels nous avons fait nos tests. Nous avons vérifié les données ligne par ligne pour leur conformité aux types, la présence de données corrompues, le nombre total d'enregistrements avant et aprÚs, et nous avons comparé les transformations effectuées par le processus ETL au niveau de l'agrégation, du changement de noms de colonnes, etc. De plus, ces vérifications ont été étendues à différentes sources de données, par exemple, en plus de SalesForce, également sur MySQL.

Les vĂ©rifications de la qualitĂ© finale des donnĂ©es ont Ă©tĂ© rĂ©alisĂ©es au niveau de S3, oĂč elles Ă©taient stockĂ©es et prĂȘtes Ă  l'emploi pour l'entraĂźnement de modĂšles d'apprentissage automatique. Pour extraire les donnĂ©es du fichier CSV final situĂ© dans le bucket S3 et les valider, un code a Ă©tĂ© Ă©crit en utilisant le client boto3.

De plus, le client a exigé que certaines données soient stockées dans un bucket S3, et d'autres dans un autre. Cela a également nécessité l'écriture de vérifications supplémentaires pour contrÎler la véracité de cette classification.

Expérience généralisée sur d'autres projets

Un exemple de la liste la plus générale des activités d'un ingénieur en qualité des données :

  • PrĂ©parer des donnĂ©es de test (valides, non valides, grandes, petites) via un outil automatisĂ©.
  • Charger l'ensemble de donnĂ©es prĂ©parĂ© dans la source d'origine et vĂ©rifier sa disponibilitĂ© pour utilisation.
  • Lancer les processus ETL pour traiter l'ensemble de donnĂ©es provenant de la source d'origine vers la destination finale ou intermĂ©diaire en appliquant un certain ensemble de configurations (dans le cas oĂč il est possible de dĂ©finir des paramĂštres configurables pour la tĂąche ETL).
  • VĂ©rifier les donnĂ©es traitĂ©es par le processus ETL pour leur qualitĂ© et leur conformitĂ© aux exigences commerciales.

L'accent principal des vérifications ne doit pas seulement porter sur le fait que le flux de données dans le systÚme a été correctement exécuté et est arrivé à la fin (ce qui fait partie des tests fonctionnels), mais majoritairement sur la vérification et la validation des données pour s'assurer qu'elles répondent aux exigences attendues, qu'elles identifient des anomalies, etc.

Outils

Une des techniques de contrĂŽle des donnĂ©es peut consister Ă  organiser des vĂ©rifications en chaĂźne Ă  chaque Ă©tape du traitement des donnĂ©es, ce que la littĂ©rature appelle la « data chain » — le contrĂŽle des donnĂ©es depuis leur source jusqu'au point d'utilisation finale. Ce type de vĂ©rification est souvent mis en Ɠuvre en Ă©crivant des requĂȘtes SQL de vĂ©rification. Il va sans dire que ces requĂȘtes doivent ĂȘtre aussi lĂ©gĂšres que possible et vĂ©rifier des morceaux spĂ©cifiques de la qualitĂ© des donnĂ©es (mĂ©tadonnĂ©es des tables, lignes vides, NULLs, erreurs de syntaxe — d'autres attributs de vĂ©rification requis).

Dans le cas des tests de rĂ©gression, oĂč des ensembles de donnĂ©es dĂ©jĂ  prĂ©parĂ©s (inĂ©vitablement peu modifiables) sont utilisĂ©s, les codes des tests automatisĂ©s peuvent contenir des modĂšles de vĂ©rification des donnĂ©es concernant la qualitĂ© (descriptions des mĂ©tadonnĂ©es des tables; objets Ă©chantillonnĂ©s qui peuvent ĂȘtre sĂ©lectionnĂ©s au hasard lors du test, etc.).

Lors des tests, il est Ă©galement nĂ©cessaire d'Ă©crire des processus ETL de test, en utilisant des cadres tels que Apache Airflow, Apache Spark ou mĂȘme des outils cloud en boĂźte noire comme GCP Dataprep, GCP Dataflow et d'autres. Cela oblige l'ingĂ©nieur de test Ă  s'immerger dans les principes de fonctionnement des outils mentionnĂ©s ci-dessus, et Ă  rĂ©aliser plus efficacement Ă  la fois les tests fonctionnels (par exemple, des processus ETL existants dans le projet) et Ă  les utiliser pour vĂ©rifier les donnĂ©es. En particulier, pour Apache Airflow, des opĂ©rateurs prĂȘts Ă  l'emploi existent pour travailler avec des bases de donnĂ©es analytiques populaires, comme GCP BigQuery. Le plus basique des exemples de son utilisation a dĂ©jĂ  Ă©tĂ© exposĂ© ici, donc je ne vais pas rĂ©pĂ©ter.

En plus des solutions prĂȘtes Ă  l'emploi, rien ne vous empĂȘche de mettre en Ɠuvre vos propres techniques et outils. Cela sera non seulement bĂ©nĂ©fique pour le projet, mais Ă©galement pour l'ingĂ©nieur en qualitĂ© des donnĂ©es, qui ainsi Ă©largira ses compĂ©tences techniques et ses capacitĂ©s de codage.

Comment cela fonctionne-t-il dans un projet réel

Une bonne illustration des derniers paragraphes sur la « chaßne de données », l'ETL et les vérifications omniprésentes est le processus suivant d'un des projets réels :

Testeur de grandes et petites données : tendances, théorie, mon histoire

Ici, différentes données (évidemment préparées par nous) entrent dans l'« entonnoir » de notre systÚme : valides, invalides, mélangées, etc., puis elles sont filtrées et passent dans un stockage intermédiaire, ensuite elles subissent à nouveau une série de transformations et sont placées dans le stockage final, à partir duquel l'analyse, la construction de vitrines de données et la recherche d'insights commerciaux seront réalisées. Dans ce type de systÚme, sans vérifier fonctionnellement le fonctionnement des processus ETL, nous nous concentrons sur la qualité des données avant et aprÚs les transformations, ainsi que sur la sortie vers l'analyse.

Pour rĂ©sumer ce qui prĂ©cĂšde, peu importe les lieux oĂč j'ai travaillĂ©, j'Ă©tais toujours impliquĂ© dans des projets Data qui partageaient les caractĂ©ristiques suivantes :

  • C'est uniquement grĂące Ă  l'automatisation que l'on peut vĂ©rifier certains cas et atteindre un cycle de publication acceptable pour les entreprises.
  • Le testeur dans tel projet est l'un des membres les plus respectĂ©s de l'Ă©quipe, car il apporte une immense valeur Ă  chacun des participants (accĂ©lĂ©ration des tests, bonnes donnĂ©es pour les Data Scientists, identification des dĂ©fauts Ă  un stade prĂ©coce).
  • Peu importe si vous travaillez sur votre propre matĂ©riel ou dans le cloud — toutes les ressources sont abstraites dans un cluster de type Hortonworks, Cloudera, Mesos, Kubernetes, etc.
  • Les projets sont basĂ©s sur une approche de microservices, avec des calculs distribuĂ©s et parallĂšles prĂ©dominants.

Je souligne que, dans le cadre de tests sur la qualité des données, le spécialiste des tests déplace son focus professionnel sur le code du produit et les outils utilisés.

Caractéristiques distinctives des tests de qualité des données

De plus, j'ai identifié les caractéristiques suivantes (je précise qu'elles sont TRÈS générales et uniquement subjectives) qui distinguent les tests dans les projets de données (Big Data) et d'autres domaines :

Testeur de grandes et petites données : tendances, théorie, mon histoire

Liens utiles

  1. Théorie : DAMA-DMBOK : Data Management Body of Knowledge : 2e édition.
  2. Centre de formation EPAM 
  3. Matériaux recommandés pour un ingénieur Data Quality débutant :
    1. Cours gratuit sur Stepik : Introduction aux bases de données. 
    2. Cours sur LinkedIn Learning : Fondamentaux de Data Science : Data Engineering.
    3. Articles :
    4. Vidéo :

Conclusion

Data Quality — c'est un domaine trĂšs jeune et prometteur, faire partie de celui-ci signifie faire partie d'une sorte de startup. En entrant dans la Quality Data, vous serez immergĂ© dans un grand nombre de technologies modernes et demandĂ©es, mais surtout, d'Ă©normes opportunitĂ©s s'offriront Ă  vous pour gĂ©nĂ©rer et rĂ©aliser vos idĂ©es. Vous pourrez appliquer une approche d'amĂ©lioration continue non seulement dans le projet, mais aussi pour vous-mĂȘme, en vous dĂ©veloppant constamment en tant que spĂ©cialiste.

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster