Der Redakteur von Netology sprach mit dem Teamleiter der BI-Abteilung bei Pavel Sayapin darüber, welche Aufgaben die Data Engineers in seinem Team lösen, welche Tools sie dafür verwenden und wie man richtig an die Auswahl der Werkzeuge für datenbezogene Aufgaben, einschließlich atypischer, herangeht. Pavel ist Dozent im Kurs „».
Was machen Data Engineers bei Profi.ru?
Profi.ru ist ein Dienst, der Kunden mit Fachleuten aus den unterschiedlichsten Bereichen zusammenbringt. In der Datenbank des Dienstes sind über 900.000 Fachkräfte für 700 Arten von Dienstleistungen gespeichert: Nachhilfelehrer, Reparaturmechaniker, Trainer, Schönheitsexperten, Künstler und andere. Täglich werden mehr als 10.000 neue Aufträge registriert – das ergibt rund 100 Millionen Ereignisse pro Tag. Solch eine Menge an Daten kann ohne professionelle Data Engineers nicht verwaltet werden.
Idealerweise fördert ein Data Engineer eine datengetriebene Kultur, die es dem Unternehmen ermöglicht, zusätzlichen Gewinn zu erzielen oder Kosten zu senken. Er bringt dem Geschäft Wert, arbeitet im Team und ist eine wichtige Schnittstelle zwischen verschiedenen Beteiligten – von Entwicklern bis hin zu den Geschäftsnutzern von Berichten. Die Aufgaben können jedoch in jedem Unternehmen variieren, daher betrachten wir diese am Beispiel von Profi.ru.
Sie sammeln Daten zur Entscheidungsfindung und stellen diese dem Endbenutzer – dem Top-Manager, dem Produktmanager oder dem Analysten – zur Verfügung.
Die Daten müssen verständlich für die Entscheidungsfindung und benutzerfreundlich sein. Es darf nicht erforderlich sein, nach einer Beschreibung zu suchen oder eine komplexe SQL-Abfrage zu erstellen, die viele verschiedene Faktoren berücksichtigt. Das ideale Szenario 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 benötigt.

Die Rolle des Data Quality Prozesses innerhalb der Gesamtstruktur des Data Warehouses.
Der Erläuterungsdokumentation zur Datenbearbeitung kommt eine große Bedeutung zu. Dies erleichtert sowohl die Arbeit des Dateningenieurs (da er nicht durch Fragen abgelenkt wird) als auch dem 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, mit der Daten abgerufen werden. Geschwindigkeit = Verfügbarkeit in einem Schritt, Klick — im Dashboard. In der Praxis ist es jedoch komplizierter.
Selbst Tableau erlaubt es dem Endbenutzer des Dashboards nicht, alle möglichen Dimensionen anzuzeigen. Der Benutzer ist mit den Filtern zufrieden, die der Dashboard-Entwickler eingerichtet hat. Dies führt zu zwei Szenarien:
- Der Entwickler erstellt viele Schnitte für das Dashboard ⟶ die Anzahl der Seiten erhöht sich erheblich. Dies verringert die Datenverfügbarkeit: Es wird schwierig, zu verstehen, wo sich was befindet.
- Der Entwickler erstellt nur die wichtigsten Schnitte. Informationen sind leichter zu finden, aber für etwas weniger standardisierte Schnitte muss man entweder in die Datenbank oder zu den Analysten gehen. Dies wirkt sich ebenfalls negativ auf die Verfügbarkeit aus.
Verfügbarkeit ist ein umfassender Begriff. Sie umfasst die Verfügbarkeit von Daten in angemessener Form sowie die Möglichkeit, Informationen auf Dashboards zu erhalten, und die erforderliche Datenaufbereitung.
Daten werden aus allen Quellen an einem Ort zusammengeführt.
Die Datenquellen können sowohl intern als auch extern sein. Zum Beispiel hängt das Geschäft eines Unternehmens möglicherweise von Wetterberichten ab, die gesammelt und gespeichert werden müssen – also von externen Quellen.
Informationen sollten mit Quellenangabe gespeichert werden, damit die Daten leicht auffindbar sind. Bei Profi.ru wird diese Aufgabe durch automatisierte Dokumentation gelöst. YML-Dateien dienen als Dokumentation für interne Datenquellen.
Dashboards werden erstellt.
Die Visualisierung von Daten sollte am besten mit professionellen Werkzeugen durchgeführt werden – zum Beispiel mit Tableau.
Die meisten Entscheidungen werden emotional getroffen – Übersichtlichkeit und Ästhetik sind wichtig. Excel ist für die Visualisierung nicht besonders geeignet, da es nicht alle Bedürfnisse der Datenbenutzer abdeckt. Ein Produktmanager möchte sich mit Zahlen beschäftigen, aber auf eine bequeme Art und Weise. Das ermöglicht es ihm, seine Aufgaben zu lösen, ohne darüber nachdenken zu müssen, wie er Informationen abrufen und Kennzahlen sammeln kann.
Eine qualitativ hochwertige Datenvisualisierung ermöglicht schnellere und einfachere Entscheidungen.
Je höher jemand in der Hierarchie steht, desto dringlicher wird der Bedarf, aggregierte Daten auf dem Handy zur Verfügung zu haben. Details sind für Führungskräfte nicht notwendig – sie müssen die Situation insgesamt im Blick haben, und BI ist ein hervorragendes Werkzeug dafür.

Beispiel eines Produkt-Dashboards von Profi.ru (eine der Seiten). Aus Gründen des Datenschutzes sind die Namen der Metriken und Achsen verborgen.
Beispiele für reale Aufgaben
Aufgabe 1 – Übertragung von Daten aus den Quellsystemen (operativen Systemen) in ein Data Warehouse oder ETL.
Eine der routinemäßigen Aufgaben eines Data Engineers.
Hierfür können verwendet werden:
- selbstgeschriebene Skripte, die über cron oder mit speziellen Orchestratoren 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 weitere.
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 – beispielsweise eine neue Datenbank – kann dies mehrere Tage dauern.
Bei Profi umfasst diese einfache Aufgabe — bei einem reibungslosen Prozess — die folgenden Schritte:
- Ermitteln Sie beim Kunden, welche Daten benötigt werden und wo sie sich befinden.
- Verstehen, ob Zugriffe auf diese Daten vorhanden sind.
- Falls keine Zugriffe vorhanden sind, diese bei den Admins anfordern.
- Eine neue Branch in Git mit dem Code der Aufgabe in Jira hinzufügen.
- Eine Migration zum Hinzufügen von Daten in das zentrale Modell über ein interaktives Python-Skript erstellen.
- Die Lade-Dateien hinzufügen (YML-Datei mit einer Beschreibung, woher die Daten stammen und in welche Tabelle sie geschrieben werden).
- Auf dem Stand testen.
- Daten im Repository hochladen.
- Einen Pull-Request erstellen.
- Den Code-Review durchlaufen.
- Nach Bestehen des Code-Reviews werden die Daten in den Master-Branch hochgeladen und automatisch in die Produktion ausgerollt (CI/CD).
Aufgabe 2 — die hochgeladenen Daten bequem anordnen
Eine weitere häufige Aufgabe besteht darin, die hochgeladenen Daten so anzuordnen, dass der Endbenutzer (oder das BI-Tool) bequem mit ihnen arbeiten kann, ohne unnötige Schritte für die meisten Aufgaben unternehmen zu müssen. Das bedeutet, ein Dimension Data Store (DDS) zu erstellen oder zu aktualisieren.
Hierfür können Lösungen aus der ersten Aufgabe verwendet werden, da dies ebenfalls ein ETL-Prozess ist. Im einfachsten Fall erfolgt die Aktualisierung des DDS über SQL-Skripte.
Aufgabe 3 gehört zu den nicht typischen Aufgaben.
In Profi entsteht Streaming-Analytik. Es werden eine große Anzahl von Ereignissen von den Produktteams generiert – wir speichern sie in ClickHouse. Da man dort jedoch nicht viele Datensätze einzeln einfügen kann, müssen die Datensätze in Batches zusammengefasst werden. Das heißt, das direkte Schreiben ist nicht möglich – ein Zwischenverarbeiter ist erforderlich.
Wir verwenden eine Engine auf Basis von Apache Flink. Der aktuelle Ablauf sieht folgendermaßen aus: Die Engine verarbeitet den eingehenden Ereignisstrom ⟶ speichert diese in Batches in ClickHouse ⟶ zählt in Echtzeit die Anzahl der Ereignisse über 15 Minuten ⟶ übergibt sie an einen Service, der Anomalien identifiziert – er vergleicht diese mit den Werten der letzten 15 Minuten, basierend auf 3 Monaten ⟶ wenn Anomalien festgestellt werden, wird eine Benachrichtigung an Slack gesendet.

Schema für die Front-Analytik (Teil des Ladevorgangs)
Das Framework Apache Flink gewährleistet die Zustellung von mindestens einmal. Es besteht jedoch die Möglichkeit von Duplikaten. Bei RabbitMQ kann dies durch die Verwendung einer Correlation ID gelöst werden. Damit wird die einmalige Zustellung ⟶ die Integrität der Daten gewährleistet.
Wir zählen die Ereignisse ebenfalls mit Apache Flink und zeigen sie über ein selbstgebautes Dashboard, das in NodeJS geschrieben wurde, an, plus Frontend in ReactJS. Eine schnelle Suche ergab keine ähnlichen Lösungen. Der Code selbst war einfach — das Schreiben nahm nicht viel Zeit in Anspruch.
Die Überwachung ist eher technischer Natur. Wir beobachten Anomalien, um Probleme frühzeitig zu verhindern. Einige wesentliche globale Kennzahlen des Unternehmens sind vorerst nicht Teil des Monitorings, da sich der Bereich der Streaming-Analytik noch in der Entwicklungsphase befindet.
Die Hauptwerkzeuge von Data Engineers
Die Aufgaben von Data Engineers sind mehr oder weniger klar; jetzt ein wenig über die Werkzeuge, die für ihre Lösungen verwendet werden. Natürlich können (und sollten) die Werkzeuge in verschiedenen Unternehmen variieren – alles hängt von der Datenmenge, der Geschwindigkeit des Datenflusses und der Heterogenität ab. Es kann auch von der Vorliebe des Spezialisten für ein bestimmtes Werkzeug abhängen, nur weil er damit gearbeitet hat und es gut kennt. Bei Profi.ru haben wir uns für folgende Optionen entschieden →
Für die Datenvisualisierung – Tableau, Metabase
Tableau haben wir schon vor langer Zeit ausgewählt. Dieses System ermöglicht es, große Datenmengen schnell zu analysieren, ohne dass eine kostspielige Implementierung erforderlich ist. Es ist für uns praktisch, ansprechend und vertraut – wir arbeiten oft damit.
Metabase ist nur wenigen bekannt, ist aber beim Prototyping sehr nützlich.
Unter den Visualisierungstools kann man auch Superset von Airbnb erwähnen. Sein besonderes Merkmal sind viele Verbindungen zu Datenbanken und zahlreiche Visualisierungsoptionen. Allerdings ist es für den durchschnittlichen Benutzer weniger benutzerfreundlich als Metabase, da man damit keine Tabellen verbinden kann – dafür müssen separate Ansichten erstellt werden.
In Metabase können Sie Tabellen miteinander verbinden, und das Beste ist, dass der Service dies automatisch unter Berücksichtigung des Datenbankschemas erledigt. Zudem ist die Benutzeroberfläche von Metabase einfach und angenehm zu bedienen.
Es gibt sehr viele Werkzeuge – finden Sie einfach das, das zu Ihnen passt.
Für die Datenspeicherung – ClickHouse, Vertica.
ClickHouse ist ein kostenloses, schnelles Werkzeug zur Speicherung von produktbezogenen Ereignissen. Damit können Analysten selbstständig isolierte Analysen durchführen (wenn ihnen die Daten ausreichen), oder Dateningenieure extrahieren Aggregationen und laden sie in Vertica hoch, um Dashboards zu erstellen.
Vertica ist ein tolles, benutzerfreundliches Produkt zur Darstellung von finalen Dashboards.
Für das Management von Datenströmen und zur Durchführung von Berechnungen – Airflow.
Wir laden die Daten über Konsolenwerkzeuge hoch. Zum Beispiel über den Client, der mit MySQL geliefert wird – das geht schneller.
Ein Vorteil von Konsolenwerkzeugen ist die Geschwindigkeit. Die Daten werden nicht durch den Speicher desselben Python-Prozesses geleitet. Die Nachteile sind geringerer Datenkontrolle, wenn sie von einer Datenbank zur anderen übermittelt werden.
Die Hauptprogrammiersprache ist Python.
Python hat eine viel niedrigere Einstiegshürde und das Unternehmen verfügt über Kompetenzen in dieser Sprache. Ein weiterer Grund ist, dass Airflow-DAGs in Python geschrieben werden. Diese Skripte sind einfach Wrapper über die Downloads, die Hauptarbeit erfolgt über Konsolenskripte.
Java verwenden wir zur Entwicklung von Echtzeitanalyse-Anwendungen.
Der Ansatz zur Auswahl von Datenwerkzeugen ist, was zu tun ist, um keinen technologischen Zoo zu schaffen.
Es gibt viele Werkzeuge auf dem Markt für die Arbeit mit Daten in jeder Phase: von ihrer Entstehung bis hin zur Darstellung auf Dashboards für den Vorstand. Es ist nicht überraschend, dass einige Unternehmen eine Reihe von unzusammenhängenden Lösungen haben können – das sogenannte technologische Zoo.
Der technologische Zoo umfasst Werkzeuge, die dieselben Funktionen erfüllen. Zum Beispiel Kafka und RabbitMQ für die Nachrichtenübertragung oder Grafana und Zeppelin zur Visualisierung.

— es zeigt, wie viele doppelte Lösungen es geben kann.
Auch viele nutzen unterschiedliche ETL-Tools für persönliche Zwecke. Bei Profi ist genau das der Fall. Das Haupt-ETL basiert auf Airflow, aber manche verwenden für ihre persönlichen Datenübetragungen Pentaho. Sie testen Hypothesen, und durch Ingenieure müssen diese Daten nicht bearbeitet werden. Im Allgemeinen nutzen die "Self-Service"-Tools ausreichend erfahrene Fachkräfte, die sich mit Forschung beschäftigen — sie erkunden neue Wege zur Produktentwicklung. Der Datensatz, den sie zur Analyse verwenden, ist vor allem für sie von Interesse, zudem ändert er sich ständig. Daher macht es keinen Sinn, diese Übertragungen in die Hauptplattform einzupflegen.
Zurück zum Zoo. Oft ist der Einsatz von Duplikationstechnologien mit dem menschlichen Faktor verbunden. Abgeschottete interne Teams sind es gewohnt, mit bestimmten Werkzeugen zu arbeiten, die ein anderes Team möglicherweise nicht nutzt. Manchmal ist die Autonomie der einzige Weg, um spezielle Aufgaben zu bewältigen. Wenn beispielsweise das R&D-Team etwas mit einem bestimmten Tool testen möchte – es ist einfach praktisch, jemand aus dem Team hat es bereits verwendet oder es gibt einen anderen Grund. Auf die Systemadministratoren für die Installation und Konfiguration dieses Tools zu warten, dauert lange. Zudem müssen gewissenhafte und detailverliebte Administratoren erst nachweisen, dass es wirklich nötig ist. Daher installiert das Team das Tool auf seinen virtuellen Maschinen und löst seine spezifischen Aufgaben.
Ein Zoo von Lösungen ist kein Problem, solange es keine erheblichen Arbeitsbelastungen für die Administratoren erfordert, um das Tool zu unterstützen. Es ist wichtig zu berücksichtigen, wie die Nutzung des Tools die Supportressourcen beeinflusst.
Ein weiterer häufiger Grund für die Einführung neuer Tools ist das Interesse, ein unbekanntes Produkt in einem relativ neuen Bereich auszuprobieren, wo noch keine Standards oder bewährten Empfehlungen vorhanden sind. Ein Data Engineer sollte wie ein Entwickler stets neue Werkzeuge erforschen, in der Hoffnung, effizientere Lösungen für aktuelle Herausforderungen zu finden oder um auf dem Laufenden zu bleiben, was der Markt bietet.
Die Versuchung, neue Tools auszuprobieren, ist in der Tat groß. Um jedoch eine sinnvolle Entscheidung zu treffen, ist in erster Linie Selbstdisziplin nötig. Diese hilft dabei, sich nicht vollständig den forschenden Impulsen hinzugeben und die Möglichkeiten des Unternehmens zur Unterstützung der Infrastruktur für das neue Tool zu berücksichtigen.
Technologien sollten nicht nur der Technik wegen eingesetzt werden. Am besten geht man das Thema pragmatisch an: Aufgabe ⟶ Werkzeugset, das diese Aufgabe lösen kann.
Danach gilt es, jeden von ihnen zu bewerten und den optimalen auszuwählen. Beispielsweise kann dieses Tool die Aufgabe effektiver lösen, aber es fehlt an Kompetenzen, während dieses hier etwas weniger effektiv ist, aber im Unternehmen Menschen sind, die wissen, wie man damit arbeitet. Dieses Tool ist kostenpflichtig, aber einfach zu warten und zu verwenden, während jenes beliebte Open-Source ist, für dessen Unterstützung jedoch ein Team von Administratoren erforderlich ist. Solche Dichotomien entstehen, deren Lösung einen kühlen Kopf erfordert.
Die Wahl des Werkzeugs ist zur Hälfte ein Sprung ins kalte Wasser und zur Hälfte persönliche Erfahrung. Es gibt keine vollkommene Sicherheit, dass das Werkzeug geeignet ist.
In Profi haben wir beispielsweise mit Pentaho begonnen, weil wir über Expertise in diesem Tool verfügten, aber letztendlich stellte sich das als falsche Entscheidung heraus. Das interne Pentaho-Repository begann, mit dem Wachstum des Projekts stark zu verlangsamen. Das Speichern von Daten dauerte zum Beispiel eine Minute, und wenn man die Gewohnheit hat, die Arbeit ständig zu speichern, dann verrann die Zeit regelrecht. Dazu kam der komplizierte Start und zeitgesteuerte Aufgaben – der Computer hängte sich auf.
Die Plagen endeten nach dem Wechsel zu Airflow – einem beliebten Tool mit einer großen Community.
Das Vorhandensein einer Community für den Service ist wichtig, um komplexe Aufgaben zu lösen – man kann Kollegen um Rat fragen.
Wenn das Unternehmen reif ist und über Ressourcen verfügt, sollte man in Betracht ziehen, technischen Support zu kaufen. Dies hilft, Probleme schnell zu beheben und Empfehlungen zur Nutzung des Produkts zu erhalten.
Was die Auswahl angeht, so folgen wir bei Profi diesen Prinzipien:
- Entscheidungen nicht im Alleingang treffen.. Wenn jemand etwas wählt, ist er automatisch von seiner Richtigkeit überzeugt. Es ist jedoch eine andere Herausforderung, andere zu überzeugen, wenn man ernsthafte Argumente vorbringen muss. Dies hilft auch, die Schwächen des Tools zu erkennen.
- Mit dem leitenden Datenexperten beraten (vertikaler Dialog).. Dies kann der Chief Data Engineer oder der Leiter des BI-Teams sein. Das Management sieht die Situation im größeren Zusammenhang.
- Mit anderen Teams kommunizieren (horizontaler Dialog).. Welche Tools verwenden sie und wie erfolgreich sind diese? Vielleicht kann das Tool eines Kollegen auch Ihre Anforderungen erfüllen, sodass man keinen Zoo an Lösungen einrichten muss.
Interne Kompetenzen als effektive Alternative zu externen Dienstleistern.
Ein wichtiger Aspekt bei der Auswahl von Tools ist die Nutzung der internen Kompetenzen des Unternehmens.
Es kommt häufig vor, dass Unternehmen vor komplexen Herausforderungen stehen, für deren Umsetzung jedoch nicht genügend finanzielle Mittel zur Verfügung stehen. Diese Herausforderungen sind bedeutend und idealerweise wäre es am besten, einen externen Dienstleister hinzuzuziehen, der über die entsprechende Erfahrung verfügt. Da jedoch nicht genügend Mittel vorhanden sind, wird die Aufgabe der internen Mannschaft anvertraut. Darüber hinaus haben Unternehmen in der Regel mehr Vertrauen in ihre Mitarbeiter, wenn diese bereits ihre Leistungsfähigkeit unter Beweis gestellt haben.
Beispiele für solche Aufgaben, bei denen neue Bereiche von den Mitarbeitern entwickelt werden, sind die Durchführung von Lasttests und der Aufbau eines Data Warehouses. Besonders das Data Warehouse stellt eine einzigartige Herausforderung für jedes Unternehmen dar. Es kann nicht einfach gekauft werden, sondern erfordert externe Fachleute, die es mit Unterstützung des internen Teams erstellen.
Übrigens kann das Team im Verlauf der Entwicklung des neuen Bereichs feststellen, dass der Bedarf an einem externen Dienstleister nicht mehr besteht.
In Profi wurde die BI-Implementierung intern durchgeführt. Die größte Herausforderung bestand darin, dass das UnternehmenBI schnell einführen wollte. Doch der Aufbau eines solchen Projektes erfordert Zeit: Kompetenzen müssen entwickelt, Daten geladen, ein benutzerfreundliches Speichermodell erstellt, Werkzeuge ausgewählt und deren Handhabung erlernt werden.
Die zentrale — heiße — Phase, in der alles aufgebaut und kristallisiert wurde, dauerte etwa ein Jahr. Das Projekt entwickelt sich jedoch weiterhin.
Beim Aufbau eines Unternehmensdatenlagers ist es wichtig, hohe Standards einzuhalten, seine Positionen zu vertreten und nicht nachlässig im Sinne des Geschäfts zu handeln.
Mit großer Mühe haben wir einen Großteil des Projekts umgearbeitet, den wir damals schnell durchführen mussten.
Doch manchmal ist ein «schneller» Ansatz sinnvoll. In der Produktentwicklung kann er sogar der einzig richtige sein. Man muss schnell vorankommen, Produkt-Hypothesen testen und mehr. Aber das Datenlager muss auf einer soliden Architektur basieren, sonst kann es sich nicht schnell an das wachsende Geschäft anpassen und das Projekt wird ins Stocken geraten.
In diesem komplexen Projekt wurde uns sehr geholfen von unserem Leiter, der den Fortschritt der Arbeiten verteidigt, dem Management erklärt hat, was wir tun, Ressourcen eingefordert und uns einfach beschützt hat. Ohne diese Unterstützung bin ich mir nicht sicher, ob es uns gelungen wäre, das Projekt zu starten.
In solchen Geschichten spielen die sogenannten Early Adopters eine wichtige Rolle – diejenigen, die bereit sind, Neues auszuprobieren, – unter den Top-Managern, Analysten und Produktmanagern. Damit ein Rohthema durchstartet, bedarf es Pioniere, die bestätigen, dass alles funktioniert und dass es einfach zu bedienen ist.
Falls jemand die Lösung für die dritte der oben genannten Aufgaben teilen möchte – herzlich willkommen 🙂
Quelle: habr.com
