Tester de date mari și mici: tendințe, teorie, povestea mea

Salutare tuturor, numele meu este Alexander și sunt un inginer de calitate a datelor care verifică calitatea datelor. Acest articol va vorbi despre cum am ajuns la asta și de ce în 2020 această zonă de testare a fost pe creasta unui val.

Tester de date mari și mici: tendințe, teorie, povestea mea

Tendință globală

Lumea de astăzi se confruntă cu o altă revoluție tehnologică, un aspect al căruia este utilizarea datelor acumulate de către tot felul de companii pentru a-și promova propriul volant al vânzărilor, profiturilor și PR. Se pare că prezența unor date bune (de calitate), precum și a creierului calificat care poate face bani din acestea (procesează corect, vizualizează, construiește modele de învățare automată etc.), au devenit cheia succesului pentru mulți astăzi. Dacă în urmă cu 15-20 de ani companiile mari erau implicate în principal în muncă intensivă cu acumulare de date și monetizare, astăzi aceasta este lotul aproape tuturor oamenilor sănătoși.

În acest sens, în urmă cu câțiva ani, toate portalurile dedicate căutării de locuri de muncă din întreaga lume au început să fie ocupate cu posturi vacante pentru Data Scientists, deoarece toată lumea era sigură că, angajând un astfel de specialist, va fi posibil să se construiască un supermodel de machine learning. , prezice viitorul și efectuează un „salt cuantic” pentru companie. De-a lungul timpului, oamenii și-au dat seama că această abordare nu funcționează aproape niciodată nicăieri, deoarece nu toate datele care cad în mâinile unor astfel de specialiști sunt potrivite pentru modelele de formare.

Și au început solicitările de la Data Scientists: „Să cumpărăm mai multe date de la acestea și alea...”, „Nu avem suficiente date...”, „Avem nevoie de mai multe date, de preferință de înaltă calitate...” . Pe baza acestor solicitări, au început să se construiască numeroase interacțiuni între companiile care dețin unul sau altul set de date. Desigur, acest lucru a necesitat organizarea tehnică a acestui proces - conectarea la sursa de date, descărcarea acesteia, verificarea că a fost încărcat complet etc. Numărul de astfel de procese a început să crească, iar astăzi avem o mare nevoie de un alt tip de specialiști - ingineri de calitate a datelor - cei care ar monitoriza fluxul de date în sistem (conducte de date), calitatea datelor la intrare și la ieșire și ar trage concluzii despre suficiența, integritatea și alte caracteristici ale acestora.

Trendul pentru inginerii Data Quality a venit la noi din SUA, unde, în plină epocă a capitalismului, nimeni nu este pregătit să piardă bătălia pentru date. Mai jos am oferit capturi de ecran de la două dintre cele mai populare site-uri de căutare de locuri de muncă din SUA: www.monster.com и www.dice.com — care afișează date din 17 martie 2020 privind numărul de posturi vacante postate primite folosind cuvintele cheie: Data Quality and Data Scientist.

www.monster.com

Data Scientists – 21416 posturi vacante
Calitatea datelor – 41104 posturi vacante

Tester de date mari și mici: tendințe, teorie, povestea mea
Tester de date mari și mici: tendințe, teorie, povestea mea

www.dice.com

Data Scientists – 404 posturi vacante
Calitatea datelor – posturi vacante 2020

Tester de date mari și mici: tendințe, teorie, povestea mea
Tester de date mari și mici: tendințe, teorie, povestea mea

Evident, aceste profesii nu sunt în niciun fel în competiție între ele. Cu capturi de ecran, am vrut doar să ilustrez situația actuală de pe piața muncii în ceea ce privește solicitările de ingineri Data Quality, dintre care acum este nevoie de mult mai mult decât Data Scientists.

În iunie 2019, EPAM, răspunzând nevoilor pieței IT moderne, a separat Calitatea datelor într-o practică separată. Inginerii de calitate a datelor, în cursul muncii lor zilnice, gestionează datele, verifică comportamentul acestora în condiții și sisteme noi, monitorizează relevanța datelor, suficiența și relevanța acestora. Cu toate acestea, în sens practic, inginerii de calitate a datelor dedică într-adevăr puțin timp testării funcționale clasice, DAR asta depinde foarte mult de proiect (voi da un exemplu mai jos).

Responsabilitățile unui inginer pentru calitatea datelor nu se limitează doar la verificări manuale/automate de rutină pentru „nule, numărări și sume” din tabelele bazei de date, ci necesită o înțelegere profundă a nevoilor de afaceri ale clientului și, în consecință, capacitatea de a transforma datele disponibile în informații utile de afaceri.

Teoria calității datelor

Tester de date mari și mici: tendințe, teorie, povestea mea

Pentru a ne imagina mai pe deplin rolul unui astfel de inginer, să ne dăm seama ce este calitatea datelor în teorie.

Calitatea datelor — una dintre etapele Managementului Datelor (o lume întreagă pe care ți-o vom lăsa să o studiezi singur) și este responsabil cu analiza datelor după următoarele criterii:

Tester de date mari și mici: tendințe, teorie, povestea mea
Cred că nu este nevoie să descifrezi fiecare dintre puncte (în teorie se numesc „dimensiuni de date”), sunt destul de bine descrise în imagine. Dar procesul de testare în sine nu implică copierea strictă a acestor caracteristici în cazurile de testare și verificarea lor. În calitatea datelor, ca și în orice alt tip de testare, este necesar, în primul rând, să se bazeze pe cerințele de calitate a datelor convenite cu participanții la proiect care iau decizii de afaceri.

În funcție de proiectul de calitate a datelor, un inginer poate îndeplini diferite funcții: de la un tester obișnuit de automatizare cu o evaluare superficială a calității datelor, până la o persoană care realizează profilarea profundă a datelor conform criteriilor de mai sus.

O descriere foarte detaliată a managementului datelor, calității datelor și a proceselor conexe este bine descrisă în cartea numită „DAMA-DMBOK: Corpul de cunoștințe privind gestionarea datelor: ediția a 2-a”. Recomand cu căldură această carte ca o introducere în acest subiect (veți găsi un link către ea la sfârșitul articolului).

Istoria mea

În industria IT, am evoluat de la un tester junior în companii de produse la un inginer principal de calitate a datelor la EPAM. După vreo doi ani de lucru ca tester, am avut convingerea fermă că am făcut absolut toate tipurile de testare: regresie, funcționale, de stres, stabilitate, securitate, UI etc. - și am încercat un număr mare de instrumente de testare, având a lucrat în același timp în trei limbaje de programare: Java, Scala, Python.

Privind în urmă, înțeleg de ce setul meu de abilități era atât de divers – am fost implicat în proiecte bazate pe date, mari și mici. Acesta este ceea ce m-a adus într-o lume cu multe instrumente și oportunități de creștere.

Pentru a aprecia varietatea de instrumente și oportunități de a dobândi noi cunoștințe și abilități, trebuie doar să priviți imaginea de mai jos, care le arată pe cele mai populare din lumea „Date și AI”.

Tester de date mari și mici: tendințe, teorie, povestea mea
Acest tip de ilustrație este compilat anual de unul dintre celebrii capitaliști de risc Matt Turck, care provine din dezvoltarea de software. Aici legătură la blogul lui și firma de capital de risc, unde lucrează ca partener.

Am crescut profesional mai ales repede când eram singurul tester al proiectului, sau cel puțin la începutul proiectului. Într-un astfel de moment trebuie să fii responsabil pentru întregul proces de testare și nu ai ocazia să te retragi, ci doar înainte. La început a fost înfricoșător, dar acum toate avantajele unui astfel de test îmi sunt evidente:

  • Începeți să comunicați cu întreaga echipă ca niciodată, deoarece nu există un proxy pentru comunicare: nici managerul de testare, nici colegii de testare.
  • Imersiunea în proiect devine incredibil de profundă și aveți informații despre toate componentele, atât în ​​general, cât și în detaliu.
  • Dezvoltatorii nu te privesc ca pe „tipul acela de la testare care nu știe ce face”, ci mai degrabă ca pe un egal care produce beneficii incredibile pentru echipă cu testele sale automate și anticiparea erorilor care apar într-o componentă specifică a sistemului. produs.
  • Drept urmare, sunteți mai eficient, mai calificat și mai solicitat.

Pe măsură ce proiectul a crescut, în 100% din cazuri am devenit mentor pentru noi testeri, predându-i și transmițând cunoștințele pe care le învățasem eu însumi. În același timp, în funcție de proiect, nu am primit întotdeauna cel mai înalt nivel de specialiști în testare auto de la conducere și a fost nevoie fie să-i instruiesc în automatizare (pentru cei interesați), fie să creez instrumente de utilizare în activitățile de zi cu zi (instrumente). pentru generarea datelor și încărcarea acestora în sistem, un instrument pentru efectuarea „rapidă” a testării sarcinii/testării stabilității etc.).

Exemplu de proiect specific

Din păcate, din cauza obligațiilor de nedivulgare, nu pot vorbi în detaliu despre proiectele la care am lucrat, dar voi da exemple de sarcini tipice ale unui Data Quality Engineer pe unul dintre proiecte.

Esența proiectului este implementarea unei platforme pentru pregătirea datelor pentru antrenarea modelelor de învățare automată pe baza acesteia. Clientul era o mare companie farmaceutică din SUA. Din punct de vedere tehnic, era un cluster Kubernetes, ridicându-se la AWS EC2 instanțe, cu mai multe microservicii și proiectul Open Source al EPAM - Legiune, adaptat nevoilor unui anumit client (acum proiectul a renascut în odahu). Procesele ETL au fost organizate folosind Flux de aer Apache și a mutat datele din Salesforce sistemele clientului în AWS S3 Găleți. Apoi, o imagine Docker a unui model de învățare automată a fost implementată pe platformă, care a fost instruită pe date noi și, folosind interfața API REST, a produs predicții care au fost de interes pentru afacere și a rezolvat probleme specifice.

Vizual, totul arăta cam așa:

Tester de date mari și mici: tendințe, teorie, povestea mea
Au fost multe teste funcționale pe acest proiect și, având în vedere viteza de dezvoltare a caracteristicilor și nevoia de a menține ritmul ciclului de lansare (sprinturi de două săptămâni), a fost necesar să ne gândim imediat la automatizarea testării celor mai critice componente ale sistemul. Majoritatea platformei bazate pe Kubernetes a fost acoperită de autotestele implementate în Cadrul robotului + Python, dar a fost și necesar să le susținem și să le extindem. În plus, pentru confortul clientului, a fost creată o GUI pentru a gestiona modelele de învățare automată implementate în cluster, precum și capacitatea de a specifica unde și unde trebuie transferate datele pentru antrenarea modelelor. Această adăugare extinsă a presupus o extindere a testării funcționale automate, care a fost realizată în principal prin apeluri API REST și un număr mic de teste UI end-2-end. În jurul ecuatorului toată această mișcare, ni s-a alăturat un tester manual care a făcut o treabă excelentă cu testarea de acceptare a versiunilor de produs și comunicarea cu clientul cu privire la acceptarea următoarei versiuni. În plus, datorită sosirii unui nou specialist, am putut să ne documentăm munca și să adăugăm câteva verificări manuale foarte importante, care au fost greu de automatizat imediat.

Și, în sfârșit, după ce am atins stabilitatea de la platformă și de la suplimentul GUI, am început să construim conducte ETL folosind DAG-uri Apache Airflow. Verificarea automată a calității datelor a fost realizată prin scrierea DAG-urilor speciale Airflow care verificau datele pe baza rezultatelor procesului ETL. Ca parte a acestui proiect, am avut noroc și clientul ne-a oferit acces la seturi de date anonimizate pe care le-am testat. Am verificat datele rând cu linie pentru conformitatea cu tipuri, prezența datelor rupte, numărul total de înregistrări înainte și după, compararea transformărilor efectuate de procesul ETL pentru agregare, schimbarea numelor coloanelor și alte lucruri. În plus, aceste verificări au fost scalate la diferite surse de date, de exemplu, pe lângă SalesForce, și la MySQL.

Verificările finale ale calității datelor au fost efectuate deja la nivelul S3, unde au fost stocate și au fost gata de utilizare pentru formarea modelelor de învățare automată. Pentru a obține date din fișierul CSV final aflat pe S3 Bucket și pentru a-l valida, codul a fost scris folosind clienti boto3.

Exista, de asemenea, o cerință din partea clientului de a stoca o parte a datelor într-un S3 Bucket și o parte într-un altul. Acest lucru a necesitat și scrierea unor verificări suplimentare pentru a verifica fiabilitatea unei astfel de sortări.

Experiență generalizată din alte proiecte

Un exemplu de lista cea mai generală de activități a unui inginer de calitate a datelor:

  • Pregătiți datele de testare (valid invalid large small) printr-un instrument automat.
  • Încărcați setul de date pregătit în sursa originală și verificați dacă este gata de utilizare.
  • Lansați procesele ETL pentru procesarea unui set de date de la stocarea sursă la stocarea finală sau intermediară folosind un anumit set de setări (dacă este posibil, setați parametri configurabili pentru sarcina ETL).
  • Verificați datele procesate de procesul ETL pentru calitatea acestora și conformitatea cu cerințele de afaceri.

În același timp, principalul accent al verificărilor ar trebui să fie nu numai pe faptul că fluxul de date din sistem a funcționat, în principiu, și a ajuns la final (care face parte din testarea funcțională), ci mai ales pe verificarea și validarea datelor. pentru conformitatea cu cerințele așteptate, identificarea anomaliilor și alte lucruri.

Instrumente

Una dintre tehnicile pentru un astfel de control al datelor poate fi organizarea de verificări în lanț în fiecare etapă a prelucrării datelor, așa-numitul „lanț de date” în literatură - controlul datelor de la sursă până la punctul de utilizare finală. Aceste tipuri de verificări sunt cel mai adesea implementate prin scrierea de interogări SQL de verificare. Este clar că astfel de interogări ar trebui să fie cât mai ușoare posibil și să verifice elementele individuale ale calității datelor (metadatele tabelelor, linii goale, NULL-uri, Erori în sintaxă - alte atribute necesare pentru verificare).

În cazul testării de regresie, care utilizează seturi de date gata făcute (neschimbabile, ușor modificabile), codul de autotest poate stoca șabloane gata făcute pentru verificarea conformității datelor cu calitatea (descrieri ale metadatelor de tabel așteptate; obiecte eșantioane de rând care pot fi selectate aleatoriu în timpul testului etc.).

De asemenea, în timpul testării, trebuie să scrieți procese de testare ETL folosind cadre precum Apache Airflow, Apache Spark sau chiar un instrument de tip nor-cutie neagră GCP Dataprep, GCP Dataflow Și așa mai departe. Această împrejurare îl obligă pe inginerul de testare să se cufunde în principiile de funcționare ale instrumentelor de mai sus și chiar mai eficient atât să efectueze teste funcționale (de exemplu, procesele ETL existente pe un proiect), cât și să le folosească pentru a verifica datele. În special, Apache Airflow are operatori gata pregătiți pentru a lucra cu baze de date analitice populare, de exemplu GCP BigQuery. Cel mai elementar exemplu de utilizare a acestuia a fost deja subliniat aici, așa că nu mă voi repeta.

În afară de soluțiile gata făcute, nimeni nu vă interzice să implementați propriile tehnici și instrumente. Acest lucru nu va fi benefic doar pentru proiect, ci și pentru inginerul de calitate a datelor însuși, care își va îmbunătăți astfel orizonturile tehnice și abilitățile de codificare.

Cum funcționează într-un proiect real

O ilustrare bună a ultimelor paragrafe despre „lanțul de date”, ETL și verificările omniprezente este următorul proces dintr-unul dintre proiectele reale:

Tester de date mari și mici: tendințe, teorie, povestea mea

Aici intră în „palnia” de intrare a sistemului nostru diverse date (în mod firesc, pregătite de noi): valide, invalide, mixte etc., apoi sunt filtrate și ajung într-o stocare intermediară, apoi suferă din nou o serie de transformări. și sunt plasate în stocarea finală, din care, la rândul său, se vor desfășura analize, construirea de magazine de date și căutarea de informații despre afaceri. Într-un astfel de sistem, fără a verifica funcțional funcționarea proceselor ETL, ne concentrăm pe calitatea datelor înainte și după transformări, precum și pe rezultatul către analiză.

Pentru a rezuma cele de mai sus, indiferent de locurile în care am lucrat, oriunde am fost implicat în proiecte Data care împărtășeau următoarele caracteristici:

  • Numai prin automatizare puteți testa unele cazuri și puteți obține un ciclu de lansare acceptabil pentru afacere.
  • Un tester la un astfel de proiect este unul dintre cei mai respectați membri ai echipei, deoarece aduce mari beneficii fiecăruia dintre participanți (accelerarea testării, date bune de la Data Scientist, identificarea defectelor în stadiile incipiente).
  • Nu contează dacă lucrați pe propriul hardware sau în cloud - toate resursele sunt abstracte într-un cluster precum Hortonworks, Cloudera, Mesos, Kubernetes etc.
  • Proiectele sunt construite pe o abordare cu microservicii, predominând calculul distribuit și paralel.

Aș dori să remarc că atunci când face testare în domeniul calității datelor, un specialist în testare își mută concentrarea profesională către codul produsului și instrumentele utilizate.

Caracteristici distinctive ale testării calității datelor

În plus, pentru mine, am identificat următoarele (voi face imediat o rezervă că sunt FOARTE generalizate și exclusiv subiective) caracteristici distinctive ale testării în proiecte (sisteme) Data (Big Data) și alte domenii:

Tester de date mari și mici: tendințe, teorie, povestea mea

Link-uri utile

  1. Teorie: DAMA-DMBOK: Corpul de cunoștințe privind managementul datelor: ediția a 2-a.
  2. Centru de instruire EPAM 
  3. Materiale recomandate pentru un inginer începător pentru calitatea datelor:
    1. Curs gratuit despre Stepik: Introducere în baze de date
    2. Curs pe LinkedIn Learning: Fundamentele științei datelor: Ingineria datelor.
    3. Articole:
    4. video:

Concluzie

Calitatea datelor este o direcție foarte tânără promițătoare, a face parte din care înseamnă a fi parte dintr-un startup. Odată ajuns în Data Quality, veți fi cufundat într-un număr mare de tehnologii moderne, la cerere, dar cel mai important, se vor deschide oportunități enorme pentru a vă genera și implementa ideile. Veți putea folosi abordarea de îmbunătățire continuă nu numai pe proiect, ci și pentru dvs., dezvoltându-vă continuu ca specialist.

Sursa: www.habr.com

Adauga un comentariu