Tester für große und kleine Daten: Trends, Theorie, meine Geschichte

Hallo zusammen, ich bin Alexander, und ich bin Data Quality Engineer, der sich mit der Überprüfung der Datenqualität beschäftigt. In diesem Artikel geht es darum, wie ich dazu gekommen bin und warum dieses Testfeld im Jahr 2020 auf der Höhe seines Trends war.

Tester für große und kleine Daten: Trends, Theorie, meine Geschichte

Weltweiter Trend

Die heutige Welt erlebt eine weitere technologische Revolution, von deren Aspekten die Nutzung gesammelter Daten durch Unternehmen zur Förderung ihres Verkaufs-, Gewinn- und PR-Motors gehört. Es scheint, dass die Verfügbarkeit guter (qualitativer) Daten sowie fähiger Köpfe, die daraus Geld machen können (sie richtig bearbeiten, visualisieren, Modelle für maschinelles Lernen entwickeln usw.), heute der Schlüssel zum Erfolg für viele ist. Wenn vor 15-20 Jahren hauptsächlich große Unternehmen mit der Datensammlung und deren Monetarisierung beschäftigt waren, ist dies heute das Anliegen praktisch aller vernünftigen Unternehmen.

In diesem Zusammenhang füllten vor einigen Jahren alle Jobportale weltweit ihre Stellenangebote mit Data Scientists, da alle überzeugt waren, dass sie mit einem solchen Spezialisten im Team ein Supermodell für maschinelles Lernen aufbauen, die Zukunft vorhersagen und einen "quantensprung" für das Unternehmen vollziehen könnten. Im Laufe der Zeit erkannten die Leute, dass dieser Ansatz fast nirgendwo funktioniert, da längst nicht alle Daten, die in die Hände solcher Spezialisten gelangen, zum Training von Modellen geeignet sind.

Und es begannen die Anfragen der Data Scientists: "Lasst uns noch Daten von den und den kaufen...", "Uns fehlen die Daten...", "Wir brauchen noch etwas mehr Daten, und sie sollten idealerweise von guter Qualität sein...". Basierend auf diesen Anfragen entstanden zahlreiche Interaktionen zwischen Unternehmen, die über bestimmte Datensätze verfügen. Natürlich erforderte dies die technische Organisation dieses Prozesses — sich mit der Datenquelle zu verbinden, sie herunterzuladen, zu überprüfen, ob sie vollständig geladen wurden usw. Die Anzahl solcher Prozesse nahm zu, und heute haben wir einen enormen Bedarf an anderen Spezialisten — Data Quality Engineers — die den Datenfluss im System (Datenpipelines), die Datenqualität am Eingang und Ausgang überwachen, Rückschlüsse auf deren ausreichende Menge, Integrität und andere Eigenschaften ziehen.

Der Trend zu Data Quality Ingenieuren kam zu uns aus den USA, wo in der Blütezeit des Kapitalismus niemand bereit ist, die Datenbattle zu verlieren. Unten habe ich Screenshots von zwei der beliebtesten Jobportale in den USA dargestellt: www.monster.com und www.dice.com — auf denen die Daten zum Stand vom 17. März 2020 über die Anzahl der veröffentlichten Stellenangebote, erhalten durch die Schlüsselwörter: Data Quality und Data Scientist, angezeigt werden.

www.monster.com

Data Scientists – 21416 Stellenangebote
Data Quality – 41104 Stellenangebote

Tester für große und kleine Daten: Trends, Theorie, meine Geschichte
Tester für große und kleine Daten: Trends, Theorie, meine Geschichte

www.dice.com

Data Scientists – 404 Stellenangebote
Data Quality – 2020 Stellenangebote

Tester für große und kleine Daten: Trends, Theorie, meine Geschichte
Tester für große und kleine Daten: Trends, Theorie, meine Geschichte

Es ist offensichtlich, dass diese Berufe keineswegs miteinander konkurrieren. Mit den Screenshots wollte ich lediglich die aktuelle Situation auf dem Arbeitsmarkt bezüglich der Nachfrage nach Data Quality Ingenieuren veranschaulichen, die jetzt deutlich mehr benötigt werden als Data Scientists.

Im Juni 2019 hat EPAM auf die Bedürfnisse des modernen IT-Marktes reagiert und die Data Quality Sparte zu einer eigenständigen Praxis gemacht. Data Quality Ingenieure verwalten im Rahmen ihrer täglichen Arbeit Daten, prüfen deren Verhalten in neuen Bedingungen und Systemen und überwachen die Relevanz, Angemessenheit und Aktualität der Daten. Dabei widmen Data Quality Ingenieure in der praktischen Realität tatsächlich wenig Zeit klassischen funktionalen Tests, ABER das hängt stark vom Projekt ab (ein Beispiel werde ich später anführen).

Die Aufgaben eines Data Quality Ingenieurs beschränken sich nicht nur auf routinemäßige manuelle/automatisierte Prüfungen auf „nulls, count und sums“ in Datenbanktabellen, sondern erfordern ein tiefes Verständnis der Geschäftsanliegen des Kunden und entsprechend die Fähigkeit, die vorliegenden Daten in verwertbare Geschäftsinformationen zu transformieren.

Theorie der Data Quality

Tester für große und kleine Daten: Trends, Theorie, meine Geschichte

Um die Rolle eines solchen Ingenieurs umfassend zu begreifen, lassen Sie uns klären, was Data Quality in der Theorie bedeutet.

Data Quality ist ein Teilbereich des Data Managements (eine ganze Welt, die wir Ihnen zur selbstständigen Erkundung überlassen) und ist verantwortlich für die Datenanalyse nach folgenden Kriterien:

Tester für große und kleine Daten: Trends, Theorie, meine Geschichte
Ich denke, es ist nicht notwendig, jeden der Punkte (theoretisch als „data dimensions“ bezeichnet) zu entschlüsseln, sie sind auf dem Bild recht gut beschrieben. Der Testprozess selbst erfordert jedoch nicht, dass diese Merkmale strikt in Testfällen kopiert und überprüft werden. In der Datenqualität, wie bei jeder anderen Art von Tests, sollte man sich in erster Linie an den mit den Projektbeteiligten, die Geschäftsentscheidungen treffen, vereinbarten Anforderungen an die Datenqualität orientieren.

Je nach Projekt kann ein Data Quality Engineer unterschiedliche Funktionen ausüben: von einem einfachen Tester mit automatisiertem Testen und oberflächlicher Bewertung der Datenqualität bis hin zu einer Person, die eine tiefgehende Profilierung nach den oben genannten Merkmalen durchführt.

Eine sehr detaillierte Beschreibung der Prozesse im Datenmanagement, der Datenqualität und verwandter Themen ist in einem Buch mit dem Titel „DAMA-DMBOK: Data Management Body of Knowledge: 2nd Edition“. Ich empfehle dieses Buch sehr als Einführung in dieses Thema (einen Link dazu finden Sie am Ende des Artikels).

Meine Geschichte

In der IT-Branche habe ich den Weg vom Junior Tester in Produktunternehmen bis zum Lead Data Quality Engineer bei EPAM eingeschlagen. Bereits nach etwa zwei Jahren als Tester war ich fest davon überzeugt, dass ich alle Arten von Tests durchgeführt habe: Regressionstests, Funktionstests, Stresstests, Stabilitätstests, Sicherheitstests, UI usw. — und ich habe eine große Anzahl von Testtools ausprobiert und dabei in drei Programmiersprachen gearbeitet: Java, Scala, Python.

Wenn ich zurückblicke, verstehe ich, warum mein Set an beruflichen Fähigkeiten so vielfältig geworden ist – ich war an Projekten beteiligt, die mit großen und kleinen Daten zu tun hatten. Genau das hat mich in die Welt zahlreicher Werkzeuge und Wachstumschancen gebracht.

Um die Vielfalt an Werkzeugen und Möglichkeiten zur Erlangung neuer Kenntnisse und Fähigkeiten zu schätzen, genügt ein Blick auf das folgende Bild, das die bekanntesten davon aus der Welt von „Data & AI“ zeigt.

Tester für große und kleine Daten: Trends, Theorie, meine Geschichte
Solche Illustrationen werden jährlich von einem der bekannten Venture Capitalists, Matt Turck, einem ehemaligen Softwareentwickler, erstellt. Hier ist Link sein Blog und die Venture Capital Firma, in der er als Partner arbeitet.

Ich bin besonders schnell professionell gewachsen, als ich der einzige Tester im Projekt war, oder zumindest am Anfang des Projekts. In einem solchen Moment bist du für den gesamten Testprozess verantwortlich und hast keine Möglichkeit, zurückzutreten, nur nach vorne. Zu Beginn machte mir das Angst, aber jetzt sind mir alle Vorteile dieser Erfahrung offensichtlich.

  • Du beginnst, wie nie zuvor mit dem gesamten Team zu kommunizieren, da es keinen Proxy für die Kommunikation gibt: keinen Testmanager, keine Testkollegen.
  • Das Eintauchen in das Projekt wird unglaublich tief, und du hast Informationen über alle Komponenten sowohl im Allgemeinen als auch im Detail.
  • Die Entwickler sehen dich nicht als "den Kerl aus dem Testing, der unklar ist, was er tut", sondern eher als Gleichgestellten, der mit seinen automatisierten Tests und der Vorhersehbarkeit von Bugs in einem spezifischen Teil des Produkts unglaublich viel Nutzen für das Team bringt.
  • Als Ergebnis bist du effizienter, qualifizierter und gefragter.

Mit dem Wachstum des Projekts wurde ich in 100 % der Fälle Mentor für die neu gekommenen Tester, ich habe sie geschult und das Wissen weitergegeben, das ich selbst gelernt habe. Je nach Projekt erhielt ich jedoch nicht immer von der Leitung Tester mit höchsten Automatisierungsfähigkeiten, sodass ich entweder sie in der Automatisierung schulen (für die, die es wollten) oder Werkzeuge für ihre täglichen Aktivitäten erstellen musste (Werkzeuge zur Datengenerierung und deren Hochladen ins System, Werkzeuge für kurzfristige Lasttests/Stabilitätstests usw.).

Beispiel eines konkreten Projekts

Leider kann ich aufgrund von Geheimhaltungsvereinbarungen nicht im Detail über die Projekte sprechen, an denen ich gearbeitet habe, aber ich kann Beispiele für typische Aufgaben eines Data Quality Engineer in einem der Projekte anbringen.

Der Kern des Projekts war die Implementierung einer Plattform zur Datenaufbereitung für das Training von Modellen für maschinelles Lernen. Der Auftraggeber war ein großes Pharmakonzern aus den USA. Technisch war es ein Cluster Kubernetes, das auf AWS EC2 Instanzen hochgefahren wurde, mit mehreren Mikrodiensten und einem Open Source Projekt der Firma EPAM – Legion, das an die Bedürfnisse des spezifischen Auftraggebers angepasst wurde (das Projekt hat sich mittlerweile zu odahuweiterentwickelt). ETL-Prozesse wurden mit Hilfe von Apache Airflow und bewegten Daten aus SalesForce des Auftraggebers in AWS S3 Buckets. Anschließend wurde ein Docker-Image des Modells für maschinelles Lernen auf die Plattform bereitgestellt, das mit aktuellen Daten trainiert wurde und über eine REST-API-Schnittstelle Vorhersagen lieferte, die für das Geschäft von Interesse waren und spezifische Aufgaben lösten.

Visuell sah das ungefähr so aus:

Tester für große und kleine Daten: Trends, Theorie, meine Geschichte
Es gab mehr als genug funktionale Tests in diesem Projekt, und angesichts der Geschwindigkeit der Entwicklung von Features und der Notwendigkeit, das Tempo des Releasezyklus (zweiwöchige Sprints) aufrechtzuerhalten, musste sofort über die Automatisierung des Tests der kritischsten Systemknoten nachgedacht werden. Der größte Teil der Plattform, die auf Kubernetes basiert, wurde durch automatisierte Tests abgedeckt, die in Robot Framework + Python implementiert waren, aber es war auch notwendig, sie zu pflegen und zu erweitern. Darüber hinaus wurde für den Komfort des Auftraggebers eine grafische Benutzeroberfläche zur Verwaltung der auf dem Cluster bereitgestellten Modelle für maschinelles Lernen geschaffen, sowie die Möglichkeit angegeben, woher und wohin die Daten für das Training der Modelle verschoben werden sollten. Diese umfassende Ergänzung führte zu einer Erweiterung der automatisierten funktionalen Prüfungen, die größtenteils über REST-API-Aufrufe und eine kleine Anzahl von End-to-End-UI-Tests durchgeführt wurden. Etwa zur Hälfte dieser gesamten Bewegung kam ein manueller Tester zu uns, der hervorragend mit der Abnahmeprüfung der Produktversionen und der Kommunikation mit dem Auftraggeber bezüglich der Abnahme der nächsten Version zurechtkam. Darüber hinaus konnten wir durch das Aufkommen eines neuen Spezialisten unsere Arbeit dokumentieren und einige sehr wichtige manuelle Prüfungen hinzufügen, die schwer sofort zu automatisieren waren.

Und schließlich, nachdem wir Stabilität von der Plattform und GUI-Schichten darüber erreicht hatten, begannen wir mit dem Aufbau von ETL-Pipelines mithilfe von Apache Airflow DAGs. Die automatisierte Datenqualitätsprüfung erfolgte durch das Schreiben spezieller Airflow DAGs, die die Daten basierend auf den Ergebnissen des ETL-Prozesses überprüften. In diesem Projekt hatten wir Glück, da der Kunde uns Zugang zu anonymisierten Datensätzen gewährte, auf denen wir getestet wurden. Wir prüften die Daten zeilenweise auf Übereinstimmung mit den Typen, das Vorhandensein beschädigter Daten, die Gesamtanzahl der Einträge vor und nach der Verarbeitung, den Vergleich der durch den ETL-Prozess vorgenommenen Transformationen hinsichtlich Aggregation, Änderung der Spaltennamen und weiteren Aspekten. Darüber hinaus wurden diese Prüfungen auf verschiedene Datenquellen skaliert, beispielsweise neben SalesForce auch auf MySQL.

Die Prüfungen der endgültigen Datenqualität wurden bereits auf Ebene von S3 durchgeführt, wo sie gespeichert wurden und bereit für die Verwendung zur Ausbildung von Machine Learning-Modellen waren. Um Daten aus der endgültigen CSV-Datei, die im S3-Bucket liegt, zu erhalten und deren Validierung durchzuführen, wurde ein Code unter Verwendung von boto3-Client.

Es gab auch eine Anforderung seitens des Kunden, einen Teil der Daten in einem S3-Bucket zu speichern und einen anderen Teil in einem anderen. Dafür mussten ebenfalls zusätzliche Prüfungen geschrieben werden, die die Richtigkeit einer solchen Sortierung kontrollierten.

Zusammenfassende Erfahrungen aus anderen Projekten

Ein Beispiel für die allgemeinsten Aktivitäten eines Data Quality Engineers:

  • Testdaten (gültige, ungültige, große und kleine) über ein automatisiertes Tool vorbereiten.
  • Setzen Sie den vorbereiteten Datensatz in die ursprüngliche Quelle ein und überprüfen Sie seine Einsatzbereitschaft.
  • ETL-Prozesse zur Verarbeitung des Datensatzes aus dem ursprünglichen Speicher in das endgültige oder zwischenzeitliche ausführen, unter Verwendung eines bestimmten Satzes von Einstellungen (falls konfigurierbare Parameter für die ETL-Aufgabe angegeben werden können).
  • Die verarbeiteten Daten durch den ETL-Prozess auf ihre Qualität und Übereinstimmung mit den Geschäftsanforderungen verifizieren.

Dabei sollte der Hauptfokus der Prüfungen nicht nur darauf liegen, dass der Datenfluss im System grundsätzlich funktioniert und bis zum Ende gelangt (was Teil der funktionalen Tests ist), sondern in erster Linie auf der Überprüfung und Validierung der Daten hinsichtlich der Übereinstimmung mit den erwarteten Anforderungen, der Identifizierung von Anomalien und ähnlichem.

Werkzeuge

Eine der Techniken zur Kontrolle der Daten kann die Organisation von Kettenprüfungen in jeder Phase der Datenverarbeitung sein, das sogenannte „data chain“ – die Kontrolle der Daten vom Ursprung bis zum Punkt der endgültigen Verwendung. Solche Prüfungen werden meist durch das Schreiben von SQL-Abfrageprüfungen realisiert. Es ist klar, dass solche Abfragen so leichtgewichtig wie möglich sein sollten und einzelne Teile der Datenqualität überprüfen müssen (Tabellenmetadaten, leere Zeilen, NULLs, Syntaxfehler – andere erforderliche Prüfattribute).

Im Falle von Regressionstests, bei denen bereits fertige (unveränderliche oder geringfügig veränderte) Datensätze verwendet werden, können im Code der automatisierten Tests bereits bereitgestellte Vorlagen zur Datenüberprüfung hinsichtlich der Qualität gespeichert werden (Beschreibungen der erwarteten Metadaten der Tabellen; zeilenweise Auswahlobjekte, die während des Tests zufällig ausgewählt werden können, und ähnliches).

Darüber hinaus ist es erforderlich, während der Tests Test-ETL-Prozesse zu schreiben, unter Verwendung von Frameworks wie Apache Airflow, Apache Spark oder sogar black-box Cloud-Tools wie GCP Dataprep, GCP Dataflow und andere. Diese Tatsache zwingt den Testingenieur, sich in die Funktionsweise der genannten Tools einzuarbeiten und sowohl das funktionale Testen (zum Beispiel bestehende ETL-Prozesse im Projekt) effektiver durchzuführen als auch sie zur Datenüberprüfung zu nutzen. Insbesondere für Apache Airflow gibt es bereits fertige Operatoren für die Arbeit mit gängigen analytischen Datenbanken, wie zum Beispiel GCP BigQuery. Das grundlegendste Beispiel für seine Verwendung wurde bereits dargelegt hier, daher werde ich mich nicht wiederholen.

Neben fertigen Lösungen steht es Ihnen frei, Ihre eigenen Techniken und Tools zu implementieren. Dies wird nicht nur dem Projekt zugute kommen, sondern auch dem Data Quality Engineer, der dadurch seinen technischen Horizont und seine Programmierfähigkeiten erweitern kann.

Wie das in einem realen Projekt funktioniert

Ein gutes Beispiel für die letzten Absätze über die "Datenkette", ETL und allgegenwärtige Überprüfungen ist der folgende Prozess aus einem echten Projekt:

Tester für große und kleine Daten: Trends, Theorie, meine Geschichte

Hier gelangen verschiedene Daten (natürlich von uns vorbereitet) in den Eingangs-"Trichter" unseres Systems: valide, invalide, gemischte usw., anschließend werden sie gefiltert und gelangen in einen Zwischenspeicher, danach warten sie erneut eine Reihe von Transformationen und die Ablage in den endgültigen Speicher, aus dem wiederum die Analytik, der Aufbau von Datenvisualisierungen und die Suche nach Geschäftseinblicken erfolgen wird. In einem solchen System konzentrieren wir uns, ohne die Funktionalität der ETL-Prozesse zu überprüfen, auf die Datenqualität vor und nach den Transformationen sowie auf den Ausgang in die Analytik.

Zusammenfassend lässt sich sagen, dass ich unabhängig von den Orten, an denen ich gearbeitet habe, überall in Datenprojekten involviert war, die folgende Merkmale vereinten:

  • Nur durch Automatisierung können bestimmte Anwendungsfälle überprüft und ein für das Geschäft akzeptabler Release-Zyklus erreicht werden.
  • Ein Tester in einem solchen Projekt ist eines der respektiertesten Mitglieder des Teams, da er jedem Teilnehmer großen Nutzen bringt (Beschleunigung der Tests, gute Daten für Data Scientists, Früherkennung von Fehlern).
  • Es spielt keine Rolle, ob Sie auf Ihrer eigenen Hardware oder in der Cloud arbeiten – alle Ressourcen sind in Cluster wie Hortonworks, Cloudera, Mesos, Kubernetes usw. abstrahiert.
  • Projekte werden nach einem Microservices-Ansatz aufgebaut, verteilte und parallele Berechnungen überwiegen.

Ich möchte darauf hinweisen, dass sich ein Tester im Bereich der Datenqualität auf den Code des Produkts und die verwendeten Werkzeuge konzentriert.

Unterscheidungsmerkmale der Datenqualitätsprüfung

Außerdem habe ich folgende (sehr generalisierte und rein subjektive) Merkmale der Prüfung in Daten-(Big Data)-Projekten und anderen Bereichen herausgearbeitet:

Tester für große und kleine Daten: Trends, Theorie, meine Geschichte

Nützliche Links

  1. Theorie: DAMA-DMBOK: Data Management Body of Knowledge: 2. Auflage.
  2. Schulungszentrum EPAM 
  3. Empfohlene Materialien für angehende Data Quality Ingenieure:
    1. Kostenloser Kurs auf Stepik: Einführung in Datenbanken
    2. Kurs auf LinkedIn Learning: Data Science Foundations: Data Engineering.
    3. Artikel:
    4. Video:

Fazit

Data Quality Dies ist eine sehr junge, vielversprechende Richtung, Teil davon zu sein bedeutet, Teil eines Startups zu sein. Wenn Sie in die Datenqualität einsteigen, tauchen Sie in eine Vielzahl zeitgemäßer und gefragter Technologien ein, aber das Wichtigste ist, dass sich Ihnen enorme Möglichkeiten zur Generierung und Umsetzung Ihrer Ideen eröffnen. Sie können den Ansatz der kontinuierlichen Verbesserung nicht nur im Projekt, sondern auch für sich selbst anwenden und sich unaufhörlich als Fachmann weiterentwickeln.

Quelle: habr.com

60GB SSD 8Gb DDR4