Datenplattformen migrieren | Rückblick auf eine SAS zu Azure Databricks Migration

Shownotes

Unser Kollege David hat fast 2 Jahre eine SAS zu Azure Databricks Migration begleitet. Dabei sind viele Learnings sowohl auf technischer als auch auf menschlicher & Change Management Ebene entstanden. Diese möchten wir im Podcast gerne mit euch teilen um zukünftige Migrationen zu vereinfachen und echte Insights zu geben.

Transkript anzeigen

00:00:00: Hallo, ich bin David.

00:00:01: Hi, Janis.

00:00:02: Fangen wir mit dem angenehmen zuerst an.

00:00:04: Ich glaube, ich habe zwei Mal im Schach gewonnen, seit dem letzten Mal.

00:00:07: Genau anders rum, oder?

00:00:09: Ja, ich habe etwas öfter gewonnen als ich.

00:00:12: Das wollte ich noch unterschlagen.

00:00:14: Unsere letzten beiden 15 Minuten Spiele?

00:00:16: Ja, die hast du gewonnen.

00:00:18: Aber davor habe ich gewonnen.

00:00:20: Ja, aber ich glaube, nach seit dem letzten Podcast dürfte wieder unentschieden sein,

00:00:24: was an sich schlimm genug ist.

00:00:26: Ja, okay.

00:00:27: Ich sehe dich, ehrlich gesagt, vorne.

00:00:30: Seit dem letzten Podcast oder in der Gesamtabrechnung?

00:00:33: Gesamtabrechnung habe ich eine Strichliste im Büro.

00:00:35: Seit dem letzten Podcast bist du auch vorne.

00:00:37: Ah, okay.

00:00:38: Ja.

00:00:39: Gut.

00:00:40: Ich bin aber auch tatsächlich wieder deutlich motivierter.

00:00:42: Ich habe jetzt...

00:00:43: Ja, nach der Niederlagen, ne?

00:00:44: Ja, ich gucke mir gerade YouTube das Kandidatenturnier von 59 an.

00:00:48: Ja.

00:00:49: Kann ich dir empfehlen.

00:00:50: Da hat Bobby Fischer richtig viel verloren.

00:00:52: War aber halt auch erst 17 oder so.

00:00:54: Ja, gut.

00:00:55: Ja.

00:00:56: Jetzt also, mach dich bereit.

00:00:58: Kann ich dir auch schon sagen, ich habe keine Angst, ich sage dir das.

00:01:00: Es wird in nächster Zeit ein bisschen mehr Sicilian geben.

00:01:03: Find ich gut.

00:01:04: Ich spiele Morra.

00:01:05: Morra Gambit.

00:01:06: So, das sind immer gute Voraussetzungen.

00:01:10: Aber du musst dich entscheiden, oder?

00:01:12: Schachvorbereitung oder Zeltifikate machen?

00:01:15: Geht beides.

00:01:16: Geht beides.

00:01:17: Einfach weniger arbeiten, das ist der Trick.

00:01:19: Ich finde, das zählt auch beides zur Arbeit.

00:01:21: Ja, liebe Grüße an Alex übrigens.

00:01:23: Ja.

00:01:24: An welchen Alex?

00:01:26: Chef.

00:01:27: Ja, wenn er so weit hört.

00:01:29: Vielleicht überspringt er das auch.

00:01:31: Und geht zu seiner Folge rüber oder so.

00:01:34: Aber ja, ich arbeite daran.

00:01:36: Ich finde, du bist nicht mehr unangefochten.

00:01:38: Du bist schon noch Spitzenreiter.

00:01:40: Das gebe ich zu.

00:01:41: Das gönne ich dir auch, aber nicht mehr unangefochtener Spitzenreiter.

00:01:44: Ja, ist das ärgerlich bei so Lernkurven.

00:01:46: Die flachen so ab und die anderen holen halt coole auf.

00:01:50: Ja, ich finde es auch schon mal gut,

00:01:52: dass du dich bei mir echt anstrengen musst.

00:01:54: Ja.

00:01:55: Also ich werde jetzt auch nicht mehr mit dir dieses "Du schreibst mich an,

00:01:58: traust du dich?" "2 Minuten annehmen."

00:02:00: Mach ich es nicht mehr.

00:02:01: Also wenn ich das annehme,

00:02:02: werde ich vorher entspannt aus Klo gehen,

00:02:04: wir einen Kaffee machen,

00:02:05: zweimal tief durchatmen und dann anheben.

00:02:07: Ach so.

00:02:08: Auch noch durch unsere alten Partien gehen?

00:02:10: Also ich muss sagen, ich gestehe feierlich.

00:02:12: Ich habe alle Partien habe ich gespeichert von uns.

00:02:14: Echt?

00:02:15: Ja.

00:02:16: Ich bin da nun noch nicht durchgegangen.

00:02:17: Also alles, was wir auf Lichas gemacht haben.

00:02:19: Wo kann man die?

00:02:20: Ich bin nicht als Gast beitrittst,

00:02:22: sondern mit deinem echten Account,

00:02:23: so wie ich das immer mache.

00:02:24: Ja gut, mein echten Account sollst du ja nicht kennen.

00:02:27: Ja, ich fände schon.

00:02:29: Also ich finde, man muss ja mit Gleichem spielen.

00:02:31: Okay.

00:02:32: Und ...

00:02:33: Ich kann mir das machen.

00:02:35: Ich fühle mich geehrt.

00:02:36: Aber habe ich bisher noch nicht gemacht,

00:02:38: wenn die Statistik sich weiter verschlechtert,

00:02:41: werde ich damit wohl anfangen.

00:02:42: Dann gehst du auf die Janis Vorbereitung,

00:02:44: so wie ich auf die David Vorbereitung gegangen bin.

00:02:46: Aber das hat mich auch besser gemacht.

00:02:48: Da bin ich auch ganz ehrlich.

00:02:49: Also ich habe mich ja wirklich speziell auf deine Eröffnung

00:02:51: vorbereitet.

00:02:52: Und ich habe mir aus Versehen

00:02:54: einen Sweetspot dabei aufgebaut,

00:02:56: aus meinen Schwarzeröffnungen.

00:02:58: Mit weiß immer schwierig,

00:02:59: aber mit schwarz bin ich dank dir auch

00:03:01: ein gutes Stück besser geworden.

00:03:03: Ja, ich war auch sehr berechenbar.

00:03:05: Aber es wird jetzt auch mehr E5 geben.

00:03:07: Ja, ist nicht schlimm.

00:03:09: Wie gesagt, ich habe auch auf Scythianisch

00:03:11: habe ich gute Antworten.

00:03:13: Also da kannst du dich auch was sagen.

00:03:15: Ja, alles klar.

00:03:16: Jetzt hätte ich fast mehr Lust,

00:03:17: Schach zu spielen als ein Podcast zu machen.

00:03:19: Wir driften hart ab.

00:03:21: Machen wir mal einen reinen Schach-Podcast?

00:03:23: Ein reinen Schach-Podcast.

00:03:24: Meinst du, wir sind dafür qualifiziert genug?

00:03:26: Nein.

00:03:27: Dann bräuchten wir vielleicht noch einen qualifizierten Redner dabei.

00:03:30: Vielleicht jemand, der unser Schachspiel kommentiert.

00:03:32: Oh ja, das wäre cool.

00:03:34: Ja, müssen wir mal...

00:03:35: Hat Magnus Zeit?

00:03:36: Ich schreibe mal eine Mail.

00:03:38: Aber ich finde Vincent, der könnte das auch machen.

00:03:42: Stimmt.

00:03:43: Du schreist Vincent, ich schreibe Magnus

00:03:45: und wir schauen, ob das zurückkommt.

00:03:46: Das coolste ist, ich kann den Deutsch schreiben.

00:03:48: Die Mail.

00:03:49: Na gut, okay.

00:03:50: Wir reden heute über andere Themen noch als Schach.

00:03:54: Über Migration.

00:03:56: Genauer gesagt, du hattest...

00:03:58: Ich weiß nicht, kann man das jetzt gleich als Traumotherapie bezeichnen,

00:04:01: was gleich passieren wird?

00:04:03: Ich habe mich mittlerweile ganz gut erholt.

00:04:05: Du hast dich erholt.

00:04:06: Das heißt, es ist bewältigt.

00:04:08: Wir reden ganz konkret über deine Erfahrung von Sass

00:04:12: nach Databricks zu migrieren.

00:04:15: Ich freue mich fast schon.

00:04:17: Ich bin gespannt, was dabei passiert.

00:04:19: Erzähl doch erst mal gerne einleiten.

00:04:21: Ich weiß, du bist kein Sass-Experte.

00:04:23: Aber was hast du von Sass kennengelernt

00:04:25: und was ist das eigentlich?

00:04:27: Genau, also Sass ist ein Anbieter von einer Analytics-Plattform.

00:04:35: Das ist aber eine proprietärer Service.

00:04:38: Also du musst da Lizenzgebühren zahlen

00:04:41: und das Ganze basiert auf der Sass-Programming-Language.

00:04:44: Von der ich vorher noch nie gehört hatte

00:04:46: und von der ich nicht unbedingt noch mal so viel hören muss.

00:04:50: Mein Traumbezieht sich in keinster Weise auf die Leute

00:04:55: oder das Projekt als Ganzes.

00:04:57: Aber Sass hat mich jetzt nicht so sehr abgeholt.

00:05:03: Kannst du die Programmiersprache einmal ein bisschen beschreiben?

00:05:07: Bei der Struktur her fängst du oben an

00:05:10: und du schreibst so, wie du es liest.

00:05:12: Genau, also im Endeffekt das, was ich davon mitbekommen habe,

00:05:16: wenn jetzt hier irgendein krasser Sass-Experte ist,

00:05:19: haben wir eine Comment-Section.

00:05:21: Er kann das dann vielleicht noch genauer erläutern.

00:05:23: Wir haben auf jeden Fall Post-Fächern.

00:05:25: Ja, in Post-Fächern wird er nachgereicht.

00:05:27: Also das, was ich von Sass gesehen habe,

00:05:29: sind typischerweise immer Skripte.

00:05:31: Das heißt, von oben nach unten durch.

00:05:33: Das heißt, du hast nichts mit irgendwie modularem Code

00:05:38: oder auch irgendwie Packages, die du dir selber schreiben könntest,

00:05:42: sondern du schreibst Skripte

00:05:44: und Sass, die die zentralen Elemente sind,

00:05:48: Sass-Data-Steps, in denen du Daten einliest

00:05:51: und Sass-Prosectures und Sass-Sequel-Queries,

00:05:56: die du im Prinzip ausführst.

00:05:58: Im Prinzip ist, glaube ich, die Sass-Denke,

00:06:01: so ähnlich wie auf Data-Prix, alles in Data-Frames,

00:06:03: ist in Sass alles eine Table.

00:06:05: Eigentlich erzeugt quasi jeder Step eine Table mehr oder weniger.

00:06:10: Und die werden dann immer weiter miteinander verwurschtet

00:06:15: im Zuge dieses Skriptes.

00:06:18: Man kann sich vorstellen, dass halt auch eine recht komplexe Analyse

00:06:24: in der relativ viel passiert, was dann aber irgendwie in 5.000 Zeilen Code ist,

00:06:29: oder sagen wir, 2.000 Zeilen Code ist,

00:06:32: dem ist schwer zu folgen, vor allem, wenn die Tabellen einfach nur heißen

00:06:37: Tabelle P01 bis Tabelle P400.

00:06:40: Gut, das sind individuelle Probleme dann.

00:06:42: Ich sage mal, Namenskonventionen sind ja unabhängig von der Programmiersprache.

00:06:47: Man könnte aber sagen, dass eine Programmiersprache

00:06:51: es dir leichter oder schwerer macht,

00:06:53: verständlich einen Code zu schreiben.

00:06:55: Ich erinnere an deine Paintpoints mit Streamlit.

00:06:58: Obwohl es pfeifen ist, sorgt es nicht unbedingt dafür,

00:07:01: dass der Code viel schöner wird.

00:07:03: Genau, und wenn du halt einfach X-Joints von Tabellen miteinander hast,

00:07:08: gehen dir vermutlich irgendwann die Namen aus,

00:07:10: wie du die Tabellen noch nennen willst.

00:07:12: Gut, das kann ein Problem sein.

00:07:15: Wie kann ich mir das vorstellen, debugging wise?

00:07:18: Also kannst du Schritt für Schritt irgendwie den Code durchlaufen

00:07:21: und siehst dann, was dein Code macht,

00:07:23: oder kannst du nur den Anfang sehen und das Ende sehen?

00:07:25: Dann kannst du den Code Schritt für Schritt ausführen

00:07:28: und dann kannst du dir die Tabellenergebnisse angucken.

00:07:31: Du kannst ja alle Tabellenergebnisse auch einzeln angucken.

00:07:34: So ein 2000-Zeilen-Sascript kann man dann trotzdem ganz gut verstehen,

00:07:41: wenn man eben Zeile bei Zeile durchgeht.

00:07:44: Hat halt 2000x auf F8 gedrückt.

00:07:47: Ja, genau. Ich glaube, es war F3.

00:07:51: Ja, oder so.

00:07:53: Und warum entscheidt...

00:07:55: Also für mich klingt das ja erstmal nach was Grundsulieben.

00:07:58: Also du hast deine Tabellen, du kannst deinen Code debugging.

00:08:02: Das ist ja erstmal alles, was ich haben möchte.

00:08:04: Du hast SQL, das ist dann auch nicht das Unperformanteste wahrscheinlich.

00:08:08: Warum will man jetzt von SAS weg?

00:08:10: Oder was ist deine Erfahrung?

00:08:11: Warum wollte man von SAS weg?

00:08:13: Also ich glaube, ein ganz großes Problem bei der Geschichte ist,

00:08:17: das ist proprietär.

00:08:19: Also du bist sehr abhängig von dem Anbieter

00:08:22: und hast recht hohe Lizenzgebühren.

00:08:24: Also ich weiß da im Detail nicht, wie groß die sind,

00:08:28: aber ich glaube, das war ein Punkt.

00:08:30: Ein anderer Punkt ist, es ist gerade so im Bereich Machine Learning

00:08:36: und so weiter halt nicht State of the Art.

00:08:38: Also du hattest da ein paar SAS-Cluster-Methoden,

00:08:43: wo du so typische hierarchische Cluster und so Sachen machen konntest,

00:08:46: logistische Regressionen, aber du hast halt einfach keinen Zugang

00:08:49: zu den ganzen Python Toolkits.

00:08:51: Und ich würde sagen, Python ist ja schon der de facto Standard,

00:08:54: wenn ich Machine Learning oder auch Deep Learning oder so machen will.

00:08:57: Deep Learning ist mir jetzt bei SAS gar nicht untergekommen, wüsste ich nicht.

00:09:01: Und allgemein Zugang zu sonstigen, also Integration in sonstige Dienste,

00:09:09: also vielleicht möchte ich noch sonstige Asher-Services nutzen,

00:09:13: die die ganzen Cloud-Geschichten,

00:09:16: möchte, wenn ich Machine Learning mache, Registrierungen haben,

00:09:21: vielleicht auch andere Datenformate für eine Versionierung.

00:09:24: Also Versionierung war grundsätzlich ein Problem sowohl von Code,

00:09:28: es gab halt SAS-Skripte 1 bis 11, also V1 bis V11 ohne Git.

00:09:34: Klassiker, ja.

00:09:35: Genau, Daten, die nicht versioniert sind, oder wo dir das nicht klar ist.

00:09:42: Genau, und da bieten gibt es dann heute wahrscheinlich modernere Lösungen.

00:09:48: Ja gut, ich weiß jetzt nicht, wie weit das zwingend mit SAS zusammenhängt

00:09:54: oder mit dem Team.

00:09:55: Also versionieren kannst du ja erstmal alles, würde ich mal so behaupten.

00:09:59: Vielleicht ist eine fehlende Versionierung ein bisschen auf Unerfahrenheit zurückzuführen

00:10:05: oder genau in diesem Bereich nicht genug erfahren,

00:10:09: um sich diesen Aufwand zuzumuten, oder vielleicht hat man auch nicht den Sinn gesehen,

00:10:14: dem zu folgen, da muss man wahrscheinlich immer so ein bisschen aufpassen.

00:10:18: Aber du hast ja sehr erfolgreich migriert, und das ohne SAS zu kennen.

00:10:23: Das heißt, du musst es ja erstmal durch die ganzen SAS-Skripte durchsteigen.

00:10:28: Magst du da ein bisschen was zu erzählen, wie das war, wie einfach oder schwer das teilweise war?

00:10:32: Und wenn es Probleme gab, gab es die vielleicht eher aufgrund der Sprache, aufgrund der Sündtags

00:10:39: oder aufgrund eines Use-Cases oder fehlender mathematischer Kenntnisse?

00:10:44: Gute Frage, also ich meine, also eine Sache, die grundsätzlich mir nicht von Anfang an

00:10:57: in dieser Deutlichkeit bewusst war, ist, wenn du hast ein bestehendes Produktivsystem

00:11:03: und du hast da drin Analysen und du willst die migrieren,

00:11:07: dann musst du dir auch erstmal darüber klar werden,

00:11:11: ist es dein Ziel, die eins zu eins zu migrieren, genauso wie sie sind,

00:11:15: oder wirst du sie vielleicht dabei auch direkt optimieren?

00:11:18: Und wenn das Produkte sind, die hinten in einer bestimmten Reportingkette eingebunden sind,

00:11:24: ist es mitunter manchmal wichtiger, dass bestimmte, wie heißt das, Imperfektionen,

00:11:32: also bestimmte, ja fragwürdige Dinge erstmal erhalten bleiben,

00:11:36: damit ich sagen kann, okay, alles ist so, wie es vorher war, bevor ich sage, vielleicht ich mache das anders.

00:11:43: Und dann bist du an einem Punkt, wo du dann sehr speziellen SAS-Code auf einmal in Python

00:11:52: wirklich auch versucht oder in PySpark genauso nachzubauen, um genau die gleiche Logik zu erzeugen.

00:12:00: Auch wenn du spontan denkst, das würde ich jetzt vielleicht in einem Viertel der Code-Zeilen mit Python machen

00:12:08: und würde irgendeinen Package dafür nutzen und hätte ein Ergebnis, das ich für sinnvolle achte.

00:12:14: Aber so, und dann, da wurde es dann eben, genau das wurde dann wichtig, dass wir irgendwann wirklich gesagt haben,

00:12:23: um eine Analyse zu migrieren, haben wir Testdaten und wir führen die Analyse im Altsystem und im Neusystem

00:12:30: auf diesen Daten durch und dann muss das gleiche rauskommen.

00:12:33: Also wichtig ist erstmal quasi Konsistenz im Reporting und gleiche Ergebnisse.

00:12:37: Und wenn das hergestellt ist, kann man dann darüber nachdenken, ob man begründet, jetzt noch Fehler aus März,

00:12:45: Dinge optimiert, vielleicht auch ein Betrachtungswinkel ein bisschen ändert und ein bisschen was anderes macht.

00:12:50: Das heißt, der Umstand der Ergebnisgleichheit war erstmal die größte Herausforderung, wenn ich das richtig rausgehört habe?

00:12:56: Genau, weil, also, Edward hat es sehr gesagt, ich hatte am Anfang noch nur sehr begrenzt, ich glaube, ich habe ein Clocodo SAS-Course gemacht.

00:13:05: Okay, ein Clocudo SAS-Course?

00:13:07: Ja, gab es, da habe ich dann gelernt, wie ich SAS Procedures und Data Steps formuliere und was man da so machen kann.

00:13:14: Von Clocudo?

00:13:15: Ja, echt Clocudo, Coursera.

00:13:18: Ah, so, ja.

00:13:19: Ich verwechsel gerne Clocudo und Coursera irgendwie.

00:13:22: Okay, ich daten, Clocudo ist unser Zeitabfallsystem, ich dachte, ich bin ein Fan.

00:13:26: Ein Coursera, genau, ein Coursera SAS-Course hatte ich vorher gemacht.

00:13:31: Genau, und dann gab es aber typischerweise zu Analyse und Confluencer-Heiten und da stand dann drin, ja, das ist der Algorithmus, der entwickelt wurde, folgende Fragestellungen gehöhrt, auch folgende Art und Weise beantwortet.

00:13:46: Genau, und was dir dann natürlich passieren kann, ist, ich glaube, ein Problem von Confluence, wenn man sich nicht viel Mühe gibt, ist, dass das schlecht alt hat.

00:13:56: Dann kann eben so ein Analyse auch mal ein paar Jährchen alt sein und wurde, ist mittlerweile in Version 11 und Confluence ist aber noch auf Version 2.

00:14:04: Und dann wundert man sich, wo bestimmte Dinge im Code zu finden oder nicht zu finden sind.

00:14:09: Und man ist geneigt zu sagen, ah, okay, ich lese Confluence, ich verstehe, was ihr wollt, habe ich schon mal so ähnliche Pfeifen gemacht, kann ich schnell machen und stelle dann im Code fest, da sind noch vier Extra-Schleifen, die ich jetzt genau so mitten nehmen muss.

00:14:26: Andere Sachen, die dir passieren kann, also wir sind jetzt schon sehr in den Details, aber eine andere Sache, die dir auch passieren kann, in SAS war es, hatte ich da ein paar Beispiele, wo das recht performant funktioniert hat.

00:14:38: Mit Vorloops Tabellen zu verarbeiten und zu joinen und andere Dinge dran zu joinen.

00:14:44: Das war in PiSpark nicht sehr schön, weil in PiSpark die Query Plants hinter den Data Frames immer länger wurden und da haben sich manchmal Bugs und Fehler eingeschlichen und dann musste man das zwischendurch persistieren, damit das nicht geklappt hat.

00:14:58: Und wenn dann aber so ein Loop doof geschrieben ist und da drin irgendwas Zentrales passiert war es nicht so leicht, den loszuwerden an allen Stellen.

00:15:05: Und da ist Zeit reingeflossen.

00:15:09: Okay, um zurück zu den Basics zu kommen, erstmal war dein Problem weniger SAS, sondern eher also Umstände insgesamt.

00:15:17: Also da war die größte Herausforderung drin, nicht das zu verstehen, was man da jetzt eigentlich sieht, sondern auch eher so normale Projektsachen.

00:15:25: Also auch das, was du gesagt hast, schlechte Alternatoren, Dokumentationen, das ist ja nicht mal zwingend ein SAS-Problem, sondern eigentlich auch wieder ein Teamproblem.

00:15:33: Und generell das, was du gesagt hast, du willst quasi das neue System erstmal gegen das alte System testen, weil du dem alten System mehr vertraust als das neue System, das ist ja auch wieder unabhängig von dem Migrationscase, den man jetzt eigentlich hat.

00:15:51: Was mich zur Frage bringt, wir haben hier als Stichpunkt "Ziele und Business Value" definieren bei unserer Podcast Outline.

00:16:00: Und für mich klingt das jetzt so, als seien die Ziele primär oder auch der Business Value, man will Lizenzkosten sparen und man will mehr State of the Art sein, indem man Pfeifen nutzt und bessere Anbindungen hat, als man es zum Beispiel mit SAS hat.

00:16:15: Also, ich meine, Pfeifen ist halt riesig.

00:16:18: Gab es da noch mehr Gründe oder beschreibt es das schon ganz gut?

00:16:23: Genau, also ich glaube, ich will meinen Texteck auch erweitern.

00:16:29: Also, ich möchte die Möglichkeit haben, noch alle möglichen verschiedenen anderen Services zu nutzen, wo die Integration in SAS vielleicht ein bisschen schwierig war.

00:16:39: Und ich weiß ich auch ehrlich gesagt nicht, inwiefern das geht. Ja, auch bestimmte direkte Features bei Databricks nutzen, die mir SAS nicht bietet.

00:16:53: Und im Optimalfall geht es dann hinten auch um so Sachen wie Performance, Skalierbarkeit, leicht erhöhen ohne da das nächste größere Lizenzpaket kaufen zu müssen.

00:17:04: Wobei ich da auch sagen muss, in vielen Beispielen war das unglaublich performant, das war gar nicht so leicht daran zu kommen.

00:17:10: Mit Databricks, DataBricks, Spark, okay.

00:17:13: Kann jetzt auch an meiner Imperfektion liegen, aber war nicht so leicht.

00:17:18: Nee, ist super spannend zu hören, das heißt, letztlich hat man sich nicht zwingend über für eine trivial, leichtere oder bessere Option entschieden, indem man zu Databricks geht.

00:17:30: Das waren schon komplexe Gründe, das war jetzt nicht so grundlegend, eine falsche Entscheidung, so klingt das für mich.

00:17:36: Nee, also man war ja einige Jahre lang auf SAS und das war auch erfolgreich, aber dann bricht halt vielleicht irgendwann eine neue Zeit an.

00:17:44: Und man muss sich die Frage stellen, ob man der mit SAS noch begegnen will.

00:17:48: Und dann ist es ja auch eine Frage von, also wenn ich dich jetzt einstellen wollen würde und würde dir sagen, wir machen SAS und so sieht die SAS Programming Language aus.

00:17:59: Oder möchtest du die Sachen machen, die du von Python kennst und die Möglichkeiten, die du damit hast, es ist auch schwieriger Leute zu motivieren.

00:18:05: Und also die wollen ja auch das Gefühl haben, auf einer zukunftsträchtigen Technologie zu arbeiten und sich weiterzubilden.

00:18:13: Ja, genau.

00:18:15: Sehr schön. Ich würde sagen, wir gehen mal rein in deinen Sweet Spot.

00:18:20: SAS ist jetzt nicht unbedingt ein Sweet Spot, das ist halt, du bist kein Experte in SAS und du hast nur dafür gesorgt, dass man von SAS weggeht.

00:18:26: Das reicht ja auch nur. Das heißt, alles, was bisher gesagt wurde, ist mehr oder weniger, ich nenne es mal ganz vorsichtig Halbwissen, begründetes Halbwissen, wohlgemerkt, in Richtung Databricks.

00:18:37: Gehen wir jetzt mal.

00:18:39: Wie lief denn so die Migrationsphase? Wie kann ich mir das vorstellen?

00:18:44: Genau. Also ich, also in meinem Kopf würde ich die Gliedern in eine Initiale Phase, die eigentlich stattgefunden hat, bevor ich auf das Projekt kam.

00:18:56: Und das ist die Planung und Vorbereitung, wo man irgendwie sich definiert, was muss eigentlich alles migriert werden.

00:19:05: Was sind unsere Malensteine in Bezug auf die Datentöpfe, die migriert werden müssen, welche Analytik muss umgezogen werden.

00:19:15: Vielleicht gibt es auch irgendwelche Faltendinge, die nicht mit rübergenommen werden müssen.

00:19:19: Wie viele Pipelines, die einzurichten sind und wie viel Zeit veranschlagen wir dafür, wie viele Ressourcen und wie binden wir das ein in unseren aktuellen, ja, Live Betrieb.

00:19:35: Also typischerweise sagt man ja nicht, wir sperren jetzt den Laden zwei Jahre zu und machen dann auf, wenn wir auf einem neuen System sind.

00:19:42: Sondern ich habe konstant Analysen zu liefern, Modelle zu erneuern, zu benutzen, Daten zu verarbeiten.

00:19:53: Während ich das umziehe und dafür muss man das alles organisieren.

00:19:57: Ich glaube, da in dieser Phase wird schon sehr, sehr viel gewonnen und verloren, wenn ich mir, wenn ich es da schaffe, zu einer realistischen und möglichen Schätzung zu kommen.

00:20:06: Und ich glaube, was super wichtig ist, ist Priorisieren.

00:20:10: Weil, also gerade Alex ist ja auch ein großer Fan des Pareto-Prinzips und die wichtigsten 80 Prozent, die sollte man identifizieren und rüberholen.

00:20:21: Und man kann sich an den restlichen 20 Prozent extrem lange aufhalten und die können sehr kompliziert sein.

00:20:27: Und das willst du nicht am Anfang machen.

00:20:31: Und du bist jetzt gerade im Punkt Planung. Wie lange war das Projekt geplant und wie lange hat es gedauert?

00:20:39: Ich habe da nicht die, also ich habe nicht die genau, ganz genaue Infos oder ich habe sie zumindest nicht mehr im Kopf.

00:20:45: Ich glaube, da wurden ursprünglich mal ein halb Jahr oder so für veranschlagt und es hat länger gedauert.

00:20:53: Ein bisschen länger, sehr gut. Ja, passiert.

00:20:57: Ich habe selten einen Migrationsprojekt erlebt, welches komplett im Zeitplan war.

00:21:02: Also auch ich in meinen vergangenen Projekten war eigentlich immer drüber.

00:21:07: Und es gibt immer Gründe, warum man drüber fällt.

00:21:09: Bei uns waren es oft, man hatte irgendeinen Inzident, der kam rein, der ist halt erstmal da, der wurde dann überpriorisiert.

00:21:14: Du hast eben noch das Alltagsgeschäft.

00:21:16: Du musst jetzt eine neue Analyse bauen, baust du das jetzt nur auf dem alten Sasssystem oder schon auf dem neuen Fancy Data Bricks System.

00:21:24: Und dann hast du gegebenenfalls auf einmal eine neue Analyse im Sasssystem drin, die vorher nicht in der Planung drin war.

00:21:30: Und die musste dann hinten rausrüber nach Data Bricks ziehen.

00:21:34: Ja, auf jeden Fall.

00:21:36: Aber ich glaube, was halt sehr sinnvoll ist, oder so Best Practice System, den man folgen kann.

00:21:44: Man kann ja seinen aktuellen Betrieb mal sich anschauen.

00:21:48: Und man kann sich anschauen, was sind die wichtigsten Analyse, die wir wirklich jede Woche, jeden Monat benutzen.

00:21:54: Welche Datentöpfe sind die, wo die zentralen Informationen für uns drinstehen.

00:21:59: Und dann hat man ja immer noch irgendwas Außenliegendes.

00:22:02: Ja, einmal im halben Jahr will der Vorstand auch das und das wissen.

00:22:06: Und ja, wir haben da auch mal so ein Modell gebaut und das läuft manchmal mit.

00:22:10: Aber wir können auch ohne, und im Zweifelsfall macht das irgendwie Otto per Hand.

00:22:17: Genau, und ich glaube, wenn man die identifiziert und die am Anfang rüberzieht, dann hat man auch ein bisschen selber,

00:22:25: verschafft man sich wieder mehr Beinfreiheit.

00:22:27: Weil dann kann ich im Zweifelsfall auch sagen, pass auf, wir schalten das alte System jetzt ab.

00:22:32: Wir können auch leben ohne diese letzten Reste, die noch nicht migriert sind.

00:22:37: Das kann ich aber nicht machen, wenn da noch ein paar meiner zentralsten, essenziellen Methodiken draufliegen.

00:22:44: Und dann verliere ich das. Das heißt, die ganz nach vorne zu schieben und damit anzufangen und die durchzutesten.

00:22:50: Ich glaube, das ist super wichtig.

00:22:52: Darf ich fragen, wie viele Analysen weggeworfen wurden?

00:22:55: Über einen Daumen, wann das dann wirklich 20 Prozent, also wegen Pareto oder eher tendenziell weniger.

00:23:00: Hast du da ein Gefühl für?

00:23:01: Also, ich würde, mein Gefühl wäre unter 20, ich habe da aber auch nicht den Gesamtüberblick.

00:23:06: Aber ich würde sagen, unter 20 Prozent auf jeden Fall, wahrscheinlich so unter 10 Prozent.

00:23:15: Was wir halt auch gemacht haben ist, wir haben tatsächlich auch so ein paar Dinge ein bisschen geändert.

00:23:20: Also, die Frage ist zum Beispiel, was ist eigentlich eine Analyse?

00:23:25: Und ist eine Analyse nur quasi wie ein fest definiertes Produkt?

00:23:32: Oder ist das ein bestimmtes Modell, was ich trainiere, was ich immer wieder anwende?

00:23:37: Oder sind das auch so Fragestellungen, die ich mal ad hoc beantwortet habe,

00:23:42: wo ich mir im Zweifelsfall jetzt auf Databricks gesprochen, mal mit einem Notebook ein paar Fragen nachgegangen bin?

00:23:47: Was aber vielleicht interessant und wertvoll ist, was ich irgendwann nochmal benutzen könnte, was aber noch nicht systematisiert ist.

00:23:52: Was noch nicht quasi Teil deiner Toolbox geworden ist.

00:23:56: Und das ist ganz schwer zu zählen, welches da gab, weil es da nicht so eine Übersicht gab.

00:24:01: Was man versucht haben ist, wir haben grundsätzlich versucht, hinterher auch mehr Dinge in so einer modularen Struktur aufzufassen.

00:24:08: Ja, halt programmiert.

00:24:10: Genau.

00:24:11: So ein blödes Kling.

00:24:13: Aber das bringt mich einfach hemmungslos rüber zum nächsten Punkt.

00:24:16: Ich meine, du bist ja als Dienstleister unterwegs mit uns hier bei Elionha.

00:24:20: Das heißt, du kommst jetzt in ein bestehendes Team oder das war ein bestehendes Team in dem Fall.

00:24:25: Das war kein reines Endkundenprojekt, so wie wir es manchmal haben, sondern du bist halt gestafft.

00:24:30: Du arbeitest jetzt auf einmal mit fünf fremden Personen zusammen mehr oder weniger.

00:24:34: Und diese Personen waren in dem Fall ihr Leben lang auf Saas unterwegs.

00:24:42: Wie gut hat die Umstellung eigentlich geklappt auf ein neues System?

00:24:47: Und das inkludiert dann quasi auch so etwas wie vielleicht das erste Mal Umgang mit Microsoft Azure, was genutzt wurde.

00:24:53: Oder der erste Umgang mit Git oder der erste Umgang mit Databricks.

00:24:57: Wie gut hat das funktioniert und welche Herausforderungen hast du da gesehen bei dem Team, mit dem du zusammengearbeitet hast?

00:25:02: Oder vielleicht auch bei dir selbst?

00:25:04: Ja, also ich meine, so ein Team ist ja dann doch immer auch recht heterogen.

00:25:09: Und es gab schon, also da war auch ein Tag Lead, der hatte schon, der kam selber aus der Pfeifenwelten,

00:25:17: hatte sich auch vorher mit Databricks beschäftigt und hatte gute Ahnung.

00:25:22: Und der hat auch so die grundsätzliche Struktur am Anfang definiert, wie damit gearbeitet werden soll.

00:25:28: Und dann hat auch versucht, so zu machen.

00:25:30: Best Practices einzuführen und grundsätzlich ein recht systematisches Denken gehabt.

00:25:35: Und es gab einige Leute, die kürzer vielleicht im Unternehmen waren, die auch kamen, die

00:25:46: schon bei Vertragsunterschrift wussten, da steht die Migration an und ich komme, weil

00:25:49: ich später auf Databricks arbeiten will und auf Escher arbeiten will.

00:25:52: Und die mussten dann noch sass lernen und waren aber quasi quasi Studium oder Vorherjahrtops

00:25:58: auch eher auf Pfeifen unterwegs.

00:26:01: Und dann gibt es, hast du daneben natürlich Leute, die schon länger da sind und die sehr

00:26:07: gut auch insass sind, die auch sehr wichtig sind, weil sie ein sehr starkes Domänenwissen

00:26:12: haben und die das aber seit Jahren nur aufsass machen für die Pfeifen aus.

00:26:18: Also wo es dann am Anfang wirklich, ich glaube, Judemy Kurse gehabt, die machen konnten,

00:26:23: auf Pfeifen zu lernen und da ist das natürlich hart, weil dann ein bisschen auf dich eine

00:26:29: Welt einbrechen kann.

00:26:30: Also dann bist du jemand, der eigentlich, also der quasi in dem bestehenden System sehr

00:26:35: wichtig ist und quasi auch zum Teil implizites Wissen hat, wo für die Leute zu dir kommen

00:26:39: müssen, weil nur du diese Frage aufsass beantworten kannst.

00:26:42: Und auf einmal bist du jemand, der die Programmiersprache nicht kann, der Databricks nicht kann,

00:26:46: der auf Top-of-Pfeifen die PiSpark und die Spark denkweise noch nicht verinnerlicht hat.

00:26:53: Für den Git neu ist und der so wie allen anderen auch dem Daten im neuen Datenmodell zur Verfügung

00:27:01: gestellt werden mit ganz neuen Problemen und da kann es natürlich sein, dass man manchmal

00:27:10: auch einen gewissen Wiederwillen hat und sich denken, meine Güte, warum muss ich vom Meister

00:27:15: wieder zum Lehrlingen werden?

00:27:16: Genau und ich glaube da ist dann wieder so ein Konsultingbegriff Change Management.

00:27:24: Ganz wichtig, dass man die Leute mitnimmt, die weiterhin Wertschätzt für das, was sie

00:27:29: schon einbringen und ihnen zeigt, warum es für sie und das Unternehmen trotzdem auch

00:27:33: Gutes auf den neuen Texteck zu gehen.

00:27:36: Und inwieweit warst du, ich sag mal Programmierer und inwieweit warst du Coach vielleicht ein

00:27:42: Stück weit für genau solche Leute?

00:27:44: Genau, also meine Rolle war schon primär immer, mich mit der neuen Welt zu beschäftigen,

00:27:52: zu definieren, wie Dinge da aussehen sollen und die dann auch dahin zu bringen und dann

00:27:57: aber auch, ich war ja quasi das freie Radikal, der nicht im Tagesgeschäft ist, der nicht,

00:28:05: die wir brauchen innerhalb dieser Woche aufs Sass folgende Antwort, Lösung geben muss.

00:28:10: Dafür auch mein Sasswissen gar nicht gereicht hätte.

00:28:13: Und das heißt, dadurch bist du dann natürlich immer der erste Ansprechpartner.

00:28:18: Also zum einen, du verbringst am meisten Zeit auf Databricks, solltest dich da vermutlich

00:28:22: am besten auskennen und du hast dann auch Zeit, das anderen zu erklären.

00:28:26: Dadurch macht man das recht oft, aber dann einfach auf einer persönlichen Ebene, in dem

00:28:32: man zum einen immer anbietet, dass man da ist für Fragen zur Verfügung stellt.

00:28:36: Und was wir gemacht haben ist, wir haben dann so böchentliche Meetings gehabt, wo ich dann

00:28:42: einfach auch immer so ein bisschen, so ein Mini-Kurzvortrag gesagt habe, was sind Dinge,

00:28:47: die mir neu aufgefallen sind, die wichtig sind.

00:28:49: Typischerweise, wenn wir irgendwas von hier nach da migrieren, das und das ist wichtig.

00:28:54: Oder ich habe jetzt hier allgemeinen Code geschrieben, den können wir immer für irgendwas benutzen

00:28:59: und da ein bisschen versuchen, das Wissen zu teilen.

00:29:03: Also ich glaube, das ist recht wichtig, dass man da versucht, kommunikativ zu sein.

00:29:07: Und lustigerweise wurde mir hinterher auch gesagt, dass das ein Grund war, warum ich

00:29:12: auch quasi genommen wurde auf die Stelle, anstatt von jemandem, der vielleicht schon

00:29:19: 50-mal sowas migriert hat, weil ich zum Teil auch selber noch eine Lernkurve auf Data

00:29:24: Bricks hatte und dann recht kommunikativ und das mitgeteilt habe.

00:29:28: Jemanden an sich das macht es vielleicht einfach und ist still darüber und sagt dann

00:29:31: nichts mehr.

00:29:32: Ich glaube, das ist ein ganz wichtiger Punkt.

00:29:33: Mit Erfahrung verliert man den Blick für das Schwere.

00:29:36: Wenn du selber mal gegen eine Wand gelaufen bist, sagst du allen anderen, hey, ich habe

00:29:41: mir mal gefunden.

00:29:42: Ja, man ist sehr schnell und gerade in der Programmierung desensibilisiert für sehr

00:29:47: viele Probleme.

00:29:48: Und manchmal, ich glaube, das ist ein ziemlich guter und wichtiger Punkt, manchmal ist es

00:29:55: gut, einfach selbst aktiv mitzulernen, damit man die Probleme der anderen nachvollziehen

00:29:59: kann.

00:30:00: Genau.

00:30:01: Und vielleicht auch vorbeugen kann.

00:30:02: Ja, und ich glaube, das ist allgemein auch so eine Sache, auch wenn man jetzt Leute hat

00:30:06: für die neuen Techniken Neusungen, die in den anderen gut sind, die haben halt noch ein

00:30:10: Problem.

00:30:11: Dadurch dass die, die Experten in dem alten System sind, haben die am wenigsten Zeit das

00:30:15: neue zu lernen, weil die die ganze Zeit im alten gebraucht werden.

00:30:18: Also es ist so eine Sache, die man mitbedenken muss.

00:30:21: Wie schaffe ich es denen den Freiraum zu geben, die neuen Dinge zu lernen?

00:30:26: Wenn du das sagen möchtest, waren die auch intrinsisch motiviert auf Databricks zu

00:30:32: gehen oder zu migrieren oder war das eher eine Entscheidung, die von oben kam?

00:30:36: Ich glaube, da gibt es auch wieder große Unterschiede zwischen Leuten.

00:30:40: Ich würde sagen, es gab beides.

00:30:42: Also es gab, ich würde schon sagen, ich habe an der einen oder anderen Stelle auch den

00:30:46: Weihbar genommen.

00:30:47: Warum muss ich mir das antun?

00:30:48: Ich habe mich doch wohl gefühlt da, wo ich bin.

00:30:50: Und es gibt aber auch Leute, die sagen, ja macht voll Sinn und ich habe da auch Bock

00:30:53: drauf und ich sehe auch die, die coolen Sachen der neuen Welt.

00:30:59: Ja gut, es ist nicht alles schwarz und weiß.

00:31:03: Aber sehr wichtige Punkte im Allgemeinen, das ist so ein bisschen teamwise gewesen.

00:31:09: Gerade das mit der neuen Welt ist natürlich etwas, was man immer bedenken muss.

00:31:13: Ich muss gestehen, ich habe es auch schon mal mehr oder weniger am eigenen Leib gespürt,

00:31:17: weil am Ende, man ist ja etwas dran, man ist ja etwas drin, was man sehr gut beherrscht.

00:31:23: Und auf einmal wird es einem so ein bisschen weggenommen.

00:31:26: Genau so ist es.

00:31:27: Und damit muss man glaube ich erstmal klarkommen.

00:31:29: Das ist sehr, sehr herausfordernd und wahrscheinlich noch wesentlich heraushohndernder als die

00:31:33: rein technische Migration an sich, eben genau diese Leute mitzunehmen.

00:31:37: Und ich glaube dafür gibt es keine Patentrezepte.

00:31:40: Aber vielleicht, ich finde wir neigen uns langsam schon dem Ende so ein bisschen.

00:31:45: Wir haben über die Teamkultur geredet, wir haben über die Planung geredet.

00:31:50: Woran hast du jetzt eigentlich erkannt, dass du mit bestimmten Bausteinen fertig warst?

00:31:57: Einfach, wenn sie, ihr habt jetzt etwas aus dem alten Sasssystem übermigriert, hat es

00:32:02: gereicht, einfach zu schauen, ob die alten Ergebnisse und die neuen gleich waren oder

00:32:06: gab es noch mehr Anforderungen als diese?

00:32:08: Es ist tatsächlich was, das habe ich immer, also ich habe mir diese Frage auch oft gestellt

00:32:13: und wir haben die dann gemeinsam iterativ immer weiter erweitert.

00:32:19: Also wir haben uns überlegt, was ist eine Definition auf dann?

00:32:21: Im Prinzip ja, eine Migration einer, nehmen wir Migration einer Analyse oder eines Modells.

00:32:29: Und wenn man da so naiv dran geht, fängt man an und sagt, okay, wir haben eben gesagt,

00:32:35: jetzt musst du das gleiche rauskommen wie auf dem alten System.

00:32:38: Alles cool.

00:32:39: Und da konnte man so Sachen, wir haben uns dann so repräsentative Datensätze gebaut,

00:32:45: haben die rübergezogen und haben dann das auf beiden Systemen getestet, kommt die gleiche

00:32:50: KPI raus zum Beispiel.

00:32:54: Alles cool, bin ich fertig oder vielleicht nicht.

00:32:58: So, das erste Offensichtliche ist oder was heißt offensichtlich eine Sache, die ich

00:33:03: gut finde ist, wir haben gesagt, wir wollen grundsätzlich, da wir jetzt eh alles neu schreiben

00:33:09: und den Code komplett neu schreiben, dann soll der besser werden und der soll schöner

00:33:13: werden, das heißt wir wollen Code Guidelines haben, wir wollen bestimmte Doc Strings an

00:33:20: unseren Methoden haben, wir wollen Methoden möglichst für allgemeinern und eine gemeinsame

00:33:26: Codebase machen und wir wollen grundsätzlich einführen so die Art zu arbeiten, gab es vorher

00:33:32: noch nicht, wir machen Code Reviews und wir machen Pull Requests, nutzen halt die ganzen

00:33:37: Git-Möglichkeiten, um das Wissen auch zu transportieren.

00:33:39: Das heißt, wir haben direkt schon mal einen Busfaktor von zwei anstatt von eins.

00:33:43: Theoretisch.

00:33:44: Im Optimal, wenn es gut läuft.

00:33:46: Das ist die eine Sache, die andere Sache, kleiner Testdatensatz ist so eine Sache, wenn

00:33:51: du mit einigen hundert Gigabyte an Daten zu tun hast, in echt, denn wir hatten den Fall,

00:33:58: dass Analysen haben funktioniert innerhalb von einer Minute gleicher Ergebnis auf beiden

00:34:01: Systemen und dann hieß es ja, und jetzt mach mal auf den Gesamtjahresdaten und lief nicht,

00:34:09: wurde nicht fertig, hat gar nicht funktioniert, das heißt, Perfomanten, Piesbar Code schreiben

00:34:14: und gucken, wie definiere ich mehr Performance-Tests für meine Analysen, dass ich die auch wirklich

00:34:20: in der Zeit durchbekomme, wo das klappt.

00:34:22: Das ist nicht so ganz generisch möglich, weil, also jede Analyse ist anders, ich kann

00:34:28: jetzt nicht sagen, jede Analyse muss in zehn Minuten durch sein, das geht schon mal gar

00:34:31: nicht.

00:34:32: Ich habe aber Werte aus dem Altsystem und wenn irgendwas im Altsystem eine Stunde gedauert

00:34:36: hat, will ich nicht, dass es jetzt 15 Stunden dauert.

00:34:39: Und ich muss mir halt überlegen, was sind die, ist die typische Datenmengen, auf der

00:34:44: ich so was mache, also gucke ich auf die Daten von einem halben Jahr, von einem Jahr, wo

00:34:51: sollte das drauf passieren, das heißt, da muss man wieder mit den Leuten reden, so was

00:34:57: sind die typischen Fragestellungen, die ihr mit diesem Modell, mit dieser Analyse beantwortet

00:35:01: und dann haben wir im Prinzip immer in der Pool-Request, hatten wir so eine Form, Definition

00:35:06: auf dann und das konnte dann alles das Häkchen gesetzt werden und da stand dann auch drin

00:35:10: Performance und die wurde dann akzeptiert oder nicht akzeptiert, ist die gut genug.

00:35:14: Genau, lass mich mal überlegen, was wir noch gemacht hatten, wir hatten nämlich noch mehr

00:35:21: Punkte.

00:35:22: Vielleicht einmal reingahakt.

00:35:24: Aber das ist jetzt eine, wahrscheinlich die Frage ist, meiner Unwissenheit in gewissen

00:35:32: Datascience Bereichen geschuldet, aber ich kann mir vorstellen, dass man Dezimalwerte

00:35:38: hat bei Analysen und da schleichen sich ja immer wieder Ungenauigkeiten ein, sei es

00:35:44: jetzt durch die Tatsache, dass man mit einem Float arbeitet zum Beispiel oder die Analyse

00:35:50: an sich, was halt oftmals eine Nährungsfunktion ist und wo sich die Werte nicht immer exakt

00:35:58: gleich nähern, aber vielleicht auf ein endlich weite Sicht, was weiß ich.

00:36:02: Wie seid ihr damit umgegangen, war das vorhanden?

00:36:05: Tatsächlich ist mir das auch passiert in den Testarten, ich bin dann also in den Testarten,

00:36:09: die wir erstellt haben, habe ich alles auf drei Nachkommersstellen gerundet, um damit

00:36:13: zu arbeiten, weil ich vorher gesehen hatte, dass ich, ich hatte glaube ich auf Databricks

00:36:18: irgendwie eine höhere Precision und die hat sich ein bisschen aufakkommoliert und auf

00:36:22: einen und dann war man so, war man irgendwie so in der zweiten Nachkommersstelle, weil

00:36:26: irgendwas ein anderer Wert, man denkt sich so, ist das jetzt systematisch oder waren

00:36:31: das irgendwelche Rundungsfehler, die ich da irgendwo unterwegs hatte und das haben wir

00:36:35: zumindest in den Testdaten dann gelöst mit einfach am Anfang Runden, den Inputrunden.

00:36:41: Genau auf den anderen Daten ist es nochmal ein ganz anderer Schnack, weil die sich sowieso

00:36:46: schon unterschieden haben.

00:36:47: Also das war dann halt auch spannend, die sind in dem Altsystem SASS, gab es ursprünglich

00:36:53: glaube ich auch ein Data Engineering Team in irgendeiner Form und die haben schon kuratierte

00:36:59: Daten bereitgestellt und wir hatten ein neues Data Engineering Team, was selber Daten kuratiert

00:37:04: hat, aber auf eine etwas andere Art und auch ein etwas anderes Datenmodell oder ja schon

00:37:09: recht deutlich ein anderes Datenmodell.

00:37:11: Und jetzt will ich dieselbe Frage beantworten und kann die auch auf den selben Zeitraum

00:37:16: einschränken und jetzt sieht es aber ein bisschen anders aus.

00:37:20: Bei einer anderen Inputdaten.

00:37:21: Ja und wo ist das okay und wo ist das nicht okay und da ist es dann wieder viel Domänenwissen,

00:37:27: viel mit Leuten sprechen und genau das ist tatsächlich auch der andere Punkt in der Definition

00:37:33: auf dann, dem jetzt wieder einfällt.

00:37:35: Bei dem speziellen Kunden hier war es so, wir hatten quasi die Developer, die den Code

00:37:45: geschrieben haben und Analyse entwickelt haben und dann gab es da auch so eine Art Berater,

00:37:50: die haben meistens diese fertigen Tools benutzt und haben die dann angewendet auf irgendwelche

00:37:55: Fragestellungen und haben das dann weiterverarbeitet.

00:37:58: Und die haben selber nicht den Code im Detail verstanden, die haben aber recht gut die Analyse

00:38:03: verstanden und die wussten, was soll daraus kommen und die hatten Erfahrung davon diese

00:38:07: Analyse schon 20 mal gemacht zu haben.

00:38:10: Und mein Ziel war immer, dass sich am Ende eine Analyse in Pfeifenfalls und Klassen geschrieben

00:38:17: hatte und definiert hatte und dann habe ich ein Template zur Verfügung gestellt, wie

00:38:20: die zu benutzen ist in einem Databricks Notebook.

00:38:22: Und das war mit Markdown möglichst gut erklärt, sodass die quasi nur noch parametrisieren

00:38:28: mussten.

00:38:29: Ich definiere alle Parameter, die ich nehme und drücke auf Run und dann kriege ich

00:38:31: die Outputs in der gewünschten Form und die sollten dann auch entsprechend beschriftet

00:38:36: und dokumentiert sein.

00:38:37: Und das Ziel war immer, dass so ein Template jemand nehmen kann, benutzen kann und kommt

00:38:42: damit klar und versteht das.

00:38:47: Und kann dann auch quasi schon im Parallelbetrieb Analysen auf beiden Systemen mit beiden kompletten

00:38:51: Datentöpfen durchführen und kann da dann immer testen, macht das Sinn.

00:38:55: Ich habe bei irgendwas raus, 20 Kunden machen irgendwas, beim anderen kommt 20,5 Prozent

00:39:01: der Kunden machen das.

00:39:02: Ist das sinnvoll, ist das nicht sinnvoll, kann ich mir das erklären.

00:39:07: Mit Parallelbetrieb meint man quasi, dass das alte Sasssystem parallel zum neuen Datantungssystem

00:39:14: betrieben wurde und dass dann die Leute sich angeschaut haben, was machen eigentlich

00:39:18: die beiden Analysen.

00:39:19: Genau.

00:39:20: So kann man es machen.

00:39:22: Das heißt, zum Beispiel du machst Throat Detection, hast du eine Kartenerwicklung und machst du

00:39:27: auf beiden Systemen und dann guckst du dir an, welche Bonds werden Throat Detected, welche

00:39:32: fehlen, warum fehlen die, warum fehlen die nicht und ist das im Großen und Ganzen das,

00:39:37: was ich erwarte.

00:39:38: Das ist dann auch, für mich klingt das nach viel manueller Testschreib, das ist nicht

00:39:42: rein generisch, wo du einfach ein Unitest schreibst und du sagst, es ist Throat X gleich

00:39:47: Y.

00:39:48: Genau.

00:39:49: Also das ist quasi, es geht ja ein bisschen weiter als ein Unitest, das ist quasi dieser

00:39:52: erst, ich habe einen festen Testdatensatz und da soll das gleiche rauskommen.

00:39:56: Das Problem ist, der kann nicht immer die Komplexität den ganzen realen Welt abdecken, weil schaffst

00:40:01: du nicht, dir den so auszudenken, dass da all die besonderen Dinge vorkommen, die sonst

00:40:06: so in der Welt vorkommen.

00:40:07: Und das heißt, du musst irgendwann auf die großen Daten und da musst du dann quasi heuristisch

00:40:13: hervorgehen im Prüfen.

00:40:15: Ja.

00:40:16: Super.

00:40:17: Das ist doch mal relativ rund.

00:40:22: Vielleicht die abschließende Frage.

00:40:24: Wir haben schon viel über Herausforderungen geredet.

00:40:26: Was war für dich so die größte Herausforderung an diesem ganzen Migrationsprojekt?

00:40:31: Oder worauf kommt es zusammenfassend an?

00:40:36: Ich meine, eine Sache, über die wir noch nicht so gesprochen haben, ist, also wir haben

00:40:41: jetzt ja recht viel über Team gesprochen und um Analytik und Modelle transferieren.

00:40:48: Und wir haben jetzt so gestriffen die Daten, dass die auch transferiert werden müssen.

00:40:51: Ein Problem ist zum einen, ich muss das in eine zeitliche Reihenfolge bekommen und de facto

00:40:57: läuft ja alles parallel irgendwo.

00:40:59: Und dann hast du so ein Thema, also dann hast du vielleicht ein Team, das die Daten

00:41:05: migriert, eins was die Analysen migriert und die, gerade die fehlenden Daten blockieren

00:41:10: die Analysen.

00:41:11: Und wenn da Änderungen nochmal passieren, wir haben das Datenmodell doch nochmal geändert.

00:41:17: Irgendeine Tabelle gibt es nicht mehr, die gibt es auch noch und du hast aber vorher

00:41:20: schon auf die zugegriffen, musst du alles wieder ändern und musst das anpassen.

00:41:23: Und die Sanity Checks, die du auf deinen Daten machen willst, auch die Sanity Checks auf

00:41:30: deinen Live Pipelines, die du machen willst.

00:41:32: Und da fällt dir dann auf, irgendwas geht dann doch nicht so, wie wir es geplant hatten,

00:41:36: weil da geht irgendwas verloren, wir ändern das und dann drehst du runden.

00:41:39: Ja.

00:41:40: Und gerade wenn das, also ich glaube zu einem Grad wird dir das immer passieren, wenn das

00:41:45: aber optimal vorher geplant hätte, so gut wie möglich, würdest dir möglichst wenig

00:41:50: passieren, das wäre gut.

00:41:52: Um da reinzuhaken, ich habe so ein bisschen Bücher von Confluent gelesen, die betreiben

00:41:59: ja unter anderem Kafka.

00:42:00: Und ein Statement dort ist, Fehler sind nicht vermeidbar, Fehler sind erwartbar.

00:42:05: Ja, genau.

00:42:06: Egal wie gut du planst am Ende, du wirst immer in irgendwelche Fehler reinlaufen, natürlich

00:42:11: du wirst die Fehlerquote minimieren, aber eigentlich, das was du nicht mal zwingend

00:42:16: willst, ist sie zu minimieren, so wie ich es gerade gesagt habe, sondern du wirst möglichst

00:42:20: gut mit Fehlern umgehen können und möglichst effizient.

00:42:23: Genau.

00:42:24: Und im Prinzip, ich glaube würde das das gleiche Team, die gleichen Teams, die gleiche Migration

00:42:33: nochmal machen würde, die vermutlich jetzt auch deutlich schneller nochmal funktionieren,

00:42:37: weil man jetzt einfach so ein paar Prinzipien gelernt hat, wie man mit Sachen umgeht, wo

00:42:40: man sich Backboards einrichtet, Daten bezogen.

00:42:44: Wir haben offensichtlich wurden hier Monitoring, Databricks, Live-Sql, Dashboards, jeden Tag,

00:42:50: wie viele neue Daten sind reingekommen und darauf eine Outlayer Detection ist, dass

00:42:54: irgendwie krass weniger als erwartet fehlt uns aus einem bestimmten Topf eine bestimmte

00:42:59: Information diesmal.

00:43:00: Habt ihr das selbst gebaut, dieses Monitoring?

00:43:03: Ja.

00:43:04: Also das hatte, das ist auch so ein Thema Vernetzung der Teams, also die Data Engineers hatten das

00:43:09: für sich, aber die haben das mit einer reinen Daten denke, die denken ich bekomme irgendwo

00:43:16: Daten von der Schnittstelle in Xml-Files und ich will, dass all diese Daten am Ende bei

00:43:19: mir auch wieder da sind.

00:43:20: Fertig.

00:43:21: Genau, ist ja auch so und ein Analyst sagt aber, es kann nicht sein, dass da drin irgendwelche

00:43:27: Daten mit quasi unlogischen Werten sind.

00:43:30: Und in meinem alten System hatten wir da aber einen Tool, das hat die kuratiert und da konnte

00:43:35: ich eine Analyse genauso auf dieser Spalte machen und jetzt nicht mehr.

00:43:38: Weil auf einmal habe ich da totale Ausreißer drin oder irgendwo ein Data Engineer sagt,

00:43:48: alles ist da, wenn ich alles was ankam irgendwo reingeschrieben habe und irgendwie ein Analyst

00:43:53: sagt aber irgendwas ist nicht gekommen, meine Analyse hat gerade keine Aussage gekauft,

00:43:56: weil mir fehlen bestimmte Daten und das heißt der will wissen kommen aus dem jeweiligen

00:44:01: Pipeline kommen da all die Daten, die ich auch erwartet, dass sie kommen.

00:44:04: Und wo war eigentlicherweise der Fehler, weißt du das?

00:44:07: Also ich glaube es gab sowohl hier als auch da gleich viele Fehler.

00:44:12: Es ist nur eine andere Denke über diese Fehler, also welche Fehler man sucht und die zu reporten

00:44:17: und dann jemandem zu benennen, wer ist jetzt eigentlich verantwortlich dafür.

00:44:20: Das ist der Punkt, worüber ich rede, weil genau damit werde ich ja teilweise konfrontiert,

00:44:25: da sehe ich einfach Daten von einer nach B schiebe, ich sage ja, ich habe auch meinen

00:44:28: Job getan.

00:44:29: Genau.

00:44:30: Ich nehme ja auch nur das, was ich kriege.

00:44:31: Von daher hätte mich jetzt mal interessiert, es klingt ja so als hättet ihr mit einem

00:44:35: sehr klassischen Data Engineering Team zusammengearbeitet, die einfach nur euch die Daten

00:44:40: geliefert haben aus dem Quaysystem und ich sage mal, sie konnten nicht für die sementische

00:44:46: Korrektheit der Daten garantieren.

00:44:48: Genau.

00:44:49: Und das war glaube ich in diesem ganzen Projekt und das ist ein Beispiel, aber so eine Sache,

00:44:53: die nicht immer klar war, wo liegen diese Verantwortlichkeiten, weil dann sagen die einen,

00:44:58: wir haben unsere Analyse finalen Mikrihet auf Testdaten, kommt das gleich raus und die anderen

00:45:03: Daten sind halt auf Deutsch gesagt Mist, Pech gehabt.

00:45:07: Und die anderen sagen, wir haben aber alles, was über die Pipeline kam, korrekt da reingeschrieben,

00:45:11: wir sind auch fertig.

00:45:12: Und am Ende sind alle fertig und das Ergebnis ist aber nicht gut.

00:45:16: Und wie gehe ich damit um?

00:45:18: Und dann quasi mit den anderen dann doch Meetings zu machen, sich das aufzuteilen, vernünftig

00:45:24: da ein bisschen auf Augenhöhe miteinander zu sprechen und zu sagen, wer übernimmt,

00:45:29: was, an welcher Stelle.

00:45:30: Weil jeder hat ja dann auch wieder seinen definierten Aufgabenbereich und der sagt,

00:45:34: ich mache jetzt aber nichts, was da nicht drin steht.

00:45:36: Ich habe genug Stress mit meinen Problemen.

00:45:37: Wenn du, das geht jetzt in ein ganz anderes Thema, aber wir haben jetzt sehr, sehr klassische

00:45:43: Teamaufteilung, hättest du ein Ende zu Ende-Denkenes-Team für effizienter gehalten?

00:45:49: Also wenn ihr komplett selbst befähigt worden werdet euch die Daten aus dem Quersystem

00:45:54: zu holen beziehungsweise, ich weiß nicht, wie weit man da zurückgehen müsste.

00:45:58: Ja also ich weiß nicht, ob man, also ich glaube eine Spezialisierung von Teams hat

00:46:05: schon auch ihren Sinn, weil Aufgaben komplex sind und eine Spezialisierung erfordern.

00:46:10: Ich glaube aber so eine komplette Chinese Wall, die ist auch nicht gut.

00:46:15: Weil ich kann nicht einfach sagen, ich habe irgendwo eine Confluence-Seite und da steht

00:46:21: irgendwo drin, was in irgendeiner Spalte sein sollte und fertig und jetzt benutze ich das

00:46:24: und es ist mir völlig egal.

00:46:26: Also ich habe ein Tool, ich habe meinen Hammer und ich hau da drauf und was passiert, passiert.

00:46:31: Sondern ich glaube schon, dass es Sinn macht Verzahnungen zwischen den Teams herzustellen.

00:46:35: Also mein Gedanke war immer aus jedem Team, ein, zwei Leute die auch bei den anderen reinkommen

00:46:40: plus gemeinsame Reviews, wo man gemeinsam über Dinge spricht und quasi Kommunikationskanäle

00:46:46: aufmacht.

00:46:47: Ich muss um eine gute Analythik zu machen und gute Modelle zu bauen, muss ich wissen,

00:46:53: was habe ich da für Daten und was ist mit denen passiert.

00:46:55: Und ich weiß nicht, wie du das siehst, als Data Engineer, ich finde, ein Data Engineer

00:47:01: sollte auch schon ein bisschen den Anspruch haben, die Daten so bereitzustellen, dass

00:47:05: der Kunde, was damit anfängt, kann und nicht sagen kann, ich habe jetzt hier den ganzen

00:47:09: Haufen von der Miste von links nach rechts geschoben.

00:47:11: Viel Spaß damit.

00:47:12: Ich sage immer Shit in Shit auch.

00:47:14: Also, ja, es kommt natürlich immer auf die Denkweise an.

00:47:20: Je nachdem, wie weit mein Land unter ist, sage ich mal, steht man manchmal ein bisschen

00:47:28: besser zusammen als in anderen Zeiten, um es mal vielleicht so zu formulieren.

00:47:35: Und gerade so, ja, als Data Scientist solltest du deinem Data Engineer vielleicht auch mal

00:47:42: einen Salat ausgeben, damit die Arbeit noch stimmen.

00:47:45: Nein, Spaß.

00:47:46: Ja, gerade wenn du so ein klassisches Data Engineering Team hast, hast du ja oft auch

00:47:52: den Umstand, dass du verschiedener, andere Teams gleichzeitig bespielst.

00:47:56: Und dann die Daten zum Beispiel nicht immer kennst und teilweise mit sehr viel Variation

00:48:01: zu kämpfen hast.

00:48:02: Da gibt es ja immer sehr individuelle.

00:48:04: Ich meine, das ist dann eine Frage einfach, wie man da noch Positionen schafft und definiert.

00:48:09: So habe ich noch irgendwo Data Stewards einbauen, ob ich allgemein da irgendwie Product Owner

00:48:15: habe, die eben wirklich das definierte Aufgabengebiet haben, die Qualität der Schnittstellen und

00:48:21: die Qualität der Verzahnung zu organisieren.

00:48:23: Und weil du ursprünglich fragst, das ist ja Herausforderung.

00:48:27: Das war so eine Herausforderung und das hat oft dazu geführt.

00:48:29: Weil wenn das nicht geklärt ist, gibt es beiden Seiten immer die Möglichkeit verhältnismäßig

00:48:33: schnell fertig zu sein.

00:48:35: So, ich habe jetzt hier meinen Minimaltest gemacht, der funktioniert, ich bin durch und

00:48:38: irgendwie andersherrkt, unsere Tests laufen aber auch und dann passiert nichts.

00:48:44: Und wenn jetzt aber jemand wirklich das Originär als seine Aufgabe sieht, daran zu gehen und

00:48:50: zu gucken, wo passiert denn das Problem?

00:48:52: Weil am Ende muss ja das Gesamtprodukt stimmen.

00:48:55: Ich habe ja auch nichts von schönen Daten durch eine Pipeline, die hinterher keiner benutzt,

00:49:01: weil er sie nicht versteht und von analysen mit schlechten Daten habe ich auch nichts.

00:49:04: Das stimmt.

00:49:05: David.

00:49:06: Ich habe an der Stelle einen sehr, sehr harten Cut aus verschiedenen Gründen.

00:49:10: Wir sind leicht über der Zeit, weil wieder, es ist natürlich immer Spaß, ich mit dir

00:49:14: zu sprechen, aber es folgt eine Doppelfolge mehr oder weniger, denn gleich kommt die nächste

00:49:18: Aufnahme.

00:49:19: Und da sind wir schon ein bisschen später dran.

00:49:22: Jetzt hast du ja tatsächlich gespoilert, dass du nicht schön regelmäßig jeden Monat

00:49:29: aufnimmst, sondern dass du hier in Badges arbeitest.

00:49:31: Mal so, mal so.

00:49:34: Das ist jetzt heute auch eine Premiere.

00:49:36: Ich versuch's mal.

00:49:37: Das hat sich angeboten irgendwie.

00:49:38: Die Idee mit Sass nach Databricks, die kam mir einfach aus heiterem Himmel.

00:49:43: Und da dachte ich, eigentlich ist das eine low hanging Food und dann hängt mir der Alex

00:49:47: auch nicht immer so im Nacken.

00:49:48: Und frag nach der nächsten Folge, weil die Realität ist ja, sobald er die Folge verkündet,

00:49:55: fragt er schon nach der neuen Folge.

00:49:57: Das ist ja die Realität.

00:50:00: Und dann muss man, ich vertröße ihn schon regelmäßig.

00:50:04: Und so habe ich jetzt mal fünf Wochen Ruhe.

00:50:06: Hast du dir verdient und die im Sommer.

00:50:09: Perfekt.

00:50:10: Ja, er hat nur schon gesagt, wahrscheinlich kommen sie in zwei Tagen Abstand raus, die

00:50:14: Folgen.

00:50:15: Insofern soll ich es mir nicht zu bequem machen.

00:50:17: Aber ich bearbeite ihn da noch.

00:50:19: Die kommen ja erst dann raus, wenn du die fertig geschnittenen Folge ihm gibst.

00:50:23: Ja, du sagst es.

00:50:25: Genau.

00:50:26: Ja, David, vielen Dank.

00:50:29: Und ich sage mal, auf ein paar schöne Schachpartien.

00:50:32: Wir haben ein neues Eröffnungsreport war.

00:50:35: Scheint, dass mir vielleicht reden wir wirklich mal was Schachspielen.

00:50:38: Im nächsten Jahr dann, wenn wir beide die 2000er Edo geknackt haben.

00:50:45: Nächste Spiel würde ich sagen 15 Minuten Over the Board.

00:50:50: Mit einem Bier.

00:50:51: Ja, machen wir.

00:50:52: Super.

00:50:53: Danke dir und tschüss.

00:50:56: Bis dann.

00:50:57: Copyright WDR 2021

Neuer Kommentar

Dein Name oder Pseudonym (wird öffentlich angezeigt)
Mindestens 10 Zeichen
Durch das Abschicken des Formulars stimmst du zu, dass der Wert unter "Name oder Pseudonym" gespeichert wird und öffentlich angezeigt werden kann. Wir speichern keine IP-Adressen oder andere personenbezogene Daten. Die Nutzung deines echten Namens ist freiwillig.