Big- und Small-Data-Tester: Trends, Theorie, meine Geschichte

Hallo zusammen, mein Name ist Alexander und ich bin ein Datenqualitätsingenieur, der Daten auf ihre Qualität überprüft. In diesem Artikel werde ich darüber sprechen, wie ich dazu gekommen bin und warum sich dieser Testbereich im Jahr 2020 auf dem Höhepunkt einer Welle befand.

Big- und Small-Data-Tester: Trends, Theorie, meine Geschichte

Globaler Trend

Die heutige Welt erlebt eine weitere technologische Revolution. Ein Aspekt davon ist die Nutzung der gesammelten Daten durch alle Arten von Unternehmen, um ihr eigenes Schwungrad aus Umsatz, Gewinn und PR zu fördern. Es scheint, dass das Vorhandensein guter (qualitativ hochwertiger) Daten sowie qualifizierter Köpfe, die damit Geld verdienen können (korrekt verarbeiten, visualisieren, Modelle für maschinelles Lernen erstellen usw.), heute für viele zum Schlüssel zum Erfolg geworden sind. Waren vor 15 bis 20 Jahren vor allem große Unternehmen intensiv mit der Datenakkumulation und Monetarisierung beschäftigt, so ist dies heute das Schicksal fast aller vernünftigen Menschen.

In diesem Zusammenhang begannen vor einigen Jahren alle Portale zur Jobsuche auf der ganzen Welt mit Stellenangeboten für Data Scientists gefüllt zu werden, da jeder sicher war, dass es mit der Einstellung eines solchen Spezialisten möglich sein würde, ein Supermodell des maschinellen Lernens aufzubauen , die Zukunft vorhersagen und einen „Quantensprung“ für das Unternehmen vollziehen. Mit der Zeit wurde klar, dass dieser Ansatz fast nirgendwo funktioniert, da nicht alle Daten, die in die Hände solcher Spezialisten fallen, für das Training von Modellen geeignet sind.

Und es begannen Anfragen von Datenwissenschaftlern: „Lasst uns mehr Daten von diesen und jenen kaufen ...“, „Wir haben nicht genug Daten ...“, „Wir brauchen mehr Daten, vorzugsweise qualitativ hochwertige ...“ . Basierend auf diesen Anfragen begannen zahlreiche Interaktionen zwischen Unternehmen aufzubauen, die über den einen oder anderen Datensatz verfügen. Dies erforderte natürlich die technische Organisation dieses Prozesses – Herstellen einer Verbindung zur Datenquelle, Herunterladen, Überprüfen, ob sie vollständig geladen wurde usw. Die Zahl solcher Prozesse begann zu wachsen, und heute besteht ein großer Bedarf an einer anderen Art von Prozessen Spezialisten – Datenqualitätsingenieure – diejenigen, die den Datenfluss im System (Datenpipelines) sowie die Qualität der Daten am Ein- und Ausgang überwachen und Schlussfolgerungen über deren Angemessenheit, Integrität und andere Merkmale ziehen.

Der Trend zu Data-Quality-Ingenieuren kam aus den USA, wo inmitten der tobenden Ära des Kapitalismus niemand bereit ist, den Kampf um Daten zu verlieren. Nachfolgend habe ich Screenshots von zwei der beliebtesten Jobsuchseiten in den USA bereitgestellt: www.monster.com и www.dice.com – Hier werden Daten zum Stand vom 17. März 2020 zur Anzahl der eingegangenen Stellenangebote mit den Schlüsselwörtern „Datenqualität“ und „Data Scientist“ angezeigt.

www.monster.com

Datenwissenschaftler – 21416 offene Stellen
Datenqualität – 41104 offene Stellen

Big- und Small-Data-Tester: Trends, Theorie, meine Geschichte
Big- und Small-Data-Tester: Trends, Theorie, meine Geschichte

www.dice.com

Data Scientists – 404 offene Stellen
Datenqualität – Stellenangebote 2020

Big- und Small-Data-Tester: Trends, Theorie, meine Geschichte
Big- und Small-Data-Tester: Trends, Theorie, meine Geschichte

Offensichtlich stehen diese Berufe in keiner Weise in Konkurrenz zueinander. Mit Screenshots wollte ich lediglich die aktuelle Situation auf dem Arbeitsmarkt in Bezug auf die Nachfrage nach Data Quality Engineers veranschaulichen, von denen mittlerweile viel mehr gesucht wird als Data Scientists.

Im Juni 2019 hat EPAM Data Quality als Reaktion auf die Anforderungen des modernen IT-Marktes in einen separaten Bereich aufgeteilt. Datenqualitätsingenieure verwalten im Rahmen ihrer täglichen Arbeit Daten, überprüfen ihr Verhalten unter neuen Bedingungen und Systemen und überwachen die Relevanz der Daten, ihre Angemessenheit und Relevanz. Bei alledem widmen Datenqualitätsingenieure im praktischen Sinne kaum Zeit dem klassischen Funktionstest. ABER Dies hängt stark vom Projekt ab (ich werde unten ein Beispiel geben).

Die Aufgaben eines Datenqualitätsingenieurs beschränken sich nicht nur auf routinemäßige manuelle/automatische Prüfungen auf „Nullen, Zählungen und Summen“ in Datenbanktabellen, sondern erfordern ein tiefes Verständnis der Geschäftsanforderungen des Kunden und dementsprechend die Fähigkeit, verfügbare Daten in umzuwandeln nützliche Geschäftsinformationen.

Datenqualitätstheorie

Big- und Small-Data-Tester: Trends, Theorie, meine Geschichte

Um uns die Rolle eines solchen Ingenieurs besser vorstellen zu können, wollen wir herausfinden, was Datenqualität theoretisch ist.

Datenqualität — eine der Stufen des Datenmanagements (eine ganze Welt, die wir Ihnen überlassen, damit Sie sie selbst studieren können) und ist für die Analyse von Daten gemäß den folgenden Kriterien verantwortlich:

Big- und Small-Data-Tester: Trends, Theorie, meine Geschichte
Ich denke, es ist nicht nötig, jeden einzelnen Punkt zu entschlüsseln (theoretisch werden sie „Datendimensionen“ genannt), sie sind im Bild recht gut beschrieben. Der Testprozess selbst bedeutet jedoch nicht, diese Funktionen strikt in Testfälle zu kopieren und zu überprüfen. Bei der Datenqualität, wie auch bei jeder anderen Art von Tests, ist es zunächst notwendig, auf den Datenqualitätsanforderungen aufzubauen, die mit den Projektteilnehmern vereinbart wurden, die Geschäftsentscheidungen treffen.

Je nach Datenqualitätsprojekt kann ein Ingenieur unterschiedliche Funktionen ausüben: von einem gewöhnlichen Automatisierungstester mit einer oberflächlichen Bewertung der Datenqualität bis hin zu einer Person, die eine detaillierte Profilerstellung der Daten gemäß den oben genannten Kriterien durchführt.

Eine sehr detaillierte Beschreibung des Datenmanagements, der Datenqualität und der damit verbundenen Prozesse ist in dem Buch mit dem Titel ausführlich beschrieben „DAMA-DMBOK: Datenmanagement-Wissensbestand: 2. Auflage“. Als Einstieg in dieses Thema kann ich dieses Buch wärmstens empfehlen (einen Link dazu finden Sie am Ende des Artikels).

Meine Geschichte

In der IT-Branche habe ich mich vom Junior-Tester in Produktunternehmen zum Lead Data Quality Engineer bei EPAM hochgearbeitet. Nach etwa zwei Jahren als Tester war ich fest davon überzeugt, dass ich absolut alle Arten von Tests durchgeführt hatte: Regression, Funktion, Stress, Stabilität, Sicherheit, Benutzeroberfläche usw. – und eine große Anzahl von Testtools ausprobiert hatte arbeitete gleichzeitig in drei Programmiersprachen: Java, Scala, Python.

Rückblickend verstehe ich, warum meine Fähigkeiten so vielfältig waren – ich war an großen und kleinen datengesteuerten Projekten beteiligt. Das hat mich in eine Welt voller Werkzeuge und Wachstumsmöglichkeiten geführt.

Um die Vielfalt der Tools und Möglichkeiten zum Erwerb neuer Kenntnisse und Fähigkeiten zu schätzen, schauen Sie sich einfach das Bild unten an, das die beliebtesten Tools in der Welt „Daten und KI“ zeigt.

Big- und Small-Data-Tester: Trends, Theorie, meine Geschichte
Solche Illustrationen werden jährlich von einem der bekanntesten Risikokapitalgeber Matt Turck zusammengestellt, der aus der Softwareentwicklung kommt. Hier Link zu seinem Blog und Risikokapitalgesellschaft, wo er als Partner tätig ist.

Besonders schnell habe ich mich beruflich weiterentwickelt, als ich der einzige Tester im Projekt war, oder zumindest zu Beginn des Projekts. In einem solchen Moment müssen Sie für den gesamten Testprozess verantwortlich sein und haben keine Möglichkeit, sich zurückzuziehen, sondern nur vorwärts. Zuerst war es beängstigend, aber jetzt liegen mir alle Vorteile eines solchen Tests auf der Hand:

  • Sie beginnen, mit dem gesamten Team wie nie zuvor zu kommunizieren, da es keinen Stellvertreter für die Kommunikation gibt: weder den Testmanager noch andere Tester.
  • Das Eintauchen in das Projekt wird unglaublich tief und man hat Informationen über alle Komponenten, sowohl im Allgemeinen als auch im Detail.
  • Entwickler betrachten Sie nicht als „den Typ vom Testen, der nicht weiß, was er tut“, sondern eher als einen Gleichgestellten, der mit seinen automatisierten Tests und der Antizipation von Fehlern, die in einer bestimmten Komponente des Systems auftreten, unglaubliche Vorteile für das Team bringt Produkt.
  • Dadurch sind Sie leistungsfähiger, qualifizierter und gefragter.

Als das Projekt wuchs, wurde ich in 100 % der Fälle zum Mentor für neue Tester, indem ich sie unterrichtete und das Wissen weitergab, das ich mir selbst angeeignet hatte. Gleichzeitig bekam ich vom Management je nach Projekt nicht immer das höchste Niveau an Autotest-Spezialisten und es bestand die Notwendigkeit, sie entweder in der Automatisierung zu schulen (für Interessierte) oder Werkzeuge für den Einsatz in alltäglichen Aktivitäten zu entwickeln (Tools). zum Generieren von Daten und zum Laden dieser in das System, ein Tool zur „schnellen“ Durchführung von Lasttests/Stabilitätstests usw.).

Beispiel für ein konkretes Projekt

Leider kann ich aufgrund von Geheimhaltungspflichten nicht im Detail auf die Projekte eingehen, an denen ich gearbeitet habe, aber ich werde Beispiele für typische Aufgaben eines Data Quality Engineers an einem der Projekte nennen.

Der Kern des Projekts besteht darin, eine Plattform zur Aufbereitung von Daten für das darauf basierende Training von Modellen für maschinelles Lernen zu implementieren. Der Kunde war ein großes Pharmaunternehmen aus den USA. Technisch gesehen war es ein Cluster Kubernetes, steigt zu AWS EC2 Instanzen, mit mehreren Microservices und dem zugrunde liegenden Open-Source-Projekt EPAM - Legion, angepasst an die Bedürfnisse eines bestimmten Kunden (jetzt wurde das Projekt wiedergeboren). odahu). ETL-Prozesse wurden mit organisiert Apache-Luftstrom und verschobene Daten von Zwangsversteigerung Kundensysteme in AWS S3 Eimer. Als nächstes wurde ein Docker-Image eines Machine-Learning-Modells auf der Plattform bereitgestellt, das anhand neuer Daten trainiert wurde und mithilfe der REST-API-Schnittstelle Vorhersagen erstellte, die für das Unternehmen von Interesse waren und spezifische Probleme löste.

Optisch sah alles ungefähr so ​​aus:

Big- und Small-Data-Tester: Trends, Theorie, meine Geschichte
Bei diesem Projekt gab es zahlreiche Funktionstests, und angesichts der Geschwindigkeit der Funktionsentwicklung und der Notwendigkeit, das Tempo des Veröffentlichungszyklus (zweiwöchige Sprints) beizubehalten, war es notwendig, sofort darüber nachzudenken, das Testen der kritischsten Komponenten zu automatisieren das System. Der größte Teil der Kubernetes-basierten Plattform selbst wurde durch in implementierte Autotests abgedeckt Roboter-Framework + Python, es war aber auch notwendig, diese zu unterstützen und zu erweitern. Darüber hinaus wurde für den Komfort des Kunden eine grafische Benutzeroberfläche erstellt, um die im Cluster bereitgestellten Modelle für maschinelles Lernen zu verwalten und festzulegen, wo und wohin Daten zum Training der Modelle übertragen werden müssen. Diese umfangreiche Ergänzung brachte eine Ausweitung der automatisierten Funktionstests mit sich, die größtenteils über REST-API-Aufrufe und eine kleine Anzahl von End-2-End-UI-Tests durchgeführt wurden. Rund um den Äquator all dieser Bewegung gesellte sich zu uns ein manueller Tester, der hervorragende Arbeit bei der Abnahme von Produktversionen leistete und mit dem Kunden über die Abnahme der nächsten Version kommunizierte. Darüber hinaus konnten wir durch die Einstellung eines neuen Spezialisten unsere Arbeit dokumentieren und einige sehr wichtige manuelle Prüfungen hinzufügen, die sich nur schwer sofort automatisieren ließen.

Und schließlich, nachdem wir die Stabilität der Plattform und des darauf befindlichen GUI-Add-ons 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 anhand der Ergebnisse des ETL-Prozesses überprüften. Im Rahmen dieses Projekts hatten wir Glück und der Kunde gewährte uns Zugang zu anonymisierten Datensätzen, die wir testeten. Wir überprüften die Daten Zeile für Zeile auf Übereinstimmung mit Typen, das Vorhandensein fehlerhafter Daten, die Gesamtzahl der Datensätze vorher und nachher, den Vergleich der vom ETL-Prozess zur Aggregation vorgenommenen Transformationen, sich ändernde Spaltennamen und andere Dinge. Darüber hinaus wurden diese Prüfungen auf verschiedene Datenquellen skaliert, beispielsweise neben SalesForce auch auf MySQL.

Abschließende Datenqualitätsprüfungen wurden bereits auf der S3-Ebene durchgeführt, wo sie gespeichert wurden und für das Training von Machine-Learning-Modellen einsatzbereit waren. Um Daten aus der endgültigen CSV-Datei im S3-Bucket abzurufen und zu validieren, wurde Code mit geschrieben boto3-Kunden.

Außerdem bestand seitens des Kunden die Anforderung, einen Teil der Daten in einem S3-Bucket und einen Teil in einem anderen zu speichern. Dies erforderte auch die Erstellung zusätzlicher Schecks zur Überprüfung der Zuverlässigkeit einer solchen Sortierung.

Allgemeine Erfahrungen aus anderen Projekten

Ein Beispiel für die allgemeinste Liste der Aktivitäten eines Datenqualitätsingenieurs:

  • Bereiten Sie Testdaten (gültig, ungültig, groß, klein) mit einem automatisierten Tool vor.
  • Laden Sie den vorbereiteten Datensatz in die Originalquelle hoch und prüfen Sie, ob er einsatzbereit ist.
  • Starten Sie ETL-Prozesse zur Verarbeitung eines Datensatzes vom Quellspeicher bis zum End- oder Zwischenspeicher mit einem bestimmten Satz von Einstellungen (legen Sie nach Möglichkeit konfigurierbare Parameter für die ETL-Aufgabe fest).
  • Überprüfen Sie die vom ETL-Prozess verarbeiteten Daten auf Qualität und Übereinstimmung mit den Geschäftsanforderungen.

Dabei sollte das Hauptaugenmerk der Prüfungen nicht nur auf der Tatsache liegen, dass der Datenfluss im System grundsätzlich funktioniert und abgeschlossen ist (was Teil der Funktionsprüfung ist), sondern vor allem auf der Überprüfung und Validierung der Daten Einhaltung erwarteter Anforderungen, Identifizierung von Anomalien und andere Dinge.

Werkzeuge

Eine der Techniken für eine solche Datenkontrolle kann die Organisation von Kettenkontrollen in jeder Phase der Datenverarbeitung sein, der in der Literatur sogenannten „Datenkette“ – Kontrolle der Daten von der Quelle bis zum Endverbrauchspunkt. Diese Arten von Prüfungen werden am häufigsten durch das Schreiben von prüfenden SQL-Abfragen implementiert. Es ist klar, dass solche Abfragen so einfach wie möglich sein und die Qualität einzelner Daten überprüfen sollten (Tabellenmetadaten, Leerzeilen, NULL-Werte, Fehler in der Syntax – andere zur Überprüfung erforderliche Attribute).

Bei Regressionstests, bei denen vorgefertigte (unveränderliche, leicht veränderliche) Datensätze verwendet werden, kann der Autotest-Code vorgefertigte Vorlagen zur Überprüfung der Daten auf Qualitätseinhaltung speichern (Beschreibungen der erwarteten Tabellenmetadaten; Zeilenbeispielobjekte, die sein können). während des Tests zufällig ausgewählt werden usw. ).

Außerdem müssen Sie während des Testens ETL-Testprozesse mit Frameworks wie Apache Airflow schreiben. Apache Funken oder sogar ein Black-Box-Cloud-Tool GCP-Datenvorbereitung, GCP-Datenfluss Und so weiter. Dieser Umstand zwingt den Testingenieur dazu, sich mit den Funktionsprinzipien der oben genannten Tools zu befassen und noch effektiver sowohl Funktionstests (z. B. bestehende ETL-Prozesse in einem Projekt) durchzuführen als auch diese zur Datenprüfung zu verwenden. Insbesondere verfügt Apache Airflow über vorgefertigte Operatoren, um beispielsweise mit gängigen Analysedatenbanken zu arbeiten GCP-BigQuery. Das einfachste Beispiel seiner Verwendung wurde bereits skizziert hier, also werde ich mich nicht wiederholen.

Abgesehen von vorgefertigten Lösungen verbietet Ihnen niemand die Implementierung eigener Techniken und Werkzeuge. Dies wird nicht nur für das Projekt von Vorteil sein, sondern auch für den Data Quality Engineer selbst, der dadurch seinen technischen Horizont und seine Programmierkenntnisse verbessert.

Wie es bei einem echten Projekt funktioniert

Eine gute Veranschaulichung der letzten Absätze über die „Datenkette“, ETL und Ubiquitous Checks ist der folgende Prozess aus einem der realen Projekte:

Big- und Small-Data-Tester: Trends, Theorie, meine Geschichte

Hier gelangen verschiedene Daten (natürlich von uns aufbereitet) in den Eingabetrichter unseres Systems: gültig, ungültig, gemischt usw., dann werden sie gefiltert und landen in einem Zwischenspeicher, dann durchlaufen sie erneut eine Reihe von Transformationen und werden im Endspeicher abgelegt, von wo aus wiederum Analysen, der Aufbau von Data Marts und die Suche nach Geschäftserkenntnissen durchgeführt werden. In einem solchen System, ohne den Betrieb von ETL-Prozessen funktional zu überprüfen, konzentrieren wir uns auf die Qualität der Daten vor und nach Transformationen sowie auf die Ausgabe an die Analyse.

Um das oben Gesagte zusammenzufassen: Unabhängig von den Orten, an denen ich gearbeitet habe, war ich überall an Datenprojekten beteiligt, die die folgenden Merkmale gemeinsam hatten:

  • Nur durch Automatisierung können Sie einige Fälle testen und einen für das Unternehmen akzeptablen Release-Zyklus erreichen.
  • Ein Tester in einem solchen Projekt ist eines der angesehensten Mitglieder des Teams, da es jedem Teilnehmer große Vorteile bringt (Beschleunigung des Testens, gute Daten vom Data Scientist, Erkennung von Fehlern im Frühstadium).
  • Dabei spielt es keine Rolle, ob Sie auf Ihrer eigenen Hardware oder in den Clouds arbeiten – alle Ressourcen werden in einem Cluster wie Hortonworks, Cloudera, Mesos, Kubernetes usw. abstrahiert.
  • Projekte basieren auf einem Microservice-Ansatz, wobei verteiltes und paralleles Rechnen vorherrschend ist.

Ich möchte darauf hinweisen, dass ein Testspezialist beim Testen im Bereich Datenqualität seinen beruflichen Fokus auf den Code des Produkts und die verwendeten Tools verlagert.

Besonderheiten des Datenqualitätstests

Darüber hinaus habe ich für mich selbst die folgenden (ich möchte sofort einen Vorbehalt machen, dass sie SEHR verallgemeinert und ausschließlich subjektiv sind) Besonderheiten des Testens in Datenprojekten (Big Data) (Systemen) und anderen Bereichen identifiziert:

Big- und Small-Data-Tester: Trends, Theorie, meine Geschichte

Nützliche Links

  1. Theorie: DAMA-DMBOK: Datenmanagement-Wissensbestand: 2. Auflage.
  2. Trainingszentrum EPAM 
  3. Empfohlene Materialien für einen beginnenden Datenqualitätsingenieur:
    1. Kostenloser Kurs zu Stepik: Einführung in Datenbanken
    2. Kurs zu LinkedIn Learning: Grundlagen der Datenwissenschaft: Datentechnik.
    3. Artikel:
    4. Video:

Abschluss

Datenqualität ist eine sehr junge, vielversprechende Richtung, ein Teil davon zu sein bedeutet, Teil eines Startups zu sein. Bei Data Quality tauchen Sie in eine Vielzahl moderner und gefragter Technologien ein, vor allem aber eröffnen sich Ihnen enorme Möglichkeiten zur Generierung und Umsetzung Ihrer Ideen. Sie können den Ansatz der kontinuierlichen Verbesserung nicht nur im Projekt, sondern auch für sich selbst anwenden und sich kontinuierlich als Spezialist weiterentwickeln.

Source: habr.com

Kommentar hinzufügen