Tester di big e small data: trend, teoria, la mia storia

Ciao a tutti, mi chiamo Alexander e sono un ingegnere della qualità dei dati che controlla la qualità dei dati. In questo articolo parleremo di come sono arrivato a questo e perché nel 2020 quest’area di test era sulla cresta dell’onda.

Tester di big e small data: trend, teoria, la mia storia

Tendenza globale

Il mondo di oggi sta vivendo un'altra rivoluzione tecnologica, un aspetto della quale è l'utilizzo dei dati accumulati da parte di tutti i tipi di aziende per promuovere il proprio volano di vendite, profitti e PR. Sembra che la presenza di dati di buona qualità, così come di cervelli qualificati che possono trarne profitto (elaborarli, visualizzarli correttamente, costruire modelli di apprendimento automatico, ecc.), sia diventata la chiave del successo per molti oggi. Se 15-20 anni fa le grandi aziende erano principalmente coinvolte in un intenso lavoro di accumulo e monetizzazione dei dati, oggi questo è il destino di quasi tutte le persone sane di mente.

A questo proposito, diversi anni fa, tutti i portali dedicati alla ricerca di lavoro in tutto il mondo iniziarono a riempirsi di posti vacanti per Data Scientist, poiché tutti erano sicuri che, avendo assunto uno specialista del genere, sarebbe stato possibile costruire un top model di machine learning , prevedere il futuro e compiere un “salto di qualità” per l’azienda. Nel corso del tempo, le persone si sono rese conto che questo approccio non funziona quasi mai da nessuna parte, poiché non tutti i dati che cadono nelle mani di tali specialisti sono adatti ai modelli di formazione.

E sono iniziate le richieste dei Data Scientist: “Compriamo più dati da questi e da quelli...”, “Non abbiamo abbastanza dati...”, “Abbiamo bisogno di altri dati, preferibilmente di alta qualità...” . Sulla base di queste richieste si sono cominciate a costruire numerose interazioni tra aziende che possiedono l'uno o l'altro set di dati. Naturalmente, ciò ha richiesto l'organizzazione tecnica di questo processo: connettersi alla fonte dati, scaricarlo, verificare che fosse caricato completamente, ecc. Il numero di tali processi ha cominciato a crescere e oggi abbiamo un enorme bisogno di un altro tipo di specialisti - ingegneri della qualità dei dati - coloro che monitorano il flusso di dati nel sistema (pipeline di dati), la qualità dei dati in ingresso e in uscita e traggono conclusioni sulla loro sufficienza, integrità e altre caratteristiche.

La tendenza per gli ingegneri della qualità dei dati ci è arrivata dagli Stati Uniti, dove, nel mezzo della furiosa era del capitalismo, nessuno è pronto a perdere la battaglia per i dati. Di seguito ho fornito screenshot di due dei siti di ricerca di lavoro più popolari negli Stati Uniti: www.mostro.com и www.dice.com — che visualizza i dati al 17 marzo 2020 sul numero di offerte di lavoro pubblicate pervenute utilizzando le parole chiave: Data Quality e Data Scientist.

www.mostro.com

Data Scientist – 21416 posti vacanti
Qualità dei dati – 41104 posti vacanti

Tester di big e small data: trend, teoria, la mia storia
Tester di big e small data: trend, teoria, la mia storia

www.dice.com

Data Scientist – 404 posti vacanti
Qualità dei dati: posti vacanti 2020

Tester di big e small data: trend, teoria, la mia storia
Tester di big e small data: trend, teoria, la mia storia

Ovviamente queste professioni non sono in alcun modo in competizione tra loro. Con degli screenshot volevo solo illustrare la situazione attuale del mercato del lavoro in termini di richieste di ingegneri di Data Quality, di cui ora sono necessari molti di più rispetto ai Data Scientist.

Nel giugno 2019, EPAM, rispondendo alle esigenze del moderno mercato IT, ha separato la qualità dei dati in una pratica separata. Gli ingegneri della Data Quality, nel corso del loro lavoro quotidiano, gestiscono i dati, ne controllano il comportamento in nuove condizioni e sistemi, monitorano la rilevanza dei dati, la loro sufficienza e pertinenza. Con tutto ciò, in senso pratico, gli ingegneri della Data Quality dedicano davvero poco tempo ai classici test funzionali, MA questo dipende molto dal progetto (di seguito farò un esempio).

Le responsabilità di un ingegnere della qualità dei dati non si limitano solo ai controlli manuali/automatici di routine per "nulli, conteggi e somme" nelle tabelle del database, ma richiedono una profonda comprensione delle esigenze aziendali del cliente e, di conseguenza, la capacità di trasformare i dati disponibili in informazioni commerciali utili.

Teoria della qualità dei dati

Tester di big e small data: trend, teoria, la mia storia

Per immaginare più pienamente il ruolo di un tale ingegnere, scopriamo cos'è in teoria la qualità dei dati.

Qualità dei dati — una delle fasi del Data Management (un intero mondo che ti lasceremo studiare da solo) e si occupa di analizzare i dati secondo i seguenti criteri:

Tester di big e small data: trend, teoria, la mia storia
Penso che non sia necessario decifrare ciascuno dei punti (in teoria si chiamano “dimensioni dei dati”), sono abbastanza ben descritti nell'immagine. Ma il processo di test in sé non implica copiare rigorosamente queste funzionalità nei casi di test e controllarle. Nella Data Quality, come in qualsiasi altro tipo di test, è necessario, innanzitutto, basarsi sui requisiti di qualità dei dati concordati con i partecipanti al progetto che prendono le decisioni aziendali.

A seconda del progetto Data Quality, un ingegnere può svolgere diverse funzioni: da un normale tester di automazione con una valutazione superficiale della qualità dei dati, a una persona che effettua una profilazione profonda dei dati secondo i criteri sopra indicati.

Una descrizione molto dettagliata della Gestione dei Dati, della Qualità dei Dati e dei processi correlati è ben descritta nel libro intitolato "DAMA-DMBOK: Corpo di conoscenza sulla gestione dei dati: 2a edizione". Consiglio vivamente questo libro come introduzione a questo argomento (troverai un collegamento alla fine dell'articolo).

La mia storia

Nel settore IT, sono passato da tester junior in aziende di prodotto a Lead Data Quality Engineer presso EPAM. Dopo circa due anni di lavoro come tester, ero fermamente convinto di aver eseguito assolutamente tutti i tipi di test: regressione, funzionale, stress, stabilità, sicurezza, UI, ecc. - e di aver provato un gran numero di strumenti di test, avendo ha lavorato contemporaneamente in tre linguaggi di programmazione: Java, Scala, Python.

Guardando indietro, capisco perché le mie competenze erano così diversificate: ero coinvolto in progetti basati sui dati, grandi e piccoli. Questo è ciò che mi ha portato in un mondo ricco di strumenti e opportunità di crescita.

Per apprezzare la varietà di strumenti e opportunità per acquisire nuove conoscenze e competenze, basta guardare l’immagine qui sotto, che mostra quelli più diffusi nel mondo “Data & AI”.

Tester di big e small data: trend, teoria, la mia storia
Questo tipo di illustrazione viene compilata ogni anno da uno dei famosi venture capitalist Matt Turck, che proviene dallo sviluppo di software. Qui collegamento al suo blog e società di capitale di rischio, dove lavora come socio.

Sono cresciuto professionalmente particolarmente rapidamente quando ero l'unico tester del progetto, o almeno all'inizio del progetto. È in un momento del genere che devi essere responsabile dell'intero processo di test e non hai la possibilità di ritirarti, ma solo di andare avanti. All'inizio era spaventoso, ma ora mi sono evidenti tutti i vantaggi di un test del genere:

  • Inizi a comunicare con l'intero team come mai prima d'ora, poiché non esiste alcun proxy per la comunicazione: né il test manager né gli altri tester.
  • L'immersione nel progetto diventa incredibilmente profonda e si hanno informazioni su tutti i componenti, sia in generale che in dettaglio.
  • Gli sviluppatori non ti vedono come "quel ragazzo dei test che non sa cosa sta facendo", ma piuttosto come un pari che produce incredibili benefici per il team con i suoi test automatizzati e l'anticipazione dei bug che appaiono in un componente specifico del software. Prodotto.
  • Di conseguenza, sei più efficace, più qualificato e più richiesto.

Man mano che il progetto cresceva, nel 100% dei casi sono diventato mentore di nuovi tester, insegnando loro e trasmettendo loro le conoscenze che avevo appreso io stesso. Allo stesso tempo, a seconda del progetto, non sempre ricevevo dal management specialisti di test automatici di altissimo livello e c'era la necessità di formarli sull'automazione (per chi fosse interessato) o di creare strumenti da utilizzare nelle attività quotidiane (strumenti per generare dati e caricarli nel sistema, uno strumento per eseguire test di carico/test di stabilità “rapidamente”, ecc.).

Esempio di un progetto specifico

Purtroppo, a causa degli obblighi di non divulgazione, non posso parlare in dettaglio dei progetti su cui ho lavorato, ma fornirò esempi di compiti tipici di un Data Quality Engineer su uno dei progetti.

L'essenza del progetto è implementare una piattaforma per la preparazione dei dati per l'addestramento di modelli di apprendimento automatico basati su di essa. Il cliente era una grande azienda farmaceutica degli Stati Uniti. Tecnicamente era un ammasso kubernetes, salendo a AWS EC2 istanze, con diversi microservizi e il progetto Open Source sottostante di EPAM - Legione, adattato alle esigenze di uno specifico cliente (ora il progetto è rinato odahu). I processi ETL sono stati organizzati utilizzando Flusso d'aria Apache e spostato i dati da SalesForce sistemi del cliente in AWS S3 Secchi. Successivamente, sulla piattaforma è stata distribuita un'immagine Docker di un modello di machine learning, che è stata addestrata su nuovi dati e, utilizzando l'interfaccia API REST, ha prodotto previsioni di interesse per l'azienda e ha risolto problemi specifici.

Visivamente, tutto assomigliava a questo:

Tester di big e small data: trend, teoria, la mia storia
Sono stati effettuati numerosi test funzionali su questo progetto e, data la velocità di sviluppo delle funzionalità e la necessità di mantenere il ritmo del ciclo di rilascio (sprint di due settimane), è stato necessario pensare immediatamente all'automazione dei test dei componenti più critici di il sistema. La maggior parte della stessa piattaforma basata su Kubernetes era coperta da test automatici implementati in Struttura del robot + Python, ma era anche necessario supportarli ed espanderli. Inoltre, per comodità del cliente, è stata creata una GUI per gestire i modelli di machine learning distribuiti nel cluster, nonché la possibilità di specificare dove e dove i dati devono essere trasferiti per l'addestramento dei modelli. Questa ampia aggiunta ha comportato un'espansione dei test funzionali automatizzati, che è stata eseguita principalmente tramite chiamate API REST e un numero limitato di test dell'interfaccia utente end-2-end. Intorno all'equatore di tutto questo movimento, siamo stati raggiunti da un tester manuale che ha svolto un ottimo lavoro testando l'accettazione delle versioni del prodotto e comunicando con il cliente in merito all'accettazione della versione successiva. Inoltre, grazie all’arrivo di un nuovo specialista, abbiamo potuto documentare il nostro lavoro e aggiungere diversi controlli manuali molto importanti e difficilmente automatizzabili da subito.

Infine, dopo aver ottenuto la stabilità della piattaforma e del componente aggiuntivo GUI su di essa, abbiamo iniziato a creare pipeline ETL utilizzando i DAG Apache Airflow. Il controllo automatizzato della qualità dei dati è stato effettuato scrivendo speciali DAG Airflow che controllavano i dati in base ai risultati del processo ETL. Nell'ambito di questo progetto, siamo stati fortunati e il cliente ci ha dato accesso a set di dati anonimizzati su cui abbiamo testato. Abbiamo controllato i dati riga per riga per verificarne la conformità con i tipi, la presenza di dati interrotti, il numero totale di record prima e dopo, il confronto delle trasformazioni effettuate dal processo ETL per l'aggregazione, la modifica dei nomi delle colonne e altre cose. Inoltre, questi controlli sono stati scalati su diverse fonti di dati, ad esempio, oltre a SalesForce, anche a MySQL.

I controlli finali sulla qualità dei dati sono stati effettuati già al livello S3, dove sono stati archiviati ed erano pronti per l'uso per l'addestramento dei modelli di machine learning. Per ottenere i dati dal file CSV finale situato sul bucket S3 e convalidarlo, è stato scritto il codice utilizzando client boto3.

Il cliente richiedeva inoltre di archiviare parte dei dati in un bucket S3 e parte in un altro. Ciò ha richiesto anche la scrittura di ulteriori controlli per verificare l'affidabilità di tale ordinamento.

Esperienza generalizzata da altri progetti

Un esempio dell'elenco più generale delle attività di un ingegnere della qualità dei dati:

  • Preparare i dati del test (valido non valido grande piccolo) tramite uno strumento automatizzato.
  • Carica il set di dati preparato nella fonte originale e verifica che sia pronto per l'uso.
  • Avviare processi ETL per elaborare una serie di dati dallo storage di origine allo storage finale o intermedio utilizzando un determinato insieme di impostazioni (se possibile, impostare parametri configurabili per l'attività ETL).
  • Verificare la qualità e la conformità dei dati elaborati dal processo ETL con i requisiti aziendali.

Allo stesso tempo, il focus principale dei controlli dovrebbe essere non solo sul fatto che il flusso di dati nel sistema, in linea di principio, abbia funzionato e raggiunto il completamento (che fa parte del test funzionale), ma soprattutto sul controllo e sulla convalida dei dati per rispetto dei requisiti attesi, individuazione anomalie e altro.

Strumenti

Una delle tecniche per tale controllo dei dati può essere l'organizzazione di controlli a catena in ogni fase dell'elaborazione dei dati, la cosiddetta "catena dei dati" in letteratura - controllo dei dati dalla fonte al punto di utilizzo finale. Questi tipi di controlli vengono spesso implementati scrivendo query SQL di controllo. È chiaro che tali query dovrebbero essere il più leggere possibile e verificare la qualità dei singoli dati (metadati delle tabelle, righe vuote, NULL, errori di sintassi - altri attributi richiesti per il controllo).

Nel caso del test di regressione, che utilizza set di dati già pronti (immutabili, leggermente modificabili), il codice di autotest può memorizzare modelli già pronti per verificare la conformità dei dati con la qualità (descrizioni dei metadati previsti della tabella; oggetti campione di riga che possono essere selezionati casualmente durante il test, ecc.).

Inoltre, durante i test, devi scrivere processi di test ETL utilizzando framework come Apache Airflow, Apache Spark o anche uno strumento di tipo cloud a scatola nera Preparazione dati GCP, Flusso di dati GCP E così via. Questa circostanza costringe l'ingegnere di test a immergersi nei principi di funzionamento degli strumenti di cui sopra e in modo ancora più efficace sia a condurre test funzionali (ad esempio, processi ETL esistenti su un progetto) sia a utilizzarli per verificare i dati. In particolare, Apache Airflow dispone di operatori già pronti per lavorare, ad esempio, con i database analitici più diffusi BigQuery di GCP. L'esempio più elementare del suo utilizzo è già stato delineato qui, quindi non mi ripeterò.

A parte le soluzioni già pronte, nessuno ti vieta di implementare le tue tecniche e i tuoi strumenti. Ciò sarà vantaggioso non solo per il progetto, ma anche per lo stesso Data Quality Engineer, che migliorerà così i suoi orizzonti tecnici e le sue capacità di codifica.

Come funziona su un progetto reale

Un buon esempio degli ultimi paragrafi sulla “catena dei dati”, sull’ETL e sui controlli onnipresenti è il seguente processo tratto da uno dei progetti reali:

Tester di big e small data: trend, teoria, la mia storia

Qui vari dati (naturalmente preparati da noi) entrano nel “imbuto” di input del nostro sistema: validi, non validi, misti, ecc., poi vengono filtrati e finiscono in un deposito intermedio, poi subiscono nuovamente una serie di trasformazioni e vengono inseriti nell'archivio finale, da cui, a loro volta, verranno eseguite analisi, creazione di data mart e ricerca di approfondimenti aziendali. In un tale sistema, senza controllare funzionalmente il funzionamento dei processi ETL, ci concentriamo sulla qualità dei dati prima e dopo le trasformazioni, nonché sull'output per l'analisi.

Per riassumere quanto sopra, indipendentemente dai luoghi in cui ho lavorato, ovunque sono stato coinvolto in progetti Data che condividevano le seguenti caratteristiche:

  • Solo attraverso l'automazione è possibile testare alcuni casi e ottenere un ciclo di rilascio accettabile per l'azienda.
  • Un tester di un progetto di questo tipo è uno dei membri più rispettati del team, poiché apporta grandi vantaggi a ciascuno dei partecipanti (accelerazione dei test, buoni dati dal Data Scientist, identificazione dei difetti nelle fasi iniziali).
  • Non importa se lavori sul tuo hardware o nei cloud: tutte le risorse vengono astratte in un cluster come Hortonworks, Cloudera, Mesos, Kubernetes, ecc.
  • I progetti si basano su un approccio di microservizi, predominano il calcolo distribuito e parallelo.

Vorrei sottolineare che quando si eseguono test nel campo della qualità dei dati, uno specialista di test sposta la sua attenzione professionale sul codice del prodotto e sugli strumenti utilizzati.

Caratteristiche distintive del test di Data Quality

Inoltre, per quanto mi riguarda, ho identificato le seguenti caratteristiche distintive (farò subito una riserva che sono MOLTO generalizzate ed esclusivamente soggettive) dei test nei progetti (sistemi) di dati (Big Data) e in altre aree:

Tester di big e small data: trend, teoria, la mia storia

Link utili

  1. Teoria: DAMA-DMBOK: Corpo di conoscenza sulla gestione dei dati: 2a edizione.
  2. Centro di addestramento EPAM 
  3. Materiali consigliati per un ingegnere della qualità dei dati alle prime armi:
    1. Corso gratuito su Stepik: Introduzione alle basi di dati
    2. Corso su LinkedIn Learning: Fondamenti di scienza dei dati: ingegneria dei dati.
    3. Articolo:
    4. Video:

conclusione

Qualità dei dati è una direzione molto giovane e promettente, farne parte significa far parte di una startup. Una volta entrato in Data Quality, sarai immerso in un gran numero di tecnologie moderne e molto richieste, ma, soprattutto, ti si apriranno enormi opportunità per generare e implementare le tue idee. Sarai in grado di utilizzare l'approccio del miglioramento continuo non solo sul progetto, ma anche per te stesso, sviluppandoti continuamente come specialista.

Fonte: habr.com

Aggiungi un commento