Malaki at maliit na data tester: mga uso, teorya, aking kuwento

Kumusta sa lahat, ang pangalan ko ay Alexander, at ako ay isang inhinyero ng Kalidad ng Data na nagsusuri ng data para sa kalidad nito. Tatalakayin ng artikulong ito kung paano ako nakarating dito at kung bakit noong 2020 ang lugar na ito ng pagsubok ay nasa tuktok ng isang alon.

Malaki at maliit na data tester: mga uso, teorya, aking kuwento

Global trend

Ang mundo ngayon ay nakakaranas ng isa pang teknolohikal na rebolusyon, isang aspeto nito ay ang paggamit ng naipon na data ng lahat ng uri ng mga kumpanya upang i-promote ang kanilang sariling flywheel ng mga benta, kita at PR. Tila ang pagkakaroon ng magandang (kalidad) na data, pati na rin ang mga bihasang utak na maaaring kumita ng pera mula dito (tama ang proseso, pag-visualize, pagbuo ng mga modelo ng machine learning, atbp.), ay naging susi sa tagumpay para sa marami ngayon. Kung 15-20 taon na ang nakalipas malalaking kumpanya ay pangunahing kasangkot sa masinsinang trabaho na may akumulasyon ng data at monetization, ngayon ito ang kalagayan ng halos lahat ng matinong tao.

Kaugnay nito, ilang taon na ang nakalilipas, ang lahat ng mga portal na nakatuon sa paghahanap ng trabaho sa buong mundo ay nagsimulang mapuno ng mga bakante para sa Data Scientist, dahil ang lahat ay sigurado na, sa pagkuha ng naturang espesyalista, posible na bumuo ng isang supermodel ng machine learning , hulaan ang hinaharap at magsagawa ng "quantum leap" para sa kumpanya. Sa paglipas ng panahon, napagtanto ng mga tao na ang diskarte na ito ay halos hindi gumagana kahit saan, dahil hindi lahat ng data na nahuhulog sa mga kamay ng naturang mga espesyalista ay angkop para sa mga modelo ng pagsasanay.

At nagsimula ang mga kahilingan mula sa Data Scientists: β€œBumili tayo ng higit pang data mula sa mga ito at sa mga iyon...”, β€œWala kaming sapat na data...”, β€œKailangan namin ng higit pang data, mas mabuti ang mataas na kalidad...” . Batay sa mga kahilingang ito, maraming pakikipag-ugnayan ang nagsimulang mabuo sa pagitan ng mga kumpanyang nagmamay-ari ng isa o isa pang hanay ng data. Naturally, kailangan nito ang teknikal na organisasyon ng prosesong ito - pagkonekta sa pinagmumulan ng data, pag-download nito, pagsuri na ito ay na-load nang buo, atbp. Ang bilang ng mga naturang proseso ay nagsimulang lumaki, at ngayon ay mayroon tayong malaking pangangailangan para sa isa pang uri ng mga espesyalista - Mga inhinyero ng Kalidad ng Data - yaong susubaybay sa daloy ng data sa system (mga pipeline ng data), ang kalidad ng data sa input at output, at gumawa ng mga konklusyon tungkol sa kanilang kasapatan, integridad at iba pang mga katangian.

Ang trend para sa mga inhinyero ng Kalidad ng Data ay dumating sa amin mula sa USA, kung saan, sa gitna ng nagngangalit na panahon ng kapitalismo, walang sinuman ang handang matalo sa labanan para sa data. Sa ibaba ay nagbigay ako ng mga screenshot mula sa dalawa sa pinakasikat na mga site sa paghahanap ng trabaho sa US: www.monster.com ΠΈ www.dice.com β€” na nagpapakita ng data noong Marso 17, 2020 sa bilang ng mga naka-post na bakante na natanggap gamit ang mga keyword: Kalidad ng Data at Data Scientist.

www.monster.com

Mga Data Scientist – 21416 na bakante
Kalidad ng Data – 41104 na bakante

Malaki at maliit na data tester: mga uso, teorya, aking kuwento
Malaki at maliit na data tester: mga uso, teorya, aking kuwento

www.dice.com

Mga Data Scientist – 404 na bakante
Kalidad ng Data – 2020 na mga bakante

Malaki at maliit na data tester: mga uso, teorya, aking kuwento
Malaki at maliit na data tester: mga uso, teorya, aking kuwento

Malinaw, ang mga propesyon na ito ay hindi nakikipagkumpitensya sa isa't isa. Sa mga screenshot, gusto ko lang ilarawan ang kasalukuyang sitwasyon sa labor market sa mga tuntunin ng mga kahilingan para sa mga inhinyero ng Kalidad ng Data, kung saan mas kailangan ngayon kaysa sa Data Scientist.

Noong Hunyo 2019, ang EPAM, na tumutugon sa mga pangangailangan ng modernong IT market, ay pinaghiwalay ang Kalidad ng Data sa isang hiwalay na kasanayan. Ang mga inhinyero ng Kalidad ng Data, sa kurso ng kanilang pang-araw-araw na gawain, ay namamahala ng data, sinusuri ang pag-uugali nito sa mga bagong kundisyon at sistema, sinusubaybayan ang kaugnayan ng data, ang kasapatan at kaugnayan nito. Sa lahat ng ito, sa praktikal na kahulugan, ang mga inhinyero ng Kalidad ng Data ay talagang naglalaan ng kaunting oras sa klasikal na functional na pagsubok, NGUNIT ito ay lubos na nakasalalay sa proyekto (magbibigay ako ng isang halimbawa sa ibaba).

Ang mga responsibilidad ng isang inhinyero ng Kalidad ng Data ay hindi limitado lamang sa mga nakagawiang manu-manong/awtomatikong pagsusuri para sa "mga null, mga bilang at mga kabuuan" sa mga talahanayan ng database, ngunit nangangailangan ng malalim na pag-unawa sa mga pangangailangan ng negosyo ng customer at, nang naaayon, ang kakayahang baguhin ang magagamit na data sa kapaki-pakinabang na impormasyon sa negosyo.

Teorya ng Kalidad ng Data

Malaki at maliit na data tester: mga uso, teorya, aking kuwento

Upang mas lubos na maisip ang papel ng naturang engineer, alamin natin kung ano ang Data Quality sa teorya.

Kalidad ng Data β€” isa sa mga yugto ng Pamamahala ng Data (isang buong mundo na iiwan namin para pag-aralan mo nang mag-isa) at responsable para sa pagsusuri ng data ayon sa sumusunod na pamantayan:

Malaki at maliit na data tester: mga uso, teorya, aking kuwento
Sa palagay ko hindi na kailangang tukuyin ang bawat isa sa mga punto (sa teorya ay tinatawag silang "mga sukat ng data"), medyo mahusay na inilarawan ang mga ito sa larawan. Ngunit ang mismong proseso ng pagsubok ay hindi nagpapahiwatig ng mahigpit na pagkopya sa mga tampok na ito sa mga kaso ng pagsubok at pagsuri sa mga ito. Sa Kalidad ng Data, tulad ng sa anumang iba pang uri ng pagsubok, kinakailangan, una sa lahat, na buuin ang mga kinakailangan sa kalidad ng data na napagkasunduan sa mga kalahok ng proyekto na gumagawa ng mga desisyon sa negosyo.

Depende sa proyekto ng Data Quality, ang isang engineer ay maaaring magsagawa ng iba't ibang mga function: mula sa isang ordinaryong automation tester na may mababaw na pagtatasa ng kalidad ng data, hanggang sa isang tao na nagsasagawa ng malalim na pag-profile ng data ayon sa pamantayan sa itaas.

Ang isang napaka-detalyadong paglalarawan ng Pamamahala ng Data, Kalidad ng Data at mga kaugnay na proseso ay mahusay na inilarawan sa aklat na tinatawag "DAMA-DMBOK: Data Management Body of Knowledge: 2nd Edition". Lubos kong inirerekomenda ang aklat na ito bilang panimula sa paksang ito (makakakita ka ng link dito sa dulo ng artikulo).

Kwento ko

Sa industriya ng IT, gumawa ako ng paraan mula sa isang Junior tester sa mga kumpanya ng produkto patungo sa isang Lead Data Quality Engineer sa EPAM. Pagkatapos ng humigit-kumulang dalawang taon ng pagtatrabaho bilang isang tester, nagkaroon ako ng matatag na paniniwala na nagawa ko na ang lahat ng uri ng pagsubok: regression, functional, stress, stability, security, UI, atbp. - at sinubukan ang isang malaking bilang ng mga tool sa pagsubok, pagkakaroon sabay na nagtrabaho sa tatlong programming language: Java, Scala, Python.

Sa pagbabalik-tanaw, naiintindihan ko kung bakit iba-iba ang set ng aking kakayahanβ€”kasangkot ako sa mga proyektong batay sa data, malaki at maliit. Ito ang nagdala sa akin sa isang mundo ng maraming mga tool at pagkakataon para sa paglago.

Upang pahalagahan ang iba't ibang mga tool at pagkakataon upang makakuha ng bagong kaalaman at kasanayan, tingnan lamang ang larawan sa ibaba, na nagpapakita ng mga pinakasikat sa mundo ng "Data at AI".

Malaki at maliit na data tester: mga uso, teorya, aking kuwento
Ang ganitong uri ng paglalarawan ay pinagsama-sama taun-taon ng isa sa mga sikat na venture capitalist na si Matt Turck, na nagmula sa software development. Dito link sa kanyang blog at venture capital firm, kung saan siya nagtatrabaho bilang isang kasosyo.

Mabilis akong lumaki nang propesyonal lalo na noong ako lang ang nag-iisang tagasubok sa proyekto, o hindi bababa sa simula ng proyekto. Sa ganoong sandali kailangan mong maging responsable para sa buong proseso ng pagsubok, at wala kang pagkakataong umatras, pasulong lamang. Sa una ay nakakatakot, ngunit ngayon ang lahat ng mga pakinabang ng naturang pagsubok ay halata sa akin:

  • Magsisimula kang makipag-ugnayan sa buong team na hindi kailanman tulad ng dati, dahil walang proxy para sa komunikasyon: maging ang test manager o kapwa tester.
  • Ang pagsasawsaw sa proyekto ay nagiging hindi kapani-paniwalang malalim, at mayroon kang impormasyon tungkol sa lahat ng mga bahagi, sa pangkalahatan at sa detalye.
  • Hindi ka tinitingnan ng mga developer bilang "ang taong iyon mula sa pagsubok na hindi alam kung ano ang kanyang ginagawa," ngunit sa halip bilang isang kapantay na gumagawa ng hindi kapani-paniwalang mga benepisyo para sa koponan gamit ang kanyang mga awtomatikong pagsusuri at pag-asam ng mga bug na lilitaw sa isang partikular na bahagi ng produkto.
  • Bilang resulta, ikaw ay mas epektibo, mas kwalipikado, at mas in demand.

Habang lumalago ang proyekto, sa 100% ng mga kaso, naging mentor ako para sa mga bagong tester, tinuturuan sila at ipinapasa ang kaalaman na natutunan ko mismo. Kasabay nito, depende sa proyekto, hindi ako palaging nakakatanggap ng pinakamataas na antas ng mga auto testing specialist mula sa pamamahala at may pangangailangan na sanayin sila sa automation (para sa mga interesado) o lumikha ng mga tool para magamit sa pang-araw-araw na aktibidad (mga tool para sa pagbuo ng data at paglo-load nito sa system , isang tool para sa pagsasagawa ng load testing/stability testing "mabilis", atbp.).

Halimbawa ng isang partikular na proyekto

Sa kasamaang palad, dahil sa mga obligasyon sa hindi pagsisiwalat, hindi ako makakapag-usap nang detalyado tungkol sa mga proyekto kung saan ako nagtrabaho, ngunit magbibigay ako ng mga halimbawa ng mga karaniwang gawain ng isang Data Quality Engineer sa isa sa mga proyekto.

Ang kakanyahan ng proyekto ay upang ipatupad ang isang platform para sa paghahanda ng data para sa pagsasanay ng mga modelo ng machine learning batay dito. Ang customer ay isang malaking pharmaceutical company mula sa USA. Sa teknikal, ito ay isang kumpol Kubernetes, tumataas sa AWS EC2 mga pagkakataon, na may ilang mga microservice at ang pinagbabatayan na Open Source na proyekto ng EPAM - Lubhang marami, inangkop sa mga pangangailangan ng isang partikular na customer (ngayon ang proyekto ay isinilang na muli sa odahu). Ang mga proseso ng ETL ay inayos gamit ang apache airflow at inilipat ang data mula sa Salesforce mga sistema ng customer sa AWS S3 Mga balde. Susunod, isang Docker na imahe ng isang machine learning model ang na-deploy sa platform, na sinanay sa bagong data at, gamit ang REST API interface, gumawa ng mga hula na interesado sa negosyo at nalutas ang mga partikular na problema.

Biswal, ang lahat ay mukhang ganito:

Malaki at maliit na data tester: mga uso, teorya, aking kuwento
Nagkaroon ng maraming functional testing sa proyektong ito, at dahil sa bilis ng pag-develop ng feature at sa pangangailangang mapanatili ang bilis ng release cycle (dalawang linggong sprints), kinailangan agad na isipin ang tungkol sa pag-automate ng pagsubok sa mga pinaka-kritikal na bahagi ng ang sistema. Karamihan sa mismong platform na nakabase sa Kubernetes ay sakop ng mga autotest na ipinatupad sa Robot Framework + Python, ngunit kinakailangan din na suportahan at palawakin ang mga ito. Bilang karagdagan, para sa kaginhawahan ng customer, isang GUI ang ginawa upang pamahalaan ang mga modelo ng machine learning na naka-deploy sa cluster, pati na rin ang kakayahang tukuyin kung saan at saan kailangang ilipat ang data para sa pagsasanay sa mga modelo. Ang malawak na karagdagan na ito ay nangangailangan ng pagpapalawak ng automated functional na pagsubok, na kadalasang ginagawa sa pamamagitan ng REST API na mga tawag at isang maliit na bilang ng mga end-2-end na UI test. Sa paligid ng ekwador ng lahat ng kilusang ito, sinamahan kami ng isang manu-manong tester na gumawa ng mahusay na trabaho sa pagsubok sa pagtanggap ng mga bersyon ng produkto at pakikipag-ugnayan sa customer tungkol sa pagtanggap sa susunod na release. Bilang karagdagan, dahil sa pagdating ng isang bagong espesyalista, nagawa naming idokumento ang aming trabaho at magdagdag ng ilang napakahalagang manu-manong pagsusuri na mahirap i-automate kaagad.

At sa wakas, pagkatapos naming makamit ang katatagan mula sa platform at ang GUI add-on sa ibabaw nito, nagsimula kaming bumuo ng mga ETL pipeline gamit ang Apache Airflow DAGs. Ang awtomatikong pagsusuri sa kalidad ng data ay isinagawa sa pamamagitan ng pagsulat ng mga espesyal na Airflow DAG na nagsuri sa data batay sa mga resulta ng proseso ng ETL. Bilang bahagi ng proyektong ito, masuwerte kami at binigyan kami ng customer ng access sa mga hindi kilalang data set kung saan kami sumubok. Sinuri namin ang linya ng data ng linya para sa pagsunod sa mga uri, ang pagkakaroon ng sirang data, ang kabuuang bilang ng mga tala bago at pagkatapos, paghahambing ng mga pagbabagong ginawa ng proseso ng ETL para sa pagsasama-sama, pagpapalit ng mga pangalan ng column, at iba pang mga bagay. Bilang karagdagan, ang mga pagsusuring ito ay na-scale sa iba't ibang mga mapagkukunan ng data, halimbawa, bilang karagdagan sa SalesForce, pati na rin sa MySQL.

Ang mga panghuling pagsusuri sa kalidad ng data ay isinagawa na sa antas ng S3, kung saan sila ay nakaimbak at handa nang gamitin para sa pagsasanay ng mga modelo ng machine learning. Upang makakuha ng data mula sa huling CSV file na matatagpuan sa S3 Bucket at mapatunayan ito, isinulat ang code gamit ang mga kliyente ng boto3.

Nagkaroon din ng pangangailangan mula sa customer na mag-imbak ng bahagi ng data sa isang S3 Bucket at bahagi sa isa pa. Nangangailangan din ito ng pagsulat ng mga karagdagang tseke upang suriin ang pagiging maaasahan ng naturang pag-uuri.

Pangkalahatang karanasan mula sa iba pang mga proyekto

Isang halimbawa ng pinaka-pangkalahatang listahan ng mga aktibidad ng isang inhinyero ng Kalidad ng Data:

  • Maghanda ng data ng pagsubok (valid invalid large small) sa pamamagitan ng isang automated na tool.
  • I-upload ang inihandang set ng data sa orihinal na pinagmulan at tingnan kung handa na itong gamitin.
  • Ilunsad ang mga proseso ng ETL para sa pagproseso ng isang set ng data mula sa source storage hanggang sa final o intermediate na storage gamit ang isang partikular na hanay ng mga setting (kung maaari, itakda ang mga na-configure na parameter para sa ETL na gawain).
  • I-verify ang data na naproseso ng proseso ng ETL para sa kalidad nito at pagsunod sa mga kinakailangan ng negosyo.

Kasabay nito, ang pangunahing pokus ng mga pagsusuri ay dapat hindi lamang sa katotohanan na ang daloy ng data sa system ay, sa prinsipyo, ay nagtrabaho at umabot sa pagkumpleto (na bahagi ng functional testing), ngunit karamihan ay sa pagsuri at pagpapatunay ng data para sa pagsunod sa mga inaasahang kinakailangan, pagtukoy ng mga anomalya at iba pang bagay.

Tools

Ang isa sa mga diskarte para sa naturang kontrol ng data ay maaaring ang organisasyon ng mga pagsusuri sa chain sa bawat yugto ng pagproseso ng data, ang tinatawag na "data chain" sa panitikan - kontrol ng data mula sa pinagmulan hanggang sa punto ng huling paggamit. Ang mga uri ng pagsusuring ito ay kadalasang ipinapatupad sa pamamagitan ng pagsulat ng pagsuri sa mga query sa SQL. Malinaw na ang mga naturang query ay dapat kasing magaan hangga't maaari at suriin ang mga indibidwal na piraso ng kalidad ng data (metadata ng mga talahanayan, mga blangkong linya, NULL, Mga Error sa syntax - iba pang mga katangian na kinakailangan para sa pagsuri).

Sa kaso ng pagsubok ng regression, na gumagamit ng mga nakahanda na (hindi nababago, bahagyang nababago) na mga set ng data, ang autotest code ay maaaring mag-imbak ng mga yari na template para sa pagsusuri ng data para sa pagsunod sa kalidad (mga paglalarawan ng inaasahang metadata ng talahanayan; row sample na mga bagay na maaaring random na pinili sa panahon ng pagsusulit, atbp.).

Gayundin, sa panahon ng pagsubok, kailangan mong isulat ang mga proseso ng pagsubok sa ETL gamit ang mga balangkas tulad ng Apache Airflow, Apache Spark o kahit isang black-box cloud type tool GCP Dataprep, Daloy ng Data ng GCP At iba pa. Pinipilit ng sitwasyong ito ang test engineer na isawsaw ang kanyang sarili sa mga prinsipyo ng pagpapatakbo ng mga tool sa itaas at mas epektibong parehong nagsasagawa ng functional testing (halimbawa, mga kasalukuyang proseso ng ETL sa isang proyekto) at gamitin ang mga ito upang suriin ang data. Sa partikular, ang Apache Airflow ay may mga handa na operator para sa pagtatrabaho sa mga sikat na analytical database, halimbawa GCP BigQuery. Ang pinakapangunahing halimbawa ng paggamit nito ay nakabalangkas na dito, kaya hindi ko na uulitin ang sarili ko.

Bukod sa mga handa na solusyon, walang nagbabawal sa iyo na ipatupad ang iyong sariling mga diskarte at tool. Ito ay hindi lamang magiging kapaki-pakinabang para sa proyekto, kundi pati na rin para sa Data Quality Engineer mismo, na sa gayon ay mapapabuti ang kanyang mga teknikal na abot-tanaw at mga kasanayan sa coding.

Paano ito gumagana sa isang tunay na proyekto

Ang isang magandang paglalarawan ng mga huling talata tungkol sa "data chain", ETL at ubiquitous na mga pagsusuri ay ang sumusunod na proseso mula sa isa sa mga tunay na proyekto:

Malaki at maliit na data tester: mga uso, teorya, aking kuwento

Dito, ang iba't ibang data (natural, inihanda namin) ay pumapasok sa input na "funnel" ng aming system: wasto, di-wasto, halo-halong, atbp., pagkatapos ay sinasala ang mga ito at napupunta sa isang intermediate na imbakan, pagkatapos ay muli silang sumasailalim sa isang serye ng mga pagbabago. at inilalagay sa huling storage , kung saan, kung saan, isasagawa ang analytics, pagbuo ng mga data mart at paghahanap ng mga insight sa negosyo. Sa ganoong sistema, nang walang functionally na sinusuri ang pagpapatakbo ng mga proseso ng ETL, nakatuon kami sa kalidad ng data bago at pagkatapos ng mga pagbabagong-anyo, pati na rin sa output sa analytics.

Upang ibuod ang nasa itaas, anuman ang mga lugar kung saan ako nagtrabaho, saanman ako nasangkot sa mga proyekto ng Data na nagbahagi ng mga sumusunod na tampok:

  • Sa pamamagitan lamang ng automation maaari mong subukan ang ilang mga kaso at makamit ang isang ikot ng paglabas na katanggap-tanggap sa negosyo.
  • Ang isang tester sa naturang proyekto ay isa sa mga iginagalang na miyembro ng koponan, dahil nagdudulot ito ng malaking benepisyo sa bawat isa sa mga kalahok (pagpabilis ng pagsubok, magandang data mula sa Data Scientist, pagtukoy ng mga depekto sa mga unang yugto).
  • Hindi mahalaga kung nagtatrabaho ka sa iyong sariling hardware o sa cloud - lahat ng mga mapagkukunan ay na-abstract sa isang cluster gaya ng Hortonworks, Cloudera, Mesos, Kubernetes, atbp.
  • Ang mga proyekto ay binuo sa isang microservice na diskarte, ipinamahagi at parallel computing ang nangingibabaw.

Gusto kong tandaan na kapag gumagawa ng pagsubok sa larangan ng Data Quality, inililipat ng isang testing specialist ang kanyang propesyonal na pokus sa code ng produkto at sa mga tool na ginamit.

Mga natatanging tampok ng pagsubok sa Kalidad ng Data

Bilang karagdagan, para sa aking sarili, natukoy ko ang mga sumusunod (kaagad akong gagawa ng reserbasyon na ang mga ito ay VERY generalized at exclusively subjective) mga natatanging tampok ng pagsubok sa Data (Big Data) na mga proyekto (systems) at iba pang mga lugar:

Malaki at maliit na data tester: mga uso, teorya, aking kuwento

Kapaki-pakinabang na mga link

  1. Teorya: DAMA-DMBOK: Data Management Body of Knowledge: 2nd Edition.
  2. Sentro ng pagsasanay EPAM 
  3. Mga inirerekomendang materyales para sa isang nagsisimulang Data Quality engineer:
    1. Libreng kurso sa Stepik: Panimula sa mga database
    2. Kurso sa LinkedIn Learning: Mga Pundasyon sa Data Science: Data Engineering.
    3. artikulo:
    4. Video:

Konklusyon

Kalidad ng Data ay isang napakabata na pangakong direksyon, na maging bahagi nito na nangangahulugan na maging bahagi ng isang startup. Kapag nasa Kalidad na ng Data, mahuhulog ka sa isang malaking bilang ng mga modernong, in-demand na teknolohiya, ngunit higit sa lahat, magbubukas ang napakalaking pagkakataon para sa iyo na bumuo at maipatupad ang iyong mga ideya. Magagawa mong gamitin ang patuloy na diskarte sa pagpapabuti hindi lamang sa proyekto, kundi pati na rin para sa iyong sarili, na patuloy na umuunlad bilang isang espesyalista.

Pinagmulan: www.habr.com

Magdagdag ng komento