- Profi.ru
Profi.ru ist ein Service, der Kunden und Spezialisten aus verschiedenen Bereichen hilft, sich zu treffen. Die Servicedatenbank enthält mehr als 900.000 Spezialisten für 700 Arten von Services: Tutoren, Mechaniker, Trainer, Schönheitsmeister, Künstler und andere. Täglich werden mehr als 10.000 neue Bestellungen registriert - all dies ergibt ungefähr 100 Millionen Ereignisse pro Tag. Ohne professionelle Dateningenieure ist es nicht möglich, diese Datenmenge in Ordnung zu halten.
Im Idealfall entwickelt ein Dateningenieur eine Datenkultur, mit der ein Unternehmen zusätzliche Einnahmen erzielen oder Kosten senken kann. Es bringt Wert für das Unternehmen, indem es in einem Team arbeitet und als wichtiges Bindeglied zwischen verschiedenen Teilnehmern fungiert - vom Entwickler bis zum Geschäftskonsumenten der Berichterstattung. Da die Aufgaben in jedem Unternehmen unterschiedlich sein können, werden wir sie am Beispiel von Profi.ru betrachten.
— -, -,
Die Daten sollten für die Entscheidungsfindung klar und einfach zu verwenden sein. Sie müssen sich nicht anstrengen, um die Beschreibung zu finden oder eine komplexe SQL-Abfrage zu schreiben, die viele verschiedene Faktoren berücksichtigt. Ein ideales Bild - der Benutzer schaut auf das Dashboard und ist mit allem zufrieden. Und wenn in einem Aspekt nicht genügend Daten vorhanden sind, werden diese in die Datenbank verschoben und mithilfe einer einfachen SQL-Abfrage abgerufen, was sie benötigen.
Platz des Datenqualitätsprozesses in der allgemeinen Struktur des Data Warehouse Eine
erläuternde Dokumentation zum Arbeiten mit Daten ist von großer Bedeutung. Dies vereinfacht die Arbeit sowohl des Dateningenieurs (nicht durch Fragen abgelenkt) als auch des Datenbenutzers (er kann die Antworten auf seine Fragen selbst finden). In Profi.ru werden solche Dokumente im internen Forum gesammelt.
Zu den Annehmlichkeiten gehört die Geschwindigkeit des Datenabrufs. Geschwindigkeit = Verfügbarkeit in einem Schritt, klicken Sie auf - Dashboard. In der Praxis ist jedoch alles komplizierter.
Aus Sicht des Endbenutzers des Dashboards können mit demselben Tableau nicht alle möglichen Abmessungen angezeigt werden. Der Benutzer ist mit den vom Dashboard-Entwickler erstellten Filtern zufrieden. Dies schafft zwei Szenarien:
- Der Entwickler nimmt viele Schnitte für das Dashboard vor - die Anzahl der Seiten nimmt stark zu. Dies verringert die Verfügbarkeit von Daten: Es wird schwierig zu verstehen, wo was liegt.
- Der Entwickler erstellt nur Schlüsselschnitte. Es ist einfacher, Informationen zu finden, aber für einen etwas weniger standardmäßigen Schnitt müssen Sie entweder zur Datenbank oder zu den Analysten gehen. Welches ist auch schlecht für die Zugänglichkeit.
Zugänglichkeit ist ein weit gefasstes Konzept. Dies ist die Verfügbarkeit von Daten in der richtigen Form und die Fähigkeit, Informationen auf Dashboards abzurufen, sowie der erforderliche Datenschnitt.
Sammeln Sie Daten aus allen Quellen an einem Ort
Datenquellen können intern oder extern sein. Zum Beispiel hängt das Geschäft einer Person davon ab, dass Wetterberichte gesammelt und gespeichert werden - aus externen Quellen.
Es ist notwendig, Informationen mit Angabe der Quelle zu speichern, damit die Daten leicht gefunden werden können. Profi.ru löst dieses Problem mithilfe einer automatisierten Dokumentation. YML-Dateien werden als Dokumentation zu internen Datenquellen verwendet.
Erstellen Sie Dashboards
Die Datenvisualisierung erfolgt am besten mit einem professionellen Tool wie Tableau.
Die meisten treffen Entscheidungen emotional - Sichtbarkeit und Ästhetik sind wichtig. Das gleiche Excel für die Visualisierung ist übrigens nicht sehr geeignet: Es deckt nicht alle Bedürfnisse von Datenbenutzern ab. Zum Beispiel gräbt sich ein Produktmanager gerne in Zahlen ein, aber auf eine bequeme Weise. Dies ermöglicht es ihm, seine Probleme zu lösen und nicht darüber nachzudenken, wie er Informationen erhält und Metriken sammelt.
Hochwertige Datenvisualisierung macht Entscheidungen einfacher und schneller.
Je höher die Position einer Person ist, desto dringlicher ist die Notwendigkeit, aggregierte Daten am Telefon zur Verfügung zu haben. Top-Manager brauchen keine Details - es ist wichtig, die Situation als Ganzes zu kontrollieren, und BI ist ein gutes Werkzeug dafür.
Ein Beispiel für ein Produkt-Dashboard Profi.ru (eines der Blätter). Aus Gründen der Vertraulichkeit von Informationen werden die Namen von Metriken und Achsen ausgeblendet
Beispiele für reale Aufgaben
Aufgabe 1 - Übertragen von Daten von Quell- (Betriebssystem-) Systemen zu einem Data Warehouse oder einer ETL
Eine der Routineaufgaben eines Dateningenieurs.
Hierfür kann verwendet werden:
- selbstgeschriebene Skripte, die von cron ausgeführt werden oder einen speziellen Orchestrator wie Airflow oder Prefect verwenden;
- 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.
In einer einfachen Version wird die Aufgabe durch Schreiben einer YML-Datei mit 20 Zeilen gelöst. Dies dauert etwa 5 Minuten.
Im schwierigsten Fall, wenn Sie eine neue Quelle hinzufügen müssen - beispielsweise eine neue Datenbank - kann dies bis zu mehreren Tagen dauern.
In Profi besteht diese einfache Aufgabe - mit einem optimierten Prozess - aus den folgenden Schritten:
- Informieren Sie sich beim Kunden, welche Daten benötigt werden und wo sie sich befinden.
- Verstehen Sie, ob Zugriff auf diese Daten besteht.
- Wenn es keinen Zugang gibt, fragen Sie die Administratoren.
- Fügen Sie Git einen neuen Zweig mit dem Problemcode in Jira hinzu.
- Erstellen Sie eine Migration, um dem Ankermodell über ein interaktives Python-Skript Daten hinzuzufügen.
- Hinzufügen von Download-Dateien (YML-Datei mit einer Beschreibung, woher die Daten stammen und in welche Tabelle sie geschrieben werden).
- Test am Stand.
- Laden Sie Daten in das Repository hoch.
- Erstellen Sie eine Pull-Anfrage.
- Gehen Sie die Codeüberprüfung durch.
- Nach bestandener Codeüberprüfung werden die Daten in die Hauptniederlassung hochgeladen und automatisch in die Produktion (CI / CD) übernommen.
Aufgabe 2 - Platzieren Sie die heruntergeladenen Daten bequem
Eine weitere häufige Aufgabe besteht darin, die geladenen Daten so anzuordnen, dass der Endbenutzer (oder das BI-Tool) problemlos damit arbeiten kann und für die meisten Aufgaben keine unnötigen Bewegungen ausführen muss. Erstellen oder aktualisieren Sie einen Dimension Data Store (DDS).
Hierzu können die Lösungen aus der 1. Aufgabe angewendet werden, da dies ebenfalls ein ETL-Prozess ist. In seiner einfachsten Form wird das DDS mithilfe von SQL-Skripten aktualisiert.
Aufgabe 3 - aus der Kategorie der atypischen Aufgaben
Streaming Analytics ist in Profi geboren. Eine große Anzahl von Ereignissen von Produktteams wird generiert - wir zeichnen sie in ClickHouse auf. Sie können dort jedoch nicht einzeln Datensätze in einer großen Anzahl einfügen, sodass Sie Datensätze zu Stapeln zusammenfassen müssen. Das heißt, Sie können nicht direkt schreiben - Sie benötigen einen Zwischenhandler.
Wir verwenden die Apache Flink-basierte Engine. Bisher ist die Vorgehensweise wie folgt: Die Engine verarbeitet den eingehenden Ereignisstrom ⟶ fügt sie in ClickHouse stapelweise hinzu ⟶ zählt im laufenden Betrieb die Anzahl der Ereignisse in 15 Minuten ⟶ sendet sie an den Dienst, der feststellt, ob Anomalien vorliegen - verglichen mit den Werten für dieselben 15 Minuten mit einer Tiefe von 3 Monaten ⟶ Wenn dies der Fall ist, wird eine Benachrichtigung an Slack gesendet.
Front-End-Analyseschema (Download-Teil)
Das Apache Flink-Framework garantiert die Lieferung mindestens einmal. Es besteht jedoch die Möglichkeit von Duplikaten. Im Fall von RabbitMQ kann dies mithilfe der Korrelations-ID gelöst werden. Dann ist die Datenintegrität einer einzelnen Lieferung garantiert.
Wir zählen die Anzahl der Ereignisse erneut mit Apache Flink, zeigen sie über ein selbst geschriebenes Dashboard an, das in NodeJS geschrieben ist, + front in ReactJS. Eine schnelle Suche ergab keine ähnlichen Lösungen. Und der Code selbst erwies sich als einfach - das Schreiben dauerte nicht lange.
Die Überwachung ist eher technisch. Wir untersuchen Anomalien, um Probleme im Frühstadium zu vermeiden. Einige wichtige globale Kennzahlen des Unternehmens sind noch nicht in die Überwachung einbezogen, da sich die Richtung der Streaming-Analyse im Stadium der Gründung befindet.
Wichtige Tools für Data Engineer
Bei den Aufgaben der Dateningenieure ist mehr oder weniger klar, welche Tools zur Lösung dieser Probleme verwendet werden. Natürlich können (und sollten) sich die Tools in verschiedenen Unternehmen unterscheiden - alles hängt vom Datenvolumen, ihrer Empfangsgeschwindigkeit und ihrer Heterogenität ab. Es kann auch von der Neigung des Spezialisten zu einem bestimmten Instrument abhängen, nur weil er damit gearbeitet hat und es gut kennt. Profi.ru entschied sich für solche Optionen →
Zur Datenvisualisierung - Tableau, Metabase
Tableau wurde für eine lange Zeit gewählt. Mit diesem System können Sie große Datenmengen schnell analysieren, ohne dass eine kostspielige Implementierung erforderlich ist. Für uns ist es bequem, schön und vertraut - wir arbeiten oft darin.
Nur wenige Menschen kennen Metabase, während es sich sehr gut für das Prototyping eignet.
In den Visualisierungstools können Sie auch über Airbnbs Superset sprechen. Die Besonderheit sind viele Datenbankverbindungen und Visualisierungsfunktionen. Für einen normalen Benutzer ist dies jedoch weniger praktisch als Metabase. Sie können keine Tabellen darin verknüpfen. Dazu müssen Sie separate Ansichten erstellen.
In derselben Metabasis können Sie Tabellen verknüpfen. Darüber hinaus erledigt der Dienst dies selbst unter Berücksichtigung des Datenbankschemas. Die Benutzeroberfläche von Metabase ist einfacher und schöner.
Es gibt viele Werkzeuge - finden Sie einfach Ihre.
Zur Datenspeicherung - ClickHouse, Vertica
ClickHouse ist ein kostenloses schnelles Tool zum Speichern von Lebensmittelveranstaltungen. Daraufhin führen Analysten selbst separate Analysen durch (wenn sie über genügend Daten verfügen) oder Dateningenieure nehmen Aggregate und laden sie erneut auf Vertica hoch, um Storefronts zu erstellen.
Vertica ist ein cooles benutzerfreundliches Produkt für die Anzeige im Endgeschäft.
Zur Steuerung und Berechnung des Datenflusses - Luftstrom
Wir laden Daten über Konsolentools. Über einen Client, der mit MySQL geliefert wird, wird dies beispielsweise schneller.
Der Vorteil von Konsolentools ist die Geschwindigkeit. Daten werden nicht durch den Speicher desselben Python-Prozesses gepumpt. Auf der anderen Seite gibt es weniger Kontrolle über die Daten, die von einer Datenbank in eine andere übertragen werden.
Die Hauptprogrammiersprache ist Python
Python hat eine viel niedrigere Eintrittsschwelle + das Unternehmen verfügt über Kompetenz in dieser Sprache. Ein weiterer Grund ist, dass unter Airflow DAGs in Python geschrieben sind. Diese Skripte sind nur ein Wrapper um die Downloads. Der größte Teil der Arbeit wird über Konsolenskripte erledigt.
Wir verwenden Java für die Entwicklung von Echtzeitanalysen.
Ein Ansatz zur Auswahl von Datenwerkzeugen - was zu tun ist, um keinen Technologiezoo zu züchten
Auf dem Markt gibt es viele Tools für die Arbeit mit Daten in jeder Phase: vom Erscheinungsbild über die Ausgabe bis hin zu einem Dashboard für den Verwaltungsrat. Es überrascht nicht, dass einige Unternehmen möglicherweise eine Reihe nicht miteinander verbundener Lösungen haben - den sogenannten Technologiezoo.
Der Tech-Zoo ist ein Werkzeug, das das Gleiche tut. Zum Beispiel Kafka und RabbitMQ für Messaging oder Grafana und Zeppelin für Visualisierung.
Karte der Technologien und Unternehmen im Bereich Daten und KI - Sie können sehen, wie viele doppelte Lösungen vorhanden sein können
Viele für persönliche Zwecke können auch verschiedene ETL-Tools verwenden. In Profi ist dies genau die Situation. Die Haupt-ETL ist auf Airflow, aber jemand verwendet Pentaho für persönliche Uploads. Sie testen Hypothesen und müssen diese Daten nicht durch Ingenieure ausführen. Grundsätzlich werden Self-Service-Tools von ziemlich erfahrenen Spezialisten verwendet, die sich mit Forschungsaktivitäten befassen und neue Wege der Produktentwicklung erkunden. Der Satz ihrer Daten für die Analyse ist hauptsächlich für sie von Interesse, außerdem ändert er sich ständig. Dementsprechend ist es nicht sinnvoll, diese Lasten zur Hauptplattform hinzuzufügen.
Rückkehr in den Zoo. Oft ist die Verwendung doppelter Technologien mit einem menschlichen Faktor verbunden. Separate interne Teams sind es gewohnt, mit dem einen oder anderen Tool zu arbeiten, das ein anderes Team möglicherweise nicht verwendet. Und manchmal ist Autonomie der einzige Weg, um spezielle Probleme zu lösen. Zum Beispiel muss das Forschungs- und Entwicklungsteam etwas mit einem bestimmten Tool testen - es ist nur praktisch, jemand im Team hat es bereits verwendet, oder es gibt einen anderen Grund. Es dauert lange, bis die Ressource der Systemadministratoren dieses Tool installiert und konfiguriert hat. Gleichzeitig müssen nachdenkliche und sorgfältige Administratoren noch beweisen, dass dies wirklich notwendig ist. Das Team installiert das Tool auf seinen virtuellen Maschinen und löst die spezifischen Aufgaben.
, . , .
Ein weiterer häufiger Grund für die Entstehung neuer Werkzeuge ist der Wunsch, ein unbekanntes Produkt in einem relativ neuen Bereich auszuprobieren, in dem noch keine Standards festgelegt wurden oder es keine bewährten Richtlinien gibt. Ein Dateningenieur sollte wie ein Entwickler immer nach neuen Tools suchen, um eine bessere Lösung für aktuelle Probleme zu finden oder um auf dem Laufenden zu bleiben, was der Markt zu bieten hat.
Die Versuchung, neue Werkzeuge auszuprobieren, ist wirklich groß. Aber um die richtige Wahl zu treffen, braucht man vor allem Selbstdisziplin. Es wird Ihnen helfen, sich nicht vollständig den Forschungsimpulsen zu widmen, sondern die Fähigkeiten des Unternehmens bei der Unterstützung der Infrastruktur für das neue Tool zu berücksichtigen.
Verwenden Sie Technologie nicht um der Technologie willen. Es ist am besten, die Frage pragmatisch anzugehen: Eine Aufgabe ist eine Reihe von Werkzeugen, die diese Aufgabe lösen können.Und dann bewerten Sie jeden von ihnen und wählen Sie den besten aus. Zum Beispiel kann dieses Tool ein Problem effizienter lösen, aber es gibt keine Kompetenzen dafür, und dieses ist etwas weniger effektiv, aber das Unternehmen hat Leute, die wissen, wie man damit arbeitet. Dieses Tool ist kostenpflichtig, aber einfach zu warten und zu verwenden. Es ist modisches Open Source, benötigt jedoch ein Admin-Team, um es zu unterstützen. Solche Dichotomien entstehen, deren Auflösung einen kühlen Kopf erfordert.
Die Wahl eines Instruments ist ein halber Glaubenssprung, eine halbe persönliche Erfahrung. Es gibt keine vollständige Gewissheit, dass das Werkzeug passt.Zum Beispiel haben sie in Profi mit Pentaho angefangen, weil sie Erfahrung mit diesem Instrument hatten, aber am Ende stellte sich heraus, dass es eine falsche Entscheidung war. Das interne Pentaho-Repository wurde mit dem Wachstum des Projekts sehr langsam. Das Speichern von Daten dauerte übrigens eine Minute, und wenn es die Gewohnheit ist, ständig Arbeit zu speichern, ist mir die Zeit einfach durch die Finger gerutscht. Hinzu kam ein komplexer Start, geplante Aufgaben - der Computer hing.
Das Leiden endete nach dem Wechsel zu Airflow, einem beliebten Tool für eine große Community.
Das Vorhandensein eines gemeinnützigen Dienstes, eines Tools, ist wichtig für die Lösung komplexer Probleme - Sie können Kollegen um Rat fragen.Wenn das Unternehmen ausgereift ist und über die Ressourcen verfügt, ist es sinnvoll, technischen Support in Betracht zu ziehen. Auf diese Weise können Sie Probleme schnell beheben und Empfehlungen zur Verwendung des Produkts erhalten.
Wenn wir über den Ansatz der Wahl sprechen, dann befolgt Profi die folgenden Prinzipien:
- Treffen Sie keine Entscheidung allein . Wenn eine Person etwas wählt, ist sie automatisch davon überzeugt, dass sie Recht hat. Es ist eine andere Sache, andere zu überzeugen, wenn eine starke Verteidigung erforderlich ist. Dies hilft auch, die Schwächen des Instruments zu erkennen.
- Lassen Sie sich vom Chief Data Officer beraten (vertikaler Dialog) . Dies kann der Chief Data Engineer sein, der Leiter des BI-Teams. Tops sehen die Situation allgemeiner.
- Kommunizieren Sie mit anderen Teams (horizontaler Dialog) . Welche Tools verwenden sie und wie gut. Vielleicht kann das Tool eines Kollegen Ihre Probleme lösen, und Sie müssen keinen Zoo mit Lösungen einrichten.
Interne Kompetenzen als wirksamer Ersatz für einen externen Dienstleister
Der Ansatz bei der Auswahl der Tools kann auch als Nutzung der internen Kompetenzen des Unternehmens betrachtet werden.
Sehr oft gibt es Situationen, in denen ein Unternehmen eine schwierige Aufgabe hat, aber es gibt kein Geld, um sie umzusetzen. Die Aufgabe ist groß und wichtig, und es ist am besten, einen externen Dienstleister einzubeziehen, der über die entsprechende Erfahrung verfügt. Da es jedoch keine solche Möglichkeit (Geld) gibt, wird ein internes Team beauftragt, das Problem zu lösen. Darüber hinaus vertraut ein Unternehmen seinen Mitarbeitern in der Regel mehr, wenn sie ihre Wirksamkeit bereits bewiesen haben.
Beispiele für solche Aufgaben, bei denen Mitarbeiter eine neue Richtung entwickeln, sind Lasttests und die Erstellung eines Data Warehouse. Besonders das Data Warehouse, da es für jedes Unternehmen eine einzigartige Geschichte ist. Der Speicher kann nicht gekauft werden. Sie können nur externe Spezialisten einstellen, die ihn mit Unterstützung eines internen Teams erstellen.
Während sich die neue Richtung entwickelt, kann das Team übrigens feststellen, dass die Notwendigkeit eines externen Dienstleisters verschwunden ist.
In Profi erfolgte die Implementierung von BI intern. Die Hauptschwierigkeit bestand darin, dass das Unternehmen BI schnell starten wollte. Es hat jedoch einige Zeit gedauert, ein solches Projekt zu erstellen: Kompetenzen aufzubauen, Daten einzugeben, ein praktisches Speicherschema zu erstellen, Tools auszuwählen und zu beherrschen.
Die Hauptheißphase, in der alles gebaut und kristallisiert wurde, dauerte etwa ein Jahr. Und das Projekt entwickelt sich noch.
Beim Aufbau eines Corporate Data Warehouse ist es wichtig, hohe Standards einzuhalten, Ihre Position zu verteidigen und nichts zu tun, um das Geschäft zufrieden zu stellen.Manchmal ist jedoch ein schneller Ansatz ratsam. In der Produktentwicklung ist dies möglicherweise sogar die einzig richtige. Sie müssen schnell vorankommen, Produkthypothesen testen und vieles mehr. Der Speicher muss jedoch auf einer soliden Architektur basieren, da er sich sonst nicht schnell an das wachsende Geschäft anpassen kann und das Projekt aussterben wird.
Mit großem Schmerz haben wir den größten Teil des Projekts überarbeitet, was dann schnell erledigt werden musste.
In diesem schwierigen Projekt hat unser Leiter viel geholfen, der den Fortschritt der Arbeit verteidigte, dem Management erklärte, was wir taten, Ressourcen ausschaltete und uns einfach schützte. Ohne diese Unterstützung bin ich mir nicht sicher, ob wir das Projekt hätten starten können.
In solchen Geschichten spielen die sogenannten Early Adopters - diejenigen, die bereit sind, neue Dinge auszuprobieren - unter Top-Managern, Analysten und Produktmanagern eine wichtige Rolle. Damit sich ein grobes Thema durchsetzen kann, brauchen wir Pioniere, die bestätigen, dass alles funktioniert und bequem zu bedienen ist.
Wenn jemand die Lösung für das dritte oben beschriebene Problem teilen möchte - willkommen :-)