Der Redakteur von Нетология sprach mit dem Teamleiter der BI-Abteilung bei Pawel Sajapin über die Aufgaben, die Dateningenieure in seinem Team lösen, welche Werkzeuge dafür verwendet werden und wie man am besten an die Auswahl der Instrumente für Datenaufgaben, einschließlich untypischer, herangeht. Pawel ist Dozent im Kurs „».
Was machen Dateningenieure bei Profi.ru
Profi.ru ist ein Dienst, der Kunden und Spezialisten aus den unterschiedlichsten Bereichen zusammenbringt. In der Datenbank des Dienstes sind mehr als 900.000 Spezialisten für 700 Arten von Dienstleistungen erfasst: Nachhilfelehrer, Reparaturfachleute, Trainer, Schönheitsexperten, Künstler und mehr. Täglich werden mehr als 10.000 neue Aufträge registriert – das ergibt etwa 100 Millionen Ereignisse pro Tag. So viele Daten zu verwalten, ist ohne professionelle Dateningenieure nicht möglich.
Idealerweise fördert ein Dateningenieur die Kultur der Datenarbeit, mithilfe derer das Unternehmen zusätzlichen Gewinn erzielen oder Kosten senken kann. Er bringt Wert für das Geschäft, indem er im Team arbeitet und eine wichtige Verbindung zwischen verschiedenen Beteiligten – von Entwicklern bis hin zu Geschäftsnutzern von Berichten – darstellt. Aber in jedem Unternehmen können die Aufgaben unterschiedlich sein, daher betrachten wir diese am Beispiel von Profi.ru.
Sie sammeln Daten für die Entscheidungsfindung und stellen sie dem Endbenutzer – dem Top-Manager, Produktmanager, Analysten – zur Verfügung.
Die Daten müssen verständlich für Entscheidungen und benutzerfreundlich sein. Es sollten keine Anstrengungen erforderlich sein, um eine Beschreibung zu finden oder eine komplexe SQL-Abfrage zu erstellen, die viele verschiedene Faktoren berücksichtigt. Das ideale Bild ist, dass der Benutzer auf das Dashboard schaut und zufrieden ist. Wenn Daten in einem bestimmten Bereich fehlen, geht er in die Datenbank und erhält mit einer einfachen SQL-Abfrage, was er braucht.

Der Platzierungsprozess der Datenqualität in der Gesamtstruktur des Datenlagers
Eine wichtige Rolle spielt die erläuternde Dokumentation zur Arbeit mit Daten. Dies erleichtert die Arbeit sowohl für den Dateningenieur (der nicht durch Fragen abgelenkt wird) als auch für den Datenbenutzer (der selbst Antworten auf seine Fragen finden kann). Bei Profi.ru sind solche Dokumente im internen Forum gesammelt.
Unter Bequemlichkeit versteht man auch die Geschwindigkeit der Datenbeschaffung. Geschwindigkeit = Verfügbarkeit in einem Schritt, Klick – Dashboard. In der Praxis ist es jedoch komplizierter.
Das gleiche Tableau erlaubt es aus Sicht des Endbenutzers des Dashboards nicht, alle möglichen Dimensionen anzuzeigen. Der Benutzer begnügt sich mit den Filtern, die der Entwickler des Dashboards erstellt hat. Das führt zu zwei Szenarien:
- Der Entwickler erstellt zahlreiche Einsichten für das Dashboard ⟶ die Anzahl der Seiten nimmt erheblich zu. Das verringert die Datenverfügbarkeit: Es wird schwierig, nachzuvollziehen, wo sich welche Daten befinden.
- Der Entwickler erstellt nur die wichtigsten Einsichten. Informationen sind leichter zu finden, aber für etwas weniger standardisierte Einsichten muss man trotzdem entweder auf die Datenbank oder auf die Analysten zurückgreifen. Das wirkt sich ebenfalls negativ auf die Verfügbarkeit aus.
Verfügbarkeit ist ein umfassender Begriff. Es umfasst die Verfügbarkeit von Daten in geeigneter Form, die Möglichkeit, Informationen auf Dashboards zu erhalten, sowie die notwendigen Datenansichten.
Sie akkumulieren Daten aus allen Quellen an einem Ort
Die Datenquellen können intern und extern sein. Zum Beispiel, wenn das Geschäft von Wetterberichten abhängt, die gesammelt und gespeichert werden müssen – von externen Quellen.
Die Informationen müssen mit Angabe der Quelle gespeichert werden, und die Daten müssen leicht gefunden werden können. In Profi.ru wurde diese Aufgabe durch automatisierte Dokumentation gelöst. Als Dokumentation für interne Datenquellen werden YML-Dateien verwendet.
Sie erstellen Dashboards
Die Datenvisualisierung sollte besser mit einem professionellen Tool erfolgen – zum Beispiel mit Tableau.
Die meisten Menschen treffen Entscheidungen emotional – dabei sind Anschaulichkeit und Ästhetik wichtig. Das gleiche Excel eignet sich nicht besonders gut für die Visualisierung: Es deckt nicht alle Bedürfnisse der Datenbenutzer ab. Zum Beispiel gräbt sich ein Produktmanager gerne in die Zahlen, aber so, dass es bequem ist. Das ermöglicht es ihm, seine Aufgaben zu lösen, ohne darüber nachdenken zu müssen, wie er Informationen erhalten und Kennzahlen sammeln kann.
Eine qualitativ hochwertige Datenvisualisierung ermöglicht es, Entscheidungen leichter und schneller zu treffen.
Je höher eine Person in der Hierarchie steht, desto dringender ist die Notwendigkeit, aggregierte Daten griffbereit auf dem Telefon zu haben. Details sind für Top-Manager nicht wichtig – es geht darum, die Situation insgesamt zu kontrollieren, und BI ist ein gutes Werkzeug dafür.

Beispiel eines Produkt-Dashboards von Profi.ru (eines der Blätter). Aus Gründen des Datenschutzes sind die Namen der Kennzahlen und Achsen verborgen.
Beispiele für echte Aufgaben
Aufgabe 1 – Übertragung von Daten aus ursprünglichen (operativen) Systemen in ein Data Warehouse oder ETL
Eine der Routineaufgaben eines Data Engineers.
Dafür können folgende Lösungen verwendet werden:
- selbstgeschriebene Skripte, die über Cron oder einen speziellen Orchestrator wie Airflow oder Prefect ausgeführt werden;
- Open-Source-ETL-Lösungen: Pentaho Data Integration, Talend Data Studio und andere;
- proprietäre Lösungen: Informatica PowerCenter, SSIS und andere;
- Cloud-Lösungen: Matillion, Panoply und andere.
Im einfachsten Fall wird die Aufgabe durch das Schreiben einer YML-Datei von etwa 20 Zeilen gelöst. Das dauert etwa 5 Minuten.
Im kompliziertesten Fall, wenn eine neue Quelle hinzugefügt werden muss – z. B. eine neue DB – kann es mehrere Tage dauern.
In Profi besteht diese einfache Aufgabe – bei einem optimierten Prozess – aus folgenden Schritten:
- Ermitteln, welche Daten der Kunde benötigt und wo sie liegen.
- Überprüfen, ob Zugriffe auf diese Daten vorhanden sind.
- Falls keine Zugriffe vorhanden sind, diese bei den Admins anfordern.
- Einen neuen Branch in Git mit dem Task-Code in Jira hinzufügen.
- Eine Migration zum Hinzufügen von Daten zum Anker-Modell über ein interaktives Python-Skript erstellen.
- Die Ladefiles hinzufügen (YML-Datei mit der Beschreibung, woher die Daten stammen und in welche Tabelle sie eingetragen werden).
- Auf dem Stand testen.
- Daten in das Repository hochladen.
- Einen Pull Request erstellen.
- Code-Review durchlaufen.
- Nach dem Durchlaufen des Code-Reviews werden die Daten in den Master-Branch hochgeladen und automatisch in die Produktion ausgerollt (CI/CD).
Aufgabe 2 – Die geladenen Daten sinnvoll bereitstellen
Eine weitere häufige Aufgabe besteht darin, die geladenen Daten so zu organisieren, dass es für den Endbenutzer (oder BI-Tool) bequem ist, damit zu arbeiten, ohne zusätzliche Schritte zur Erfüllung der meisten Aufgaben unternehmen zu müssen. Das heißt, ein Dimension Data Store (DDS) aufzubauen oder zu aktualisieren.
Hierfür können die Lösungen aus Aufgabe 1 angewendet werden, da es sich ebenfalls um einen ETL-Prozess handelt. Im einfachsten Fall erfolgt die Aktualisierung des DDS mit SQL-Skripten.
Aufgabe 3 – aus der Kategorie der untypischen Aufgaben
In Profi entsteht Streaming-Analytik. Es werden eine große Anzahl von Ereignissen von den Produktteams generiert – diese werden in ClickHouse gespeichert. Dort kann jedoch keine einzelne Einträge in großen Mengen hinzugefügt werden, daher müssen die Einträge in Batches zusammengefasst werden. Das heißt, direkt schreiben kann man nicht – es wird ein zwischengeschalteter Verarbeiter benötigt.
Wir verwenden eine Engine auf Basis von Apache Flink. Der Ablauf ist folgender: Die Engine verarbeitet den eingehenden Ereignisstrom ⟶ speichert sie in Batches in ClickHouse ⟶ zählt in Echtzeit die Anzahl der Ereignisse innerhalb von 15 Minuten ⟶ überträgt sie an einen Dienst, der Anomalien feststellt – vergleicht sie mit Werten aus den vergleichbaren 15 Minuten über einen Zeitraum von 3 Monaten ⟶ wenn es welche gibt, wird eine Benachrichtigung in Slack geschickt.

Schema für Frontend-Analytik (Teil der Belastung)
Das Apache Flink-Framework gewährleistet die Lieferung mindestens einmal. Dennoch gibt es die Möglichkeit von Duplikaten. Bei RabbitMQ kann dies durch die Verwendung einer Korrelations-ID gelöst werden. Damit wird die einmalige Zustellung gewährleistet ⟶ Datenintegrität.
Wir zählen die Anzahl der Ereignisse ebenfalls mit Hilfe von Apache Flink, geben sie über ein selbst entwickeltes Dashboard aus, das in NodeJS geschrieben ist, + Frontend in ReactJS. Eine schnelle Suche hat keine ähnlichen Lösungen hervorgebracht. Der Code selbst ist einfach geblieben – das Schreiben hat nicht viel Zeit in Anspruch genommen.
Die Überwachung ist eher technischer Natur. Wir beobachten Anomalien, um Probleme frühzeitig zu vermeiden. Einige wesentliche globale Kennzahlen des Unternehmens sind derzeit nicht Teil der Überwachung, da der Bereich der Streaming-Analytik sich noch in der Entwicklungsphase befindet.
Hauptwerkzeuge von Dateningenieuren
Die Aufgaben der Dateningenieure sind mehr oder weniger klar, jetzt ein wenig über die Werkzeuge, die zur Lösung ihrer Probleme eingesetzt werden. Natürlich können (und sollten) die Werkzeuge in verschiedenen Unternehmen unterschiedlich sein – alles hängt vom Datenvolumen, der Geschwindigkeit des Eingangs und der Heterogenität ab. Es kann auch davon abhängen, ob der Spezialist eine Vorliebe für ein bestimmtes Werkzeug hat, nur weil er damit gearbeitet hat und es gut kennt. Bei Profi.ru haben wir uns auf folgende Varianten festgelegt →
Zur Visualisierung von Daten – Tableau, Metabase
Tableau haben wir schon vor einiger Zeit ausgewählt. Dieses System ermöglicht es, große Datenmengen schnell zu analysieren, ohne dass aufwändige Implementierungen erforderlich sind. Für uns ist es bequem, schön und vertraut – wir arbeiten häufig damit.
Nur wenige kennen Metabase, aber es ist sehr gut für Prototyping.
Unter den Visualisierungstools kann man auch Superset von Airbnb erwähnen. Seine besondere Funktion ist die Vielzahl an Verbindungen zu Datenbanken und Visualisierungsmöglichkeiten. Für den durchschnittlichen Benutzer ist es jedoch weniger benutzerfreundlich als Metabase, da man damit keine Tabellen verbinden kann; dafür sind separate Ansichten erforderlich.
Bei Metabase kann man dagegen Tabellen verbinden. Der Dienst erledigt dies sogar selbst unter Berücksichtigung des Schemas der Datenbank. Außerdem ist die Benutzeroberfläche von Metabase einfacher und angenehmer.
Es gibt viele Tools — finden Sie einfach Ihr passendes.
Zum Speichern von Daten — ClickHouse, Vertica.
ClickHouse ist ein kostenloses, schnelles Werkzeug zur Speicherung von Produktereignissen. Damit führen Analysten eigene Analysen durch (wenn ihnen die Daten ausreichen), oder Dateningenieure nehmen die Aggregationen und laden sie in Vertica für die Erstellung von Dashboards neu hoch.
Vertica ist ein großartiges, benutzerfreundliches Produkt zur Anzeige von Enddashboards.
Für das Management von Datenströmen und die Durchführung von Berechnungen — Airflow.
Die Daten laden wir über Konsolenwerkzeuge hoch. Zum Beispiel über den Client, der mit MySQL geliefert wird – das geht schneller.
Ein Vorteil der Konsolenwerkzeuge ist die Geschwindigkeit. Die Daten werden nicht durch den Speicher des gleichen Python-Prozesses geleitet. Der Nachteil ist weniger Kontrolle über die Daten, die über verschiedene Datenbanken transportiert werden.
Die Hauptprogrammiersprache ist Python.
Python hat eine viel niedrigere Einstiegshürde + im Unternehmen gibt es Kompetenzen in dieser Sprache. Ein weiterer Grund ist, dass Airflow DAGs in Python geschrieben werden. Diese Skripte sind einfach eine Hülle um die Datenladungen, die Hauptarbeiten erfolgen über Konsolenskripte.
Java verwenden wir für die Entwicklung im Bereich Echtzeitanalysen.
Der Ansatz zur Auswahl von Datenwerkzeugen besteht darin, zu überlegen, was zu tun ist, um keinen technologischen Zoo zu schaffen.
Es gibt viele Werkzeuge auf dem Markt, um mit Daten in jedem Schritt zu arbeiten: von ihrem Erscheinen bis hin zur Anzeige auf dem Dashboard für den Vorstand. Es ist nicht verwunderlich, dass einige Unternehmen mit einer Reihe von unverbundenen Lösungen konfrontiert sein können – einem sogenannten technologischen Zoo.
Ein technologischer Zoo sind Werkzeuge, die dieselben Funktionen erfüllen. Zum Beispiel Kafka und RabbitMQ für den Nachrichtenaustausch oder Grafana und Zeppelin für die Visualisierung.

— man sieht, wie viele doppelte Lösungen es geben kann.
Viele nutzen auch verschiedene ETL-Tools für persönliche Zwecke. Bei Profi ist dies genau der Fall. Das Haupt-ETL läuft auf Airflow, aber einige verwenden für ihre eigenen Datenladungen Pentaho. Sie testen Hypothesen, und durch Ingenieure müssen diese Daten nicht verarbeitet werden. In der Regel nutzen die "Self-Service"-Tools erfahrene Fachleute, die sich mit Forschung beschäftigen – sie untersuchen neue Entwicklungsmöglichkeiten für das Produkt. Ihr Datensatz zur Analyse ist hauptsächlich für sie von Interesse und verändert sich ständig. Daher macht es keinen Sinn, diese Datenladungen in die Hauptplattform einzupflegen.
Zurück zum Zoo. Oft ist die Verwendung von doppelten Technologien mit dem menschlichen Faktor verbunden. Abgeschottete interne Teams sind es gewohnt, mit einem bestimmten Tool zu arbeiten, das ein anderes Team möglicherweise nicht verwendet. Und manchmal ist Autonomie der einzige Weg, um spezielle Aufgaben zu lösen. Zum Beispiel muss das R&D-Team etwas mit einem bestimmten Tool testen – es ist einfach praktisch, jemand aus dem Team hat es bereits verwendet oder es gibt einen anderen Grund. Auf die Ressourcen der Systemadministratoren für die Installation und Konfiguration dieses Tools zu warten, dauert lange. Dabei müssen die durchdachten und gründlichen Administratoren auch nachweisen, dass es wirklich notwendig ist. Also installiert das Team das Tool auf ihren virtuellen Maschinen und löst seine spezifischen Aufgaben.
Ein Zoo von Lösungen ist kein Problem, solange es keine erheblichen Arbeitsaufwände eines Systemadministrators zur Unterstützung des Tools erfordert. Es ist wichtig, zu berücksichtigen, wie die Nutzung des Tools die Unterstützungsressourcen beeinflusst.
Ein weiterer häufiger Grund für die Einführung neuer Werkzeuge ist der Wunsch, ein unbekanntes Produkt in einem relativ neuen Bereich auszuprobieren, in dem noch keine Standards oder getesteten Empfehlungen bestehen. Ein Dateningenieur sollte, wie ein Entwickler, immer neue Werkzeuge untersuchen, in der Hoffnung, effizientere Lösungen für aktuelle Aufgaben zu finden oder um auf dem Laufenden zu bleiben, was der Markt anbietet.
Die Versuchung, neue Werkzeuge auszuprobieren, ist wirklich groß. Aber um eine sinnvolle Wahl zu treffen, braucht man in erster Linie Selbstdisziplin. Sie hilft, sich nicht vollständig von Forschungsdrang leiten zu lassen, sondern die Möglichkeiten des Unternehmens zur Unterstützung der Infrastruktur für das neue Werkzeug zu berücksichtigen.
Technologien sollten nicht nur um ihrer selbst willen genutzt werden. Am besten geht man die Frage pragmatisch an: Aufgabe ⟶ Sets von Werkzeugen, die diese Aufgabe lösen können.
Und dann jeden von ihnen bewerten und den optimalen auswählen. Zum Beispiel kann dieses Werkzeug das Problem effektiver lösen, aber es gibt keine Kompetenzen dafür, und dieses ist etwas weniger effizient, aber im Unternehmen gibt es Personen, die wissen, wie man damit arbeitet. Dieses Werkzeug ist kostenpflichtig, aber einfach in der Unterstützung und Nutzung, und das ist ein angesagtes Open Source, aber zur Unterstützung benötigt man eine Reihe von Admins. Solche Dichotomien treten auf, für deren Lösung ein kühler Kopf gefragt ist.
Die Wahl des Werkzeugs ist zur Hälfte ein Sprung ins Ungewisse, zur Hälfte persönliche Erfahrung. Es gibt keine vollkommene Gewissheit, dass das Werkzeug geeignet ist.
Zum Beispiel haben wir bei Profi mit Pentaho begonnen, weil es Expertise für dieses Werkzeug gab, aber letztendlich war das eine fehlerhafte Entscheidung. Das interne Repository von Pentaho hat bei wachsendem Projektumfang die Arbeit erheblich verlangsamt. Für das Speichern von Daten benötigte man eine Minute, und wenn man die Gewohnheit hat, ständig zu speichern, dann verging die Zeit einfach wie im Flug. Hinzu kam ein komplizierter Start und geplante Aufgaben — der Computer hing.
Das Leiden endete nach dem Wechsel zu Airflow — einem beliebten Werkzeug mit einer großen Community.
Das Vorhandensein einer Community für den Service oder das Werkzeug ist wichtig, um komplexe Aufgaben zu lösen — man kann Kollegen um Rat fragen.
Wenn das Unternehmen reif ist und über Ressourcen verfügt, macht es Sinn, über den Kauf von technischen Support nachzudenken. Das hilft, Probleme schnell zu beheben und Empfehlungen für die Nutzung des Produkts zu erhalten.
Was den Ansatz zur Auswahl betrifft, so hält man bei Profi an folgenden Prinzipien fest:
- Nicht alleine entscheiden. Wenn jemand etwas auswählt, ist er automatisch von seiner Richtigkeit überzeugt. Eine andere Sache ist es, andere zu überzeugen, wenn man ernsthafte Argumente zu deren Verteidigung anführen muss. Das hilft auch, die Schwächen des Werkzeugs zu erkennen.
- Mit dem Hauptspezialisten für Daten beraten (vertikaler Dialog). Dies kann der Haupt-Dateningenieur (Chief Data Engineer) oder der Leiter des BI-Teams sein. Die Führungsebene sieht die Situation umfassender.
- Mit anderen Teams kommunizieren (horizontaler Dialog). Welche Werkzeuge sie verwenden und wie erfolgreich sie sind. Möglicherweise kann das Werkzeug der Kollegen auch Ihre Herausforderungen lösen, und es wäre nicht notwendig, einen Zoo an Lösungen zu schaffen.
Interne Kompetenzen als effektiver Ersatz für externe Dienstleister
Bei der Auswahl der Werkzeuge kann auch die Nutzung interner Kompetenzen des Unternehmens betrachtet werden.
Oft gibt es Situationen, in denen das Unternehmen eine komplexe Aufgabe hat, aber nicht über das Budget verfügt, um diese umzusetzen. Die Aufgabe ist groß und wichtig, und idealerweise wäre es am besten, einen externen Dienstleister mit entsprechender Erfahrung hinzuzuziehen. Da jedoch die finanziellen Mittel nicht vorhanden sind, wird die Aufgabe dem internen Team übertragen. Zudem hat das Unternehmen in der Regel mehr Vertrauen zu seinen Mitarbeitern, wenn diese bereits ihre Effizienz unter Beweis gestellt haben.
Beispiele für solche Aufgaben sind die Durchführung von Lasttests und die Erstellung eines Data Warehouses. Insbesondere das Data Warehouse, da dies eine einzigartige Geschichte für jedes Unternehmen ist. Ein Data Warehouse kann man nicht kaufen; man kann nur externe Spezialisten engagieren, die es mit Unterstützung des internen Teams aufbauen.
Übrigens kann das Team im Laufe der Entwicklung des neuen Bereichs feststellen, dass die Notwendigkeit für einen externen Dienstleister weggefallen ist.
Bei Profi wurde das BI in-house implementiert. Die größte Herausforderung bestand darin, dass das Unternehmen BI schnell starten wollte. Aber für den Aufbau eines solchen Projekts war Zeit nötig: Kompetenzen aufbauen, Daten bereitstellen, ein benutzerfreundliches Schema für das Warehouse aufbauen, Werkzeuge auswählen und sich damit vertraut machen.
Die Haupt- und kritische Phase, in der alles aufgebaut und konkretisiert wurde, dauerte etwa ein Jahr. Das Projekt entwickelt sich bis heute weiter.
Beim Aufbau eines Corporate Data Warehouses ist es wichtig, hohe Standards einzuhalten, seine Position zu verteidigen und nicht nachlässig zugunsten des Unternehmens zu arbeiten.
Mit großem Schmerz haben wir einen Großteil des Projekts neu gemacht, den wir damals schnell umsetzen mussten.
Aber manchmal ist der "schnelle" Ansatz sinnvoll. So kann er in der Produktentwicklung sogar der einzig richtige sein. Es ist notwendig, schnell voranzukommen, Produktideen zu testen und mehr. Aber das Speicher von Daten muss auf einer soliden Architektur basieren, sonst kann es sich nicht schnell an das wachsende Geschäft anpassen und das Projekt wird zum Stillstand kommen.
In diesem komplexen Projekt hat uns unser Leiter sehr geholfen, der den Fortschritt der Arbeiten verteidigte, dem Management erklärte, was wir tun, Ressourcen einforderte und uns einfach schützte. Ohne diese Unterstützung bin ich mir nicht sicher, ob wir das Projekt erfolgreich hätten starten können.
In solchen Geschichten spielen die sogenannten Early Adopters — die, die bereit sind, Neues auszuprobieren — unter den Top-Managern, Analysten und Produktmanagern eine wichtige Rolle. Damit ein rohes Thema durchstartet, braucht es Pioniere, die bestätigen, dass alles funktioniert und einfach zu nutzen ist.
Wer eine Lösung für die dritte Aufgabe der oben beschriebenen teilen möchte — willkommen 🙂
Quelle: habr.com
