WEBVTT

00:00:00.180 --> 00:00:04.260
Ja, hallo liebe Hörerinnen und Hörer. Willkommen beim Python-Podcast Episode 52.

00:00:04.260 --> 00:00:07.580
Heute reden wir über Kubernetes. Hallo Johannes.

00:00:07.580 --> 00:00:08.780
Hallo zusammen.

00:00:08.780 --> 00:00:09.980
Hallo Dominik.

00:00:09.980 --> 00:00:10.980
Hallo Jonas.

00:00:10.980 --> 00:00:12.260
Ja, schön, dass du wieder da bist, Johannes.

00:00:12.260 --> 00:00:14.420
Ja, schön, dass ich wieder da sein darf.

00:00:14.420 --> 00:00:14.960
Sogar vor Ort.

00:00:14.960 --> 00:00:20.060
Und wir haben uns heute Kubernetes ausgedacht, obwohl das gar nicht so viel mit Python zu tun hat,

00:00:20.060 --> 00:00:24.340
weil wir das, glaube ich, alle so ein bisschen öfter nutzen müssen, wollen.

00:00:24.340 --> 00:00:25.460
Müssen wir.

00:00:25.460 --> 00:00:25.980
Müssen wir.

00:00:25.980 --> 00:00:28.960
Manche von uns müssen.

00:00:29.700 --> 00:00:31.140
Ja, ich musste auch schon.

00:00:31.140 --> 00:00:32.000
Genau.

00:00:32.000 --> 00:00:35.200
Und deswegen wollen wir vielleicht so ein bisschen erklären, was das ist, was das so macht und was das so tut.

00:00:35.200 --> 00:00:38.320
Vielleicht fangen wir wie immer ein bisschen an mit den News.

00:00:38.320 --> 00:00:40.580
Da haben wir ja noch so ein paar offen, glaube ich.

00:00:40.580 --> 00:00:43.320
Ja, aber ich habe mich jetzt auch nur so ein bisschen...

00:00:43.320 --> 00:00:47.380
Also es gibt eine große News und die kleineren, da verlasse ich mich dann um das andere, das Wissen.

00:00:47.380 --> 00:00:51.200
Okay, aber ich mache jetzt einfach mal den News-Chapter.

00:00:51.200 --> 00:00:56.940
Fangen wir doch einfach mit dem normalen Python 3.12-News an, weil wir haben Oktober und ich glaube, da ist immer ein neues Python.

00:00:56.940 --> 00:00:59.400
Ja, es ist jetzt immer einmal im Jahr irgendwie neue Releases.

00:00:59.400 --> 00:00:59.800
Neue Release.

00:00:59.800 --> 00:01:01.480
Seit drei Tagen, oder?

00:01:01.480 --> 00:01:06.220
Ich weiß gar nicht genau, wann das released wurde, aber ja, noch nicht so lange.

00:01:06.220 --> 00:01:08.560
Je nachdem, wann dieser Podcast gehört wird.

00:01:08.560 --> 00:01:08.800
Ja.

00:01:08.800 --> 00:01:09.720
Genau.

00:01:09.720 --> 00:01:13.060
Also für uns ist es noch frisch, für euch dann vielleicht so, was, das war doch...

00:01:13.060 --> 00:01:14.420
Das war doch zehn Jahre her.

00:01:14.420 --> 00:01:15.580
Ja.

00:01:15.580 --> 00:01:17.040
Genau.

00:01:17.040 --> 00:01:20.200
Und ja, also...

00:01:20.200 --> 00:01:20.460
Was gibt es denn da Neues?

00:01:20.460 --> 00:01:21.500
Verwendet ihr es schon?

00:01:21.500 --> 00:01:22.280
Nein.

00:01:22.280 --> 00:01:22.780
Nein?

00:01:22.780 --> 00:01:24.300
Nicht runtergeladen.

00:01:24.300 --> 00:01:25.800
Habt nur die News gesehen.

00:01:25.800 --> 00:01:29.200
Also ich habe gesehen, dass du Probleme hattest, das auf deinem Mac zu installieren.

00:01:29.400 --> 00:01:30.180
Ja, aber...

00:01:30.180 --> 00:01:32.080
Also genau, dann bist du ja schon...

00:01:32.080 --> 00:01:41.360
Nein, bei mir läuft es, aber ich habe mir angewöhnt, bei eins erst mal alle Projekte umzuziehen, aber es ist jetzt nicht das Feature dabei, wo ich sage, das brauche ich jetzt unbedingt sofort.

00:01:41.360 --> 00:01:43.020
Ja, das war auch so ein bisschen mein Eindruck.

00:01:43.020 --> 00:01:47.140
Das liest sich alles sehr gut, aber es ist nicht so, dass ich sagen würde, ja, das will ich jetzt sofort benutzen.

00:01:47.140 --> 00:01:51.040
Weil es ist ja nicht so richtig so was dabei, was man so richtig benutzen kann, oder?

00:01:51.040 --> 00:01:56.480
Ja, kein neues Walrus oder kein Matchcase.

00:01:56.480 --> 00:01:58.260
Habt ihr den Match schon mal verwendet?

00:01:58.260 --> 00:01:58.680
Ja.

00:01:58.680 --> 00:01:59.380
Ja, okay.

00:01:59.400 --> 00:02:00.820
Häufig, ja.

00:02:00.820 --> 00:02:03.060
Ich finde es cool, aber ich habe noch nichts damit gemacht.

00:02:03.060 --> 00:02:05.320
So Pattern-Matching, habe ich gehört, geht damit ganz gut.

00:02:05.320 --> 00:02:15.160
So Typing oder Type-Matching, also dann kannst du so Guards bauen und dann kann man halt gucken, ob irgendwie so ein Objekt, das reingegangen ist, auf irgendein Pidentic-Model validiert oder halt nicht.

00:02:15.160 --> 00:02:17.460
Und kannst das dann halt direkt weiter nutzen.

00:02:17.460 --> 00:02:18.260
Das ist nett.

00:02:18.260 --> 00:02:22.920
Ja, wie gesagt, ich finde das total super, aber ich habe einfach irgendwie noch nicht genug damit gemacht.

00:02:22.920 --> 00:02:26.680
Wo wir über Pidentic reden, ich glaube, Pidentic 2 hatten wir auch noch nicht in den News, weil wir ewig lang nichts gemacht hatten.

00:02:26.680 --> 00:02:28.800
Doch, doch, hatten wir jetzt mal, genau.

00:02:28.800 --> 00:02:29.340
Okay.

00:02:29.400 --> 00:02:33.040
Aber auch nur, also nur, dass ich damit Probleme hatte, das abzudaten.

00:02:33.040 --> 00:02:44.300
Ich habe in der Zwischenzeit ein weiteres meiner Projekte irgendwie updaten müssen, weil jemand auf GitHub ein Issue aufgemacht hat und gesagt hat, ich habe das jetzt gerade mal probiert, es gibt mir diese komische Pidentic-Fehlermeldung, weiß gar nicht, was das ist.

00:02:44.300 --> 00:02:49.140
Ja, und genau, so habe ich das dann auch gemerkt, dass das nicht mehr funktioniert.

00:02:49.140 --> 00:02:54.060
Und das habe ich jetzt auch umgezogen und es war auch deutlich mehr Arbeit, als ich gedacht hätte.

00:02:54.060 --> 00:02:59.360
Und also, ich habe jetzt zwei Projekte umgezogen auf die neue Pidentic-Version und das war beide Male ätzend.

00:03:00.020 --> 00:03:05.060
Also, ja, man braucht da schon so ein bisschen Muße, wenn man das irgendwie machen will.

00:03:05.060 --> 00:03:10.340
Oder bei mir, ich habe vielleicht das auch einfach falsch gemacht am Anfang und deswegen habe ich da besonders viel Arbeit, aber.

00:03:10.340 --> 00:03:12.220
Ganz wahrscheinlich, höchstwahrscheinlich.

00:03:12.220 --> 00:03:20.080
Ja, aber gut, jetzt inzwischen habe ich ein bisschen Übung, dann kann ich ganz andere Sachen auch noch umstellen, das ist dann kein Problem mehr hoffentlich.

00:03:20.080 --> 00:03:25.300
Wenn du 3.12 benutzt hättest, hättest du vielleicht schon viel bessere Fehlermeldungen bekommen, direkt gesehen, woran es liegt.

00:03:25.300 --> 00:03:29.140
Könnte sein, aber ich finde zum Beispiel auch die Pidentic-Fehlermeldung nicht so richtig hilfreich.

00:03:29.260 --> 00:03:38.020
Also zum Beispiel die, diese Field Missing-Fehlermeldung, die finde ich ist echt, ich weiß nicht, ob die schon immer so war oder ob die jetzt erst so geworden ist.

00:03:38.020 --> 00:03:45.280
Aber die ist halt, genau, das ist hier, ich zeige es dir jetzt mal auf dem Monitor, kann sonst keiner sehen außer uns.

00:03:45.280 --> 00:03:53.600
Aber da steht halt irgendwie so, also da steht noch mehr, da ist eine ganze Liste von irgendwie Field Required, Type Missing, Input Value.

00:03:53.600 --> 00:03:57.340
Jochen, noch nicht mal, ich kann das lesen vom Sofa aus, was du da auf deinem Rechner machst.

00:03:57.340 --> 00:03:58.340
Okay, ist zu klein, ich mache noch ein bisschen größer.

00:03:59.120 --> 00:03:59.860
Ja, ich wollte gerade sagen.

00:03:59.860 --> 00:04:06.180
So, und dann, wenn man diesen Traceback kriegt, der eigentlich relativ lang ist, sodass man Schwierigkeiten hat, den relevanten Teil zu erfassen.

00:04:06.180 --> 00:04:08.680
Ich habe jetzt das hier extra so rausgekattet, dass man es sehen kann.

00:04:08.680 --> 00:04:11.400
Aber dann ist das, was ich halt lese, vor allen Dingen das hier.

00:04:11.400 --> 00:04:16.240
Da steht dann halt irgendwie Type Missing, Input Value, Database URL und dann komme ich halt, ah, Database URL ist missing.

00:04:16.240 --> 00:04:17.820
Das stimmt aber nicht.

00:04:17.820 --> 00:04:19.640
Nein, die ist zwar da.

00:04:19.640 --> 00:04:20.640
Sondern die ist da.

00:04:20.640 --> 00:04:22.840
Aber die Value ist falsch.

00:04:22.840 --> 00:04:28.040
DB Engine ist halt missing, was da drüber steht, wo man denkt, das gehört hier noch zu einem anderen Teil.

00:04:28.980 --> 00:04:29.760
Was hier gar nicht drinsteht.

00:04:29.760 --> 00:04:33.600
Das heißt, dieser Kram, der danach kommt, ist eigentlich völlig irrelevant.

00:04:33.600 --> 00:04:38.860
Aber das ist halt, also ich meine, klar, also wenn man jetzt weiß, okay, ach, das Ding hier ist missing.

00:04:38.860 --> 00:04:39.760
Okay, dann ist klar.

00:04:39.760 --> 00:04:41.240
Aber man überliest es leicht.

00:04:41.240 --> 00:04:45.980
Also so wie das bei dir aussieht, könnte auch in der Formatierung, wahrscheinlich hast du es absichtlich so formatiert, dass es in deinem Eintrag so aussieht.

00:04:45.980 --> 00:04:47.260
Nein, nein, das sieht wirklich so aus.

00:04:47.260 --> 00:04:48.940
Das sieht tatsächlich etwas schräg aus.

00:04:48.940 --> 00:04:51.240
Also, die Fehlermeldung ist ein bisschen verhackstöckelt.

00:04:51.240 --> 00:04:52.920
Hast du das mal mit 3.12 probiert?

00:04:52.920 --> 00:04:53.520
Nein.

00:04:53.520 --> 00:04:55.500
War das nicht die 3.12?

00:04:55.500 --> 00:04:57.100
Okay, du hattest vorher schon das Problem beim Umziehen.

00:04:57.100 --> 00:04:58.840
Ja, ja, ja, also die...

00:04:58.840 --> 00:05:02.520
Pydentic ist ja schon eine neue Version seit einigen Monaten.

00:05:02.520 --> 00:05:05.880
Vielleicht, aber wäre es anders, wenn 3.12 dabei geholfen hätte noch.

00:05:05.880 --> 00:05:08.620
Ist das anders in 3.12, weil das ist doch eine Fehlermeldung von Pydentic.

00:05:08.620 --> 00:05:09.600
Ja, ja, genau, genau.

00:05:09.600 --> 00:05:11.340
Nee, wahrscheinlich hätte das...

00:05:11.340 --> 00:05:17.440
Aber durch diese, ich weiß nicht, ob die verbesserten Fehlermeldungen in 3.12 auch was damit zu tun haben, wie dieser ganze...

00:05:17.440 --> 00:05:19.320
Wie dieser Traceback-String gerendert wird.

00:05:19.320 --> 00:05:27.620
Genau, weil da sind ja auch verschiedene andere Sachen passiert, die dieses Rendern beeinflussen, weil die F-Strings ja beispielsweise sind auch neu.

00:05:28.700 --> 00:05:30.220
Ja, ja, ja, kommen wir gleich noch zu.

00:05:30.220 --> 00:05:34.060
Also auf jeden Fall dieses Pydentic-Ding, das hat mich jetzt schon zum zweiten Mal...

00:05:34.060 --> 00:05:37.420
Wenn ich das nächste Mal sage, beim dritten Mal, hat es auch wieder Schwierigkeiten gemacht.

00:05:37.420 --> 00:05:38.840
Da fliegt es raus, dann liegt es an dir.

00:05:38.840 --> 00:05:40.560
Ja, das kann auch sein.

00:05:40.560 --> 00:05:42.440
Genau, das ist die Konstante an diesem Experiment.

00:05:42.440 --> 00:05:43.020
Ja, genau.

00:05:43.020 --> 00:05:45.440
Ja, also genau.

00:05:45.440 --> 00:05:49.880
Also jetzt waren wir schon bei den 3.12 Änderungen.

00:05:49.880 --> 00:05:51.260
Genau, bessere Fehlermeldungen.

00:05:51.260 --> 00:05:57.480
Also das Einzige, was ich mir davon gemerkt habe, also es gibt ein paar Dinge, die da geändert wurden, aber die einzige, die ich mir gemerkt habe,

00:05:57.480 --> 00:05:58.540
weil sie mich an die...

00:05:58.540 --> 00:06:07.820
an die Pi-Pi-Episode erinnert hat, war, dass jetzt, wenn man irgendwie eine Variable verwendet und die nicht definiert ist sozusagen in einer Methode,

00:06:07.820 --> 00:06:13.580
dann sagt einem jetzt der Traceback so, sag mal, kann es sein, dass du Self-Dot irgendwie vorher vergessen hast?

00:06:13.580 --> 00:06:14.220
Ja.

00:06:14.220 --> 00:06:22.520
Und Pi-Pi konnte das halt schon einige Zeit, und ich glaube, das ist halt, das haben sie sich dann von Pi-Pi abgeguckt, diese Geschichte.

00:06:22.520 --> 00:06:27.140
Und es gibt halt noch so ein paar andere Dinge, ich weiß gar nicht genau, wisst ihr das?

00:06:27.140 --> 00:06:28.400
An der richtigen Stelle.

00:06:28.400 --> 00:06:32.280
Ja, genau, solche Sachen. Also da ist noch ein bisschen was passiert.

00:06:32.280 --> 00:06:35.620
Ich weiß es nicht, weil ich sehe nie Fehlermeldungen.

00:06:35.620 --> 00:06:42.060
Du machst einfach, kennt ihr das Modul, als wollt ihr eigentlich mal so einen Pick, ne?

00:06:42.060 --> 00:06:47.840
Fuck it, du machst einfach Pippen-Style, fuck it, und dann schreibst du einfach add fuck it oben drüber oder whiz fuck it und dann gibt es keine Fehlermeldungen mehr, sind weg.

00:06:47.840 --> 00:06:56.540
Ja, dann eine andere Geschichte, etwas, also F-Strings haben irgendwie ordentliche Überarbeitung erfahren.

00:06:56.540 --> 00:06:58.380
Ja, genau, davon musste man ziemlich viel umbauen.

00:06:58.400 --> 00:07:06.340
Ja, also das mutet so ein wenig nach Detail an, dass man jetzt sagt, okay, du kannst jetzt auch Quotes innerhalb von F-Strings haben.

00:07:06.340 --> 00:07:08.360
Genau, zwar dieselben Quotes wie der String eigentlich.

00:07:08.360 --> 00:07:12.700
Genau, das hat mir tatsächlich aufgefallen schon, dass man da nicht die gleichen Quotes verwendet.

00:07:12.700 --> 00:07:23.360
Genau, und das beschränkt natürlich die Tiefe, in der du F-Strings vernesten kannst, also ineinander schachteln kannst, halt auf die Anzahl unterschiedlicher Arten zu quoten.

00:07:23.360 --> 00:07:26.920
Wie tief würdet ihr denn empfehlen, so F-Strings ineinander zu quoten?

00:07:26.920 --> 00:07:28.360
Aber was zum Beispiel echt nervt.

00:07:28.400 --> 00:07:33.100
Wichtig war, dass du zum Beispiel in Multiline-F-Strings keine Kommentare hinter so einen F-String machen mehr konntest.

00:07:33.100 --> 00:07:47.300
Ja, und Multiline-F-Strings gehen natürlich schon, wenn du das halt so machst, wie man das mit Multiline-Strings halt so macht, aber was jetzt auch zusätzlich geht, ist, dass du quasi New-Lines in F-Strings haben kannst.

00:07:47.300 --> 00:07:50.040
Das geht nämlich jetzt auch, das ging vorher auch nicht.

00:07:50.040 --> 00:07:51.900
Genau, Backslash war vorher auch gebannt.

00:07:51.900 --> 00:07:53.360
Genau, geht jetzt auch.

00:07:53.360 --> 00:07:57.900
Also das wirkt so ein bisschen wie Details, aber nein, das ist, dafür haben sie den Tokensatz.

00:07:58.400 --> 00:08:00.240
Organizer komplett neu geschrieben.

00:08:00.240 --> 00:08:14.240
Der ist jetzt rein in C implementiert und ist halt auch ein gutes Stück schneller, ist irgendwie 60% schneller als vorher und ja, das hat jetzt zur Folge, dass man F-Strings halt auch beliebig nesten kann und ja, all diese anderen Details jetzt auch gehen.

00:08:14.240 --> 00:08:17.940
Zeit, dass zum Beispiel Logging oder sowas mal umsteigt und auch mal F-Strings verwendet.

00:08:17.940 --> 00:08:23.060
Ja, da habe ich schon unterschiedliche Meinungen darüber gehört.

00:08:23.060 --> 00:08:25.780
Ja, also genau. Also ich auch, aber ich verstehe es noch nicht so genau.

00:08:25.780 --> 00:08:28.380
Also meine Meinung macht das Logging nicht, weil das nicht evaluiert wird.

00:08:28.400 --> 00:08:53.460
Ja, das, also der Haupteinwand, den ich da gehört habe, der kommt von Sentry und Sentry macht ja Log Aggregation oder Error Log Aggregation und wenn du jetzt quasi eine Fehlermeldung loggst und da deine Fehlerobjekte mit reinschreibst, dann ist das ja ein anderer String bei jeder dieser Fehlermeldungen.

00:08:53.460 --> 00:08:55.280
Das heißt, du kriegst keine Aggregation.

00:08:55.280 --> 00:08:58.020
Wenn du aber normale Template Strings.

00:08:58.400 --> 00:09:03.080
benutzt, dann schickst du ja den Template String und die Argumente, die da reinkommen.

00:09:03.080 --> 00:09:13.260
Das heißt, du kriegst dann eine Aggregation anhand des Template Strings und kriegst dann innerhalb dieser aggregierten Sache gesagt, hier sind, die sind mit folgenden Attributen aufgetreten, X, Y und Z.

00:09:13.260 --> 00:09:19.260
Ja, okay, aber man könnte ja auch erst irgendwie Sentry erklären, dass sie das bitte anders aggregieren sollen und das da wieder rauspopeln soll.

00:09:19.260 --> 00:09:28.040
Ah gut, aber dann bist du jetzt schon wieder so bei Sprachsachen, dass du sagst, ja, da musst du doch ausfinden, wo die F-Attribute drin waren.

00:09:28.400 --> 00:09:32.220
Das ist eh einigermaßen furchtbar mit Camel Case und sowas, das ist alles eh bäh, bäh.

00:09:32.220 --> 00:09:38.360
Ja, das mag ja schon sein, aber gerade diese F-Strings, die zerstören halt, dass du siehst, wo da die Templates stehen.

00:09:38.360 --> 00:09:47.060
Okay, also das einzige valide Argument, was ich gehört habe halt, ist, dass halt je nach Log Level die gar nicht evaluiert werden sollen und dass, wenn du das halt als F-String da reinschreiben würdest, dann würdest du halt jedes Mal immer.

00:09:47.060 --> 00:09:47.480
Ja, jedes Mal.

00:09:47.480 --> 00:09:51.060
Ja, keine Ahnung.

00:09:51.060 --> 00:09:52.480
Ja, gut, okay, also Geschmacksfragen.

00:09:52.480 --> 00:09:53.820
Ich weiß es nicht.

00:09:53.820 --> 00:09:56.740
Ja, genau.

00:09:56.740 --> 00:09:58.000
Ach so, was auch.

00:09:58.000 --> 00:09:58.380
Wofür?

00:09:58.400 --> 00:10:22.880
Ich glaube, das ist jetzt auch eine doofe Idee, es gibt ja für, das hatte auch der, na, wie heißt er noch, Thomas Güttler, der hier war, wegen HTMLX immer gesagt, also es gibt ja in Python, gibt es also nicht sowas wie Template Literal Strings in JavaScript oder so, wo man halt Partials da relativ gut handeln kann und das geht halt mit F-Strings nicht so richtig und das geht jetzt vielleicht schon.

00:10:22.880 --> 00:10:27.120
Also das könnte man eventuell, naja, auch nur bei einfachen Template Ersetzungen wahrscheinlich.

00:10:27.120 --> 00:10:28.240
Ob das Sinn macht.

00:10:28.400 --> 00:10:28.700
Weiß ich auch nicht.

00:10:28.700 --> 00:10:30.740
Du hast irgendwas von Partials gerade gesagt?

00:10:30.740 --> 00:10:33.400
Django Template Partials, damit geht das halt auch ganz gut eigentlich.

00:10:33.400 --> 00:10:40.900
Das sind, genau, das sind aber jetzt so ein paar Module, die waren in einer der letzten Folgen von, weiß ich mehr was, DjangoCast oder was?

00:10:40.900 --> 00:10:44.040
Django Chat meinst du, den Podcast, ja, das war da auch drin, ja.

00:10:44.040 --> 00:10:57.160
Ja, genau, da war irgendwie eine nette Folge, wo die Leute genau diese Templating Sachen, Partials mitgebrucht haben, die waren schön, weil man kann man schöne Sachen mit einzelnen Templates machen, die sonst so nicht einfach so modular.

00:10:57.160 --> 00:10:58.040
Ja, ich hab das.

00:10:58.400 --> 00:11:00.960
Ich hab das jetzt auch schon ein paar Mal verwendet und das ist echt tatsächlich ziemlich gut.

00:11:00.960 --> 00:11:04.560
Kommt wahrscheinlich auch in Django 5.1 mit rein, ja.

00:11:04.560 --> 00:11:05.780
Ah, ja, schön.

00:11:05.780 --> 00:11:12.460
Genau, dann, es gab so ein paar Performance-Geschichten, genau, bei F-Strings, die sind ein bisschen schneller geworden.

00:11:12.460 --> 00:11:15.960
Es gibt jetzt irgendwie Comprehension Inlining.

00:11:15.960 --> 00:11:18.240
Und was ist das?

00:11:18.240 --> 00:11:25.420
Ehrlich gesagt, was es genau macht, weiß ich nicht, aber List Set Comprehensions werden jetzt ungefähr zweimal schneller.

00:11:25.420 --> 00:11:27.720
Das nimmt man doch mit, oder?

00:11:27.720 --> 00:11:28.360
Ja, das ist gut.

00:11:28.360 --> 00:11:28.920
Gut, ja.

00:11:28.920 --> 00:11:32.720
Und dann natürlich die GIL-Aufteilung.

00:11:32.720 --> 00:11:34.340
Das habe ich mit Interesse gelesen.

00:11:34.340 --> 00:11:36.360
Ja, das ist ein sehr interessanter...

00:11:36.360 --> 00:11:38.040
Erklär doch mal, Jonas, was ist denn die GIL-Aufteilung?

00:11:38.040 --> 00:11:41.220
Ja, es gibt ja das globale Interpreter-Log.

00:11:41.220 --> 00:11:50.660
Das ist ein großes Log und das sorgt dafür, dass Python sehr schlecht ist bei Multithread-Anwendungen, weil immer nur ein Thread Python-Code ausführen kann.

00:11:50.660 --> 00:11:53.520
Und das ist natürlich so ein bisschen bescheuert, weil dann bringt es ja nichts mehr.

00:11:53.520 --> 00:11:55.940
Doch, doch, das bringt ja durchaus schon was.

00:11:55.940 --> 00:11:58.020
Ja, es kommt darauf an, wie deine Threads sind.

00:11:58.120 --> 00:12:01.800
Aber wenn du lauter Python-Threads laufen hast, also du kannst nicht mehr als eine CPU verwenden.

00:12:01.800 --> 00:12:07.800
Nee, genau, nicht mehr als eine CPU, aber du kannst schon, wenn du mehrere Threads machst, machst du halt viel mehr I.O. möglicherweise.

00:12:07.800 --> 00:12:11.360
Genau, für I.O. bringt es was, aber nicht für Compute, also nicht für CPU.

00:12:11.360 --> 00:12:20.720
Ist aber das Argument, warum Python so einen GIL hat, ist halt, dass das für den Single-Threaded-Case einfach die beste Lösung ist.

00:12:20.720 --> 00:12:25.680
Ja, weil du keine komplizierten Logs einbauen musst, weil es einfach schnell ist, weil du gar nichts hast.

00:12:25.680 --> 00:12:27.900
Weil du halt nicht gucken musst, ist das irgendwie ein Log, muss das frei werden?

00:12:27.900 --> 00:12:28.060
Genau.

00:12:28.060 --> 00:12:28.080
Genau.

00:12:28.080 --> 00:12:28.340
Wie ist denn das?

00:12:28.340 --> 00:12:31.800
Genau, ist einfach ein Interpreter und fertig.

00:12:31.800 --> 00:12:40.720
Und es gibt ja schon lange Bestrebungen und viele Bestrebungen, diesen GIL loszuwerden, zum Beispiel PyPy oder auch Unladen Swallow, falls ihr euch da noch dran erinnert.

00:12:40.720 --> 00:12:41.960
Die haben versucht, das loszuwerden.

00:12:41.960 --> 00:12:42.760
Bitte was? Bitte wer?

00:12:42.760 --> 00:12:52.560
Das war so eine Initiative, ich glaube, von Google, von Google-Angestellten, die versucht haben, eben den Python-Interpreter neu zu schreiben, ohne das Global Interpreter-Log.

00:12:52.560 --> 00:12:58.040
Und es kommt alle paar Jahre wieder, weil es einfach ein großes Ärgernis ist, dass der Multi-Threaded-Programm mal schreibt.

00:12:58.040 --> 00:13:02.020
Aber trotzdem nicht mehr CPU kriegst.

00:13:02.020 --> 00:13:05.660
Genau, Unladen Swallow, weil sie schneller fliegen kann.

00:13:05.660 --> 00:13:15.540
Und jetzt wandert es auch so langsam, beziehungsweise es ist ja schon lange unterwegs, dass man das schneller macht und den GIL so ein bisschen wegbekommt.

00:13:15.540 --> 00:13:25.760
Und da gab es jetzt eben diese eine Bewegung, dass es keinen globalen, kein globales Global Interpreter-Log mehr gibt, sondern eben eins für Sub-Interpreter.

00:13:25.760 --> 00:13:27.760
Das heißt, die Python...

00:13:28.040 --> 00:13:37.240
Die Python-Runtime, der CPython, die CPython-VM kann jetzt Sub-Interpreter starten, die dann ihr eigenes Global Interpreter-Log haben.

00:13:37.240 --> 00:13:40.600
Aber ich weiß nicht, wie man da dran kommt, Jochen, weißt du, wie man das macht?

00:13:40.600 --> 00:13:47.540
Ja, über die, also momentan nur in C-Code kann man das halt, kann man halt sich halt einen neuen Interpreter erzeugen und da irgendwelche Dinge mitmachen.

00:13:47.540 --> 00:13:56.640
In 3.13 soll es dann eine API geben, die halt auch innerhalb von Python-Code verfügbar ist, wo man dann einfach sagt, hallo, mach mir mal einen neuen Interpreter und dem gibt man dann einen String.

00:13:56.640 --> 00:13:58.000
Und dieser String wird dann...

00:13:58.000 --> 00:13:59.500
Als Python-Code da drin ausgewertet.

00:13:59.500 --> 00:13:59.780
Ah, okay.

00:13:59.780 --> 00:14:03.460
Da kann man sich dann natürlich auch irgendwie hübschere Abstraktionen noch drum rum bauen, keine Ahnung.

00:14:03.460 --> 00:14:07.420
Ja, also ich meine, ich finde das auch so ein bisschen so ein spezielles...

00:14:07.420 --> 00:14:19.260
Also das mag schon Anwendungsfälle geben, wo das sinnvoll ist, aber ich meine, das wird schon sehr speziell, weil ich meine, für viele Sachen, wo man so was, wo man denken würde, oh, das kann ich gut brauchen, warum macht man dann nicht einfach einen zweiten Prozess auf?

00:14:19.260 --> 00:14:20.300
Also kann man ja auch machen.

00:14:20.300 --> 00:14:23.880
Einen zweiten Interpreter und dann muss man halt schon...

00:14:23.880 --> 00:14:25.200
Hast du halt dann diese Prozessgrenze.

00:14:25.200 --> 00:14:27.400
Ja, hast du halt, dass die Kommunikation langsam wird.

00:14:27.400 --> 00:14:27.960
Musst du halt irgendwie...

00:14:27.960 --> 00:14:34.180
Entweder die Daten von einem Prozess zum anderen übergeben und in vielen Fällen, denke ich, ist das wahrscheinlich kein so großes Problem, weil...

00:14:34.180 --> 00:14:35.160
Wie macht man das denn am besten?

00:14:35.160 --> 00:14:37.020
Ja, ja, also es kommt halt kein Hängherd von den Daten ab.

00:14:37.020 --> 00:14:38.220
Hast du halt Queues oder irgendwelches?

00:14:38.220 --> 00:14:42.600
Ja, aber du gibst, also oft übergibst du halt einfach nur eine URL zu einem Bucket oder sowas.

00:14:42.600 --> 00:14:45.200
Ja, das kommt natürlich auf den Anwendungsfall an.

00:14:45.200 --> 00:14:45.580
Genau.

00:14:45.580 --> 00:14:48.700
Also ich meine, da gibt es auch Anwendungsfälle, wo du...

00:14:48.700 --> 00:14:50.720
Wenn man viele Daten übergeben muss...

00:14:50.720 --> 00:14:52.120
Viel Kommunikation und viel Compute.

00:14:52.120 --> 00:14:52.880
Dann ist schlecht.

00:14:52.880 --> 00:14:56.880
Dann muss ich die immer serialisieren oder muss ich den irgendwie in den Speicher irgendwo reinschreiben oder irgendwie...

00:14:57.920 --> 00:15:05.020
Genau, du kannst natürlich per Pickel einfach serialisieren oder irgendwie übergeben oder über den Pipe schicken oder sowas.

00:15:05.020 --> 00:15:12.540
Also auch ein Standardweg, wie man das macht, ist dann halt einfach Shared Memory verwenden, sodass halt alle Prozesse, die man erzeugt, halt auf den gleichen Speicher zugreifen.

00:15:12.540 --> 00:15:13.980
Das geht auch.

00:15:13.980 --> 00:15:15.340
Wie geht denn das mit Preisen?

00:15:15.340 --> 00:15:16.620
Aber dann hast du ja wieder das Locking-Problem.

00:15:16.620 --> 00:15:17.760
Als Elevator?

00:15:17.760 --> 00:15:19.900
Naja, solange du nur liest, ist es kein Problem.

00:15:19.900 --> 00:15:21.860
Ja, solange du nur liest, ist das nie ein Problem.

00:15:21.860 --> 00:15:23.340
Aber nur lesen hilft ja.

00:15:23.340 --> 00:15:25.200
Du kannst ja immer so vielleicht sonst neue Keys schreiben.

00:15:25.200 --> 00:15:27.880
Vielleicht geht das gleichzeitig oder geht das nicht auf einen Dick gleichzeitig neue Keys schreiben?

00:15:27.880 --> 00:15:29.800
Nee, das ist nicht das Problem.

00:15:29.800 --> 00:15:31.040
Das geht halt alles nicht.

00:15:31.040 --> 00:15:32.120
Das geht alles nicht.

00:15:32.120 --> 00:15:41.100
Also oft lässt sich das schon darauf abbilden, dass man sagt, man liest das halt und dann macht man irgendeine Berechnung und dann hast du ein Ergebnis von der Berechnung und das führt man halt wieder zusammen.

00:15:41.100 --> 00:15:45.580
So quasi so ein Map-Reduce-Schritt, wo du das halt viele Wörter rausmapst.

00:15:45.580 --> 00:15:46.600
Das könntest du ja tatsächlich jetzt schon machen, oder?

00:15:46.600 --> 00:15:47.800
Das kannst du auch jetzt schon machen, gar kein Problem.

00:15:47.800 --> 00:15:48.520
Multi-Processing.

00:15:48.520 --> 00:15:52.340
Genau, und das für viele Anwendungsfälle, denke ich, ist es wahrscheinlich genau das Richtige, was man machen sollte.

00:15:52.340 --> 00:15:57.840
Und dann gibt es vielleicht so ein paar, bei denen geht das aus irgendwelchen Gründen nicht so gut und dann macht das mit den Sub-Interpretern.

00:15:57.840 --> 00:16:08.220
Aber du machst irgendwie so ein Map-Reduce-Ding, um die Computation auseinanderzudröseln und dann zusammenzuführen und wo schreibst du dann wieder was rein und wenn du sagst, du...

00:16:08.220 --> 00:16:09.220
Ja, du kriegst es halt wieder zurück.

00:16:09.220 --> 00:16:19.300
Und dann je nachdem, wie groß das ist, was du zurückbekommst von der Berechnung, kannst du es halt einfach auch wieder irgendwie serialisieren und in deinem Master-Prozess sozusagen wieder deserialisieren.

00:16:19.300 --> 00:16:22.060
Und wenn das zu groß wird, dann schreibst du das halt in den Prozess.

00:16:22.060 --> 00:16:24.360
Und von wo derealisiert du das denn?

00:16:24.360 --> 00:16:27.120
Also von dem Shared Memory oder was sagst du mit der Pipe, was meinst du damit?

00:16:27.800 --> 00:16:32.860
Nein, es geht ja nur darum, dass du in diesem Modell, was der Jochen vorstellt, nur zwei Synchronisationspunkte hast.

00:16:32.860 --> 00:16:35.720
Nämlich ganz am Anfang, wenn du es verteilst und ganz am Ende, wenn du es zusammenbringst.

00:16:35.720 --> 00:16:43.960
Und das bedeutet, dass es nicht so wichtig ist, wie schnell die Kommunikation ist, weil du die nicht die ganze Zeit verwendest, sondern du verwendest die nur einmal en bloc.

00:16:43.960 --> 00:16:44.700
Genau.

00:16:44.700 --> 00:16:53.400
Wenn du jetzt aber so ein System hast, wo du zwölf Threads hast, die alle zehn Millisekunden miteinander kommunizieren, die irgendeine Nachricht schicken oder die Queues schicken, sowas wie das Actor-Modell.

00:16:53.400 --> 00:16:57.760
Wenn du in Erlang sagst, jede Funktion ist ein Thread und du schickst jedes Mal bei jedem...

00:16:57.760 --> 00:16:59.300
Im Funktionsaufruf schickst du eine Message rüber.

00:16:59.300 --> 00:17:09.220
Dann geht das nicht mehr, weil du dann eben über diese Prozessgrenze irgendwas haben musst, was innerhalb des Betriebssystems über die Prozessgrenze drüber geht und das ist üblicherweise langsam.

00:17:09.220 --> 00:17:14.400
Egal, welche Technik du verwendest, ob es Pipes sind oder Shared Memory oder was weiß ich.

00:17:14.400 --> 00:17:19.520
Es ist egal, es geht gar nicht anders, weil du hast ja automatisch irgendwie Kontext-Switches dabei, wo es halt langsam wird.

00:17:19.520 --> 00:17:22.700
Aber die Frage ist halt, passiert das in der Praxis häufig?

00:17:22.700 --> 00:17:27.520
Weil ich würde sagen, du hast üblicherweise einen von beiden Fällen, du hast halt entweder den Fall, du musst halt viel...

00:17:27.720 --> 00:17:30.140
...I.O. machen, aber du brauchst eigentlich keine CPU.

00:17:30.140 --> 00:17:39.200
Also wenn du jetzt sowas hast wie eben so eine Web-Anwendung oder irgendwie eine Anwendung, die irgendwie so, weiß ich nicht, selbst sowas wie ein irgendwie massiv paralleler Chat-Server oder sowas.

00:17:39.200 --> 00:17:42.840
Der rechnet ja nichts aus, also der schiebt ja nur irgendwie Bits und Bytes hin und her.

00:17:42.840 --> 00:17:45.300
Da brauchst du die mehreren CPUs eigentlich nicht.

00:17:45.300 --> 00:17:54.980
Oder du kannst halt dann mehrere Prozesse starten, die dann halt alle, auf die du dann Load-Balanced, die dann halt alle auf einer CPU hocken, aber die sich nicht miteinander unterhalten müssen.

00:17:54.980 --> 00:17:57.660
Oder du hast halt den Fall, wo du Number-Crunching machen willst.

00:17:57.680 --> 00:18:01.880
Aber da brauchst du dann eigentlich diese Kommunikation nicht mehr.

00:18:01.880 --> 00:18:06.620
Das heißt, Number-Crunching meinst du, du lässt dann doch auf jedem Kern irgendwie einen Python-Prozess laufen und...

00:18:06.620 --> 00:18:11.120
Du willst halt ein Array von einem Petabyte irgendwie Zahlen sortieren oder sowas.

00:18:11.120 --> 00:18:13.420
Klassische Anwendung.

00:18:13.420 --> 00:18:19.760
Ja, ich weiß, das ist immer das, womit man dann demonstriert irgendwie, dass man irgendwas parallelisieren kann oder so.

00:18:19.760 --> 00:18:25.400
Ja, aber dafür brauchst du normalerweise keine Kommunikation zwischen den Dingern.

00:18:25.400 --> 00:18:27.500
Und ja, also dass man den Fall hat.

00:18:27.640 --> 00:18:35.160
Dass man gleichzeitig Kommunikation viel hat und gleichzeitig irgendwie ganz viel Prozessor braucht.

00:18:35.160 --> 00:18:41.040
Also, der ist aus meiner Perspektive schon ein ziemlicher Nischen-Anwendungsfall.

00:18:41.040 --> 00:18:44.020
Ich meine, das wäre natürlich schön, wenn das einfach so gehen würde, aber...

00:18:44.020 --> 00:18:45.460
Vielleicht, weil es nicht geht, Jochen.

00:18:45.460 --> 00:18:46.660
Ja, vielleicht auch, weil es nicht geht.

00:18:46.660 --> 00:18:49.740
Wenn es einfacher gehen würde, würden wir das alle machen.

00:18:49.740 --> 00:18:50.660
Ja, vielleicht.

00:18:50.660 --> 00:18:52.280
Ich weiß es nicht.

00:18:52.280 --> 00:18:56.320
Ja gut, auf jeden Fall gibt es Bestrebungen in die Richtung und das ist doch schön.

00:18:56.320 --> 00:18:57.380
Genau.

00:18:57.600 --> 00:19:00.740
Also, wie heißt das jetzt nochmal bei 312, du hast gesagt, Teil-Gil?

00:19:00.740 --> 00:19:03.520
Also, Sub-Interpreter.

00:19:03.520 --> 00:19:06.280
Ja, genau, der Sub-Interpreter macht dann mal seinen eigenen Gil.

00:19:06.280 --> 00:19:08.720
Sub-Interpreter.

00:19:08.720 --> 00:19:10.880
Dann, was haben wir denn noch?

00:19:10.880 --> 00:19:16.900
Ja, es gibt jetzt so ein paar Typing-Verbesserungen.

00:19:16.900 --> 00:19:23.640
Also, ich finde das ehrlich gesagt, da sagen immer alle Leute so, ah, das ist so toll, weil jetzt geht das noch einfacher als vorher.

00:19:23.640 --> 00:19:25.620
Und ich denke mir so, wie bitte, das war vorher einfach?

00:19:25.620 --> 00:19:27.560
Also, mit dem Type war Type alias.

00:19:27.560 --> 00:19:28.600
Jetzt geht es noch einfacher.

00:19:28.600 --> 00:19:48.900
Ja, also, wenn man sich da anguckt, wie die Signaturen von Funktionen aussehen, das sieht schon, also du definierst hier zuerst so ein, mit Type war irgendwie den Namen für einen generischen Type und dann setzt du den noch irgendwie da ein und dann, also es ist schon, also du hast auf jeden Fall ganz viele Klammern und ganz viele Doppelpunkte und komische Dinge.

00:19:48.900 --> 00:19:57.520
Ich muss auch sagen, ich habe den Fehler gemacht, ich habe jetzt meinen Editor umgestellt auf die neue Linting-Variante mit komplett MyPi auch drin und so.

00:19:57.520 --> 00:20:04.400
Also, normalerweise habe ich das immer nur beim Committen drüber laufen lassen, aber jetzt, es ist so ein bisschen nervig.

00:20:04.400 --> 00:20:11.340
Ja, sozusagen, verwendest du dann MyPiD oder bist du dann MyPiD immer gefragt?

00:20:11.340 --> 00:20:26.980
Genau, die MyPi, der läuft halt dann so einen MyPi-Server und dann kann er mal fragen und mit den ganzen anderen Linting-Sachen halt auch und ja, es ist mehr gekringelt, als ich dachte, weil vorher war das immer schön sauber und aufgeräumt und ich finde es tatsächlich auch ein bisschen, also,

00:20:27.480 --> 00:20:45.580
wenn man halt Module benutzt, die zum Beispiel falsch typen oder sowas, ja, also in Anführungszeichen, dann meckert MyPi direkt und du musst halt einfach nebenschreiben, dass er es ignorieren soll, weil es kommt halt aus dem Modul und es ist ja falsch, das kann ich jetzt ja nicht ändern oder ich kann halt den Type-In davon dann neu machen oder sowas, also, oder eine Julien draus machen, was ja aber dann eigentlich auch falsch ist, weil, ja, was soll das?

00:20:45.580 --> 00:20:48.440
Ja, da müssen wir, glaube ich, mal eine Episode drüber machen, oder?

00:20:48.440 --> 00:20:49.960
Ja, Typing-Episode müssen wir mal.

00:20:49.960 --> 00:20:52.400
Ja, nicht nur eine, glaube ich, da sind so ein paar.

00:20:52.400 --> 00:20:53.180
Das wird eine sehr lange Episode.

00:20:53.180 --> 00:20:57.340
Ja, also, gerade so bei generischen Types und so.

00:20:57.440 --> 00:20:59.500
Und ich finde, das ist alles wild.

00:20:59.500 --> 00:21:02.260
Also, und da muss man halt echt, und, ja.

00:21:02.260 --> 00:21:04.240
Oder Junko-Stubs oder sowas und, äh.

00:21:04.240 --> 00:21:08.060
Ja, jetzt ist es auf jeden Fall besser geworden, aber.

00:21:08.060 --> 00:21:09.500
Was ist denn genau besser geworden?

00:21:09.500 --> 00:21:10.760
Ach so, es ist jetzt besser geworden.

00:21:10.760 --> 00:21:20.520
Man kann ja zum Beispiel sowas sagen, also, wenn man jetzt irgendwie irgendwo sagen will, Stern, Stern, KW-Arcs oder so, was man ja manchmal machen möchte, dann ist das ja irgendwie nicht gut zu typen.

00:21:20.520 --> 00:21:21.120
Any.

00:21:21.120 --> 00:21:27.400
Ja, kann man natürlich auch sagen, String Any, Addict, String Any, ja, aber machen ja auch viele.

00:21:27.400 --> 00:21:30.000
Aber das natürlich, dann geht halt auch irgendwie so ein bisschen der Nutzen verloren.

00:21:30.000 --> 00:21:38.760
Also, was man jetzt tun kann, ist, sagt, man sagt KW-Arcs, Doppelpunkt, Unpack und dann zum Beispiel Ecke-Klammer auf und dann gibt man den Namen von einem Type-Dict an.

00:21:38.760 --> 00:21:44.860
Und dann in dem Type-Dict definiert man dann sozusagen für jede, für jedes Keyword-Argument quasi den, den genauen Type.

00:21:44.860 --> 00:21:46.560
Oh, da könnte man auch eine Dataclass reingeben oder sowas.

00:21:46.560 --> 00:21:47.180
Aber warum?

00:21:47.180 --> 00:21:49.220
Ja, sieht ziemlich genauso aus wie eine Dataclass, ja.

00:21:49.220 --> 00:21:51.440
Warum definiert man die denn nicht direkt?

00:21:51.440 --> 00:21:52.700
Was ist dann noch der Sinn von Quark?

00:21:52.700 --> 00:21:53.820
Wie willst du den hinschreiben?

00:21:53.820 --> 00:21:54.220
Kannst du nicht.

00:21:54.220 --> 00:21:56.540
Du kannst dann halt.

00:21:57.360 --> 00:21:59.100
Jedes einzelne KW hinschreiben.

00:21:59.100 --> 00:22:00.460
Ja, gut, das kannst du natürlich auch machen, ja.

00:22:00.460 --> 00:22:03.700
Du kannst da einfach die ganzen Keyword-Argumente hin, wenn es halt ganz viele sind.

00:22:03.700 --> 00:22:05.380
Dann sind da aber zu viele Argumente.

00:22:05.380 --> 00:22:07.680
Irgendwo hast du sie halt getypt dann, ne?

00:22:07.680 --> 00:22:09.280
Ja, und du kannst es halt auch nicht wiederverwenden.

00:22:09.280 --> 00:22:10.020
Hast du sie hingeschrieben.

00:22:10.020 --> 00:22:11.260
Aber ja, es ist auch.

00:22:11.260 --> 00:22:12.260
Und bei dir kannst du es nicht machen.

00:22:12.260 --> 00:22:14.420
Ja, es ist schon ein Nischenfall.

00:22:14.420 --> 00:22:15.400
Ja, ja.

00:22:15.400 --> 00:22:27.320
Und genau, bei den, bei den Generic-Type-Geschichten muss man jetzt auch nicht mehr irgendwie Type-Wahr- und Type-Alias davor schreiben, sondern man kann halt irgendwie einfach.

00:22:27.320 --> 00:22:34.520
Man kann einfach Type nehmen als Keyword, also als Statement und dann irgendwie den Kram dahinter schreiben und muss auch nicht mehr den ganzen Kram importieren.

00:22:34.520 --> 00:22:36.100
Das funktioniert einfach so.

00:22:36.100 --> 00:22:40.320
Ja, also wenn man, wenn man drauf steht, dann ist das wahrscheinlich eine deutliche Verbesserung.

00:22:40.320 --> 00:22:41.620
Aber ich weiß nicht.

00:22:41.620 --> 00:22:43.500
Ja, Type ist schon so ein bisschen Bloatware, oder?

00:22:43.500 --> 00:22:44.320
So Typing manchmal.

00:22:44.320 --> 00:22:47.600
Ja, ich glaube, da müssen wir mal eine Episode machen.

00:22:47.600 --> 00:22:51.360
Wir müssen nochmal länger, weil können wir jetzt, das können wir jetzt nicht leisten.

00:22:51.360 --> 00:22:53.540
Das können wir beliebig vertiefen.

00:22:53.540 --> 00:22:55.160
Ja, es ist halt wirklich nützlich.

00:22:55.160 --> 00:22:57.280
Ich würde sagen, kollegatives Arbeiten, gerade mit Leuten, die das.

00:22:57.280 --> 00:23:02.700
Noch nicht so wissen, was da passiert, ist das echt hilfreich, um denen so zu zeigen, welche ich machen sollte.

00:23:02.700 --> 00:23:04.140
Ich habe auch Meinungen dazu, ja.

00:23:04.140 --> 00:23:04.840
Also nein.

00:23:04.840 --> 00:23:10.120
Ja, was haben wir noch?

00:23:10.120 --> 00:23:12.360
Ah, coole, kleine Verbesserungen, die aber.

00:23:12.360 --> 00:23:16.580
Achso, genau, auch noch zum Typing, weil das gehört auch noch zum Typing dazu.

00:23:16.580 --> 00:23:19.380
Es gibt jetzt einen Override-Dekorator.

00:23:19.380 --> 00:23:20.560
Override?

00:23:20.560 --> 00:23:24.820
Ja, wo man halt über eine Methode schreiben kann, at Override.

00:23:24.820 --> 00:23:26.700
Und dann damit dem.

00:23:27.240 --> 00:23:33.840
Einen Type-Checker sagen kann, also das hier überschreibt übrigens eine Methode in der Superklasse.

00:23:33.840 --> 00:23:40.480
Weil das Problem, das man bisher hat, ist halt, wenn man jetzt Methoden überschreibt in der Unterklasse,

00:23:40.480 --> 00:23:43.920
dann kann die ja komplett korrekt getypt sein und so.

00:23:43.920 --> 00:23:48.380
Und der statische Type-Checker, und jetzt nennt jemand irgendwie die Methode in der Oberklasse,

00:23:48.380 --> 00:23:50.520
aber refactored die und benennt die um.

00:23:50.520 --> 00:23:55.380
Dann merkt der statische Type-Checker davon überhaupt gar nichts und alles stimmt.

00:23:55.380 --> 00:23:57.200
Das Verhalten ändert sich aber.

00:23:57.200 --> 00:24:00.860
Weil ja jetzt plötzlich irgendwie das nicht mehr überschrieben wird.

00:24:00.860 --> 00:24:03.520
Und ja, dann ist natürlich schlecht.

00:24:03.520 --> 00:24:07.760
Und das heißt, du sagst explizit, hey, ich überschreibe hier eine Methode.

00:24:07.760 --> 00:24:13.400
Genau, und sobald jemand in der Oberklasse das Ding umbenennt, dann sagt dir der Type-Checker,

00:24:13.400 --> 00:24:18.000
sagt dir der statische Type-Checker, das ist überhaupt keine, das überschreibt überhaupt keine Methode mehr.

00:24:18.000 --> 00:24:20.700
Hier ist irgendwas kaputt, was vielleicht schon hilfreich ist.

00:24:20.700 --> 00:24:23.260
Ja, das tatsächlich findet man ein, zwei Wachs.

00:24:27.160 --> 00:24:28.960
Typing-Zeugs dann durch.

00:24:28.960 --> 00:24:30.060
Genau.

00:24:30.060 --> 00:24:31.620
Zu Dekoratoren.

00:24:31.620 --> 00:24:32.720
Ah, habt ihr das schon mal verwendet?

00:24:32.720 --> 00:24:33.360
Cached Property?

00:24:33.360 --> 00:24:34.060
Ja.

00:24:34.060 --> 00:24:34.880
Ich hab das mal in Jungle gesucht.

00:24:34.880 --> 00:24:36.640
Ich hab das auch schon häufiger verwendet, genau.

00:24:36.640 --> 00:24:38.260
Ja, das ist weg.

00:24:38.260 --> 00:24:40.740
Warum?

00:24:40.740 --> 00:24:42.200
Es war kaputt.

00:24:42.200 --> 00:24:46.860
Das Problem ist irgendwie, das hat so, es hat irgendwie massiv viele Logs gemacht und

00:24:46.860 --> 00:24:51.780
hat irgendwie nicht auf Instance-Ebene geloggt und das ist schrecklich.

00:24:51.780 --> 00:24:55.300
Und die Leute haben es gemessen und festgestellt, oh, es ist viel langsamer damit als vorher.

00:24:55.300 --> 00:24:56.400
Ich hab's nie überprüft.

00:24:56.400 --> 00:24:57.120
Ich hab immer so, oh, Cached Property.

00:24:57.120 --> 00:24:58.980
Hashtag Cached Property, voll gut.

00:24:58.980 --> 00:25:00.460
Nee, war scheiße.

00:25:00.460 --> 00:25:01.460
Und, ähm, ja.

00:25:01.460 --> 00:25:03.460
Das heißt, du machst einfach Cache und Methodenaufruf, oder?

00:25:03.460 --> 00:25:07.700
Ja, also ich hab's eben für solche Dinge benutzt, wo halt dann irgendeine Berechnung stattfindet

00:25:07.700 --> 00:25:09.020
und dann, äh, genau.

00:25:09.020 --> 00:25:11.400
Also wenn die Berechnung sehr lang ist, gut, vielleicht ist es dann auch noch irgendwie

00:25:11.400 --> 00:25:17.320
tatsächlich effizienter, aber so generell war es oft eher langsamer mit dem Cached-Dekorator

00:25:17.320 --> 00:25:18.120
drüber als ohne.

00:25:18.120 --> 00:25:22.900
Naja, man kann jetzt dann die Kalkulation cachen und dann eine andere Sache machen, wo

00:25:22.900 --> 00:25:23.640
der Property drinter ist.

00:25:23.640 --> 00:25:27.080
Ja, also auf jeden Fall, irgendwie hat sich wohl, hat sich jemand, hat sich das genauer

00:25:27.080 --> 00:25:29.820
angeguckt, dabei hat sich herausgestellt, dass, so wie das gedacht ist, das geht das

00:25:29.820 --> 00:25:30.380
alles gar nicht.

00:25:30.380 --> 00:25:34.080
Und daher haben sie es jetzt entfernt, weil, äh, ja.

00:25:34.080 --> 00:25:35.080
Das heißt, du musst das jetzt selber bauen.

00:25:35.080 --> 00:25:37.660
Also du kannst, machst ja zwei Methoden, die eine Methode ist eine Property und die eine

00:25:37.660 --> 00:25:38.160
Methode ist eine Methoden.

00:25:38.160 --> 00:25:38.860
Es ist nicht so schlimm.

00:25:38.860 --> 00:25:41.320
Also man kann das relativ leicht, sowas, sich sowas bauen.

00:25:41.320 --> 00:25:42.580
Wenn du keine Logs brauchst.

00:25:42.580 --> 00:25:43.060
Ja.

00:25:43.060 --> 00:25:51.160
Ja, aber wenn man Logs braucht, dann ist man eh schon in so einem Drachen, äh, so einem

00:25:51.160 --> 00:25:52.240
Drachenterritorium.

00:25:52.240 --> 00:25:54.760
Das ist halt, ja, muss man eh gucken.

00:25:54.760 --> 00:25:55.600
Ja.

00:25:55.600 --> 00:25:56.480
Äh, genau.

00:25:57.040 --> 00:25:57.940
Dann, ähm.

00:25:57.940 --> 00:26:00.660
Drachenterritorium.

00:26:00.660 --> 00:26:00.980
Ja.

00:26:00.980 --> 00:26:01.300
Ja.

00:26:01.300 --> 00:26:02.480
Wo die wilden Tiere wohnen.

00:26:02.480 --> 00:26:03.100
Genau.

00:26:03.100 --> 00:26:04.360
Bronze Drachen.

00:26:04.360 --> 00:26:08.500
Parslip, etwas, was mich immer, also das ist, das ist, das ist so ein Nervpunkt.

00:26:08.500 --> 00:26:12.500
Also, dass es in Python halt mehrere Module gibt, die sich irgendwie mit sowas wie Files

00:26:12.500 --> 00:26:15.500
und so Zorgs beschäftigen, ist halt einfach nervtötend.

00:26:15.500 --> 00:26:19.900
Hat historische Gründe, aber ist halt einfach, es gibt halt Parslip, so als das aktuellste.

00:26:19.900 --> 00:26:20.800
Und OSPAR.

00:26:20.800 --> 00:26:22.600
Es gibt OS, ja.

00:26:22.600 --> 00:26:26.360
Es gibt irgendwie dann noch SH-Util und es gibt noch irgendwie so ein paar andere.

00:26:27.000 --> 00:26:29.440
Und je nachdem, was man machen möchte, muss man halt eins von denen verwenden.

00:26:29.440 --> 00:26:31.260
Und es gibt keins, wo man alle verwenden kann.

00:26:31.260 --> 00:26:35.640
Auch Parslip hat natürlich auch schon diverse, also Parslip, da wird immer rumkritisiert,

00:26:35.640 --> 00:26:38.340
ein bisschen zu Recht, dass es ultra langsam ist.

00:26:38.340 --> 00:26:40.600
Vielleicht hat sich das jetzt auch gebessert, das weiß ich nicht genau.

00:26:40.600 --> 00:26:45.500
Auf jeden Fall, äh, wofür man früher immer noch mit OS häufig verwenden musste, war

00:26:45.500 --> 00:26:46.320
halt OS-Walk.

00:26:46.320 --> 00:26:50.100
Also, wenn man halt so ein Dateisystem im Baum einfach mal so rekursiv durchgehen möchte.

00:26:50.100 --> 00:26:52.220
Und in Parslip gab's nichts dafür.

00:26:52.220 --> 00:26:55.840
Also, und jetzt gibt's halt, äh, ein Walk in, in Parslip.

00:26:55.840 --> 00:26:56.580
Das musst du machen.

00:26:56.840 --> 00:26:59.980
Etatieren musstest du machen und dann immer rekursiv deine Funktion selber aufrufen.

00:26:59.980 --> 00:27:02.520
Ja, aber das willst du vielleicht nicht selber schreiben.

00:27:02.520 --> 00:27:08.540
Und gleichzeitig Iter-Files und das ist, äh, Arbeit und keine schöne Arbeit und leicht

00:27:08.540 --> 00:27:09.420
falsch zu machen Arbeit.

00:27:09.420 --> 00:27:11.380
Also, ich meine, das hast du nur für, machst du irgendwas anderes und dann willst du jetzt

00:27:11.380 --> 00:27:14.680
mal nur kurz irgendwie über alle Files in deinem Dateisystem rumgehen und dann fängst

00:27:14.680 --> 00:27:18.880
du da an, mit Rekursionen zu machen, äh, Dinge zu tun und so, wo viel schiefgehen kann.

00:27:18.880 --> 00:27:19.900
Ah, ich weiß nicht.

00:27:19.900 --> 00:27:23.520
Also, äh, da will man doch eigentlich eine Funktion einfach nehmen und die dann.

00:27:23.520 --> 00:27:24.200
Einfach ein Walk.

00:27:24.200 --> 00:27:26.680
Generell alles, was mit Dateien zu tun hat.

00:27:26.680 --> 00:27:32.060
Ist so, dass man eigentlich da lieber Funktionen dazu hat, die sich schon mal jemand ausgedacht

00:27:32.060 --> 00:27:33.720
hat, der was davon versteht.

00:27:33.720 --> 00:27:33.820
Ja.

00:27:33.820 --> 00:27:37.500
Weil die sind deceptively simple, wie man so sagt.

00:27:37.500 --> 00:27:41.120
Die sind ganz einfach zu schreiben und gehen dann auf überraschend beeindruckende Art

00:27:41.120 --> 00:27:41.780
und Weise kaputt.

00:27:41.780 --> 00:27:42.820
An vielen verschiedenen Stellen.

00:27:42.820 --> 00:27:45.180
Wenn du welche Permissions in die Runden steigen oder so was.

00:27:45.180 --> 00:27:46.180
Ja, Permissions oder Cycles.

00:27:46.180 --> 00:27:47.320
Bitte was?

00:27:47.320 --> 00:27:50.300
Ja, du kannst ja Cycles in deinem Verzeichnis haben.

00:27:50.300 --> 00:27:54.920
Du kannst ja links zum, zu einem gut darüberliegenden Verzeichnis und dann hast du eine Kurve drin

00:27:54.920 --> 00:27:56.520
und dann hast du schon.

00:27:56.520 --> 00:27:57.540
Schon einmal.

00:27:57.540 --> 00:28:01.080
Der Ding zu da, der Ding zu da, da, da, da, da, da.

00:28:01.080 --> 00:28:01.880
Und dann kommt der Beachball.

00:28:01.880 --> 00:28:06.060
Wenn du dich in dieses Rabbit Hole eingreifst, dann wird das, was du eigentlich machen wolltest,

00:28:06.060 --> 00:28:09.280
nicht mehr fertig, sondern dann bist du irgendwie verschwunden.

00:28:09.280 --> 00:28:10.100
Erstmal für die Zeit.

00:28:10.100 --> 00:28:12.120
Oder wenn man mit dem Cycle klingt, das könnte man dann mit lustige Sachen machen.

00:28:12.120 --> 00:28:14.160
Ja.

00:28:14.160 --> 00:28:15.100
Ja, schon.

00:28:15.100 --> 00:28:18.660
Oder andere Devices und dann von den anderen Devices wieder das andere Device eingebunden

00:28:18.660 --> 00:28:19.060
und.

00:28:19.060 --> 00:28:20.720
Ah, alles ist dann frei.

00:28:20.720 --> 00:28:21.980
Cycle über Devices.

00:28:21.980 --> 00:28:22.720
Und so schnell kommt man.

00:28:22.720 --> 00:28:26.360
Habe ich letztens irgendwo sehr schön, hat das jemand, äh, beschrieben, äh, ich weiß

00:28:26.360 --> 00:28:28.040
nicht, ob es auf Mastodon war oder statt, keine Ahnung.

00:28:28.040 --> 00:28:33.760
So, ja, also das, das coole, die coole Innovation von Unix ist ja, dass irgendwie in Unix einfach

00:28:33.760 --> 00:28:34.960
alles ein Pfeil ist.

00:28:34.960 --> 00:28:39.560
Es gibt ein kleines Problem mit dieser, äh, mit dieser Philosophie, nämlich, äh, irgendwie,

00:28:39.560 --> 00:28:42.680
dass eigentlich so gut wie gar nichts ein Pfeil tatsächlich ist.

00:28:42.680 --> 00:28:48.640
Ansonsten war es eine super Idee, aber es ist, ja, ist was dran.

00:28:48.640 --> 00:28:50.800
Den Witz musst du jetzt nochmal genau erklären.

00:28:50.800 --> 00:28:51.820
Das war jetzt so ein Insider.

00:28:51.820 --> 00:28:52.860
Ja, also.

00:28:52.860 --> 00:28:56.160
Also die Philosophie von Unix ist ja, alles ist ein Pfeil.

00:28:56.200 --> 00:29:00.640
Du kannst, äh, da gibt's, äh, Files, wo du die CPU-Auslastung auslesen kannst.

00:29:00.640 --> 00:29:04.000
Aber das heißt, du machst eine, äh, eine Händler auf, der zeigt an irgendeiner Stelle

00:29:04.000 --> 00:29:04.500
und dann.

00:29:04.500 --> 00:29:06.100
Ja, du musst halt den richtigen Dateinamen wissen.

00:29:06.100 --> 00:29:06.860
Alles ist ein Pfeil.

00:29:06.860 --> 00:29:07.800
Tatsächlich, fast alles ist ein Pfeil.

00:29:07.800 --> 00:29:08.860
Aber was, was bedeutet das denn?

00:29:08.860 --> 00:29:09.420
Vielleicht willst du erkennen.

00:29:09.420 --> 00:29:11.940
Also, du hast so eine Zeiger draufhin und kannst von da aus losrennen.

00:29:11.940 --> 00:29:13.040
Nee, du hast.

00:29:13.040 --> 00:29:14.080
Nee, das ist ein Pfadnamen halt.

00:29:14.080 --> 00:29:17.920
Das ist ein Pfadnamen und dann öffnest du dir die Datei und anstatt, dass du da Dateien,

00:29:17.920 --> 00:29:21.120
dass du Daten von der Festplatte liest, kriegst du halt Daten von irgendwoher anders geliefert.

00:29:21.200 --> 00:29:25.900
Zum Beispiel CPU-Auslastung oder zum Beispiel Netzwerksockets oder zum Beispiel sonst irgendwas.

00:29:25.900 --> 00:29:27.780
Das ist zumindest die Idee, ja.

00:29:27.780 --> 00:29:33.060
Dass wenn du halt den richtigen Pfad auf eine bestimmte, auf eine bestimmte Datei hast,

00:29:33.060 --> 00:29:35.980
ja, das ist gar keine Datei, sondern ein Socket an irgendeinem.

00:29:36.000 --> 00:29:38.220
Also Netzwerkverbindungen

00:29:38.220 --> 00:29:40.100
sind auch nur Files, irgendwie Geräte

00:29:40.100 --> 00:29:40.700
sind auch nur Files.

00:29:40.700 --> 00:29:44.300
So eins der

00:29:44.300 --> 00:29:45.860
ersten Unix-Dinge, die man so macht, wenn

00:29:45.860 --> 00:29:47.960
Leute das nicht kennen, ist, man nimmt halt irgendwie die

00:29:47.960 --> 00:29:49.860
Shell, zum Beispiel Bash, sagt halt Cat

00:29:49.860 --> 00:29:51.640
bin Bash oder nach

00:29:51.640 --> 00:29:53.700
größter Zeichen

00:29:53.700 --> 00:29:55.940
Dev Audio. Ja, und dann

00:29:55.940 --> 00:29:57.660
kann man irgendwie in dem Programm aus dem

00:29:57.660 --> 00:29:58.980
Lautsprechertröpfeln zuhören.

00:29:58.980 --> 00:30:00.500
Und solche Dinge.

00:30:00.500 --> 00:30:02.280
Weil das ist auch nur eine Datei.

00:30:02.280 --> 00:30:04.060
Ja, also unter Windows

00:30:04.060 --> 00:30:06.280
oder MS-DOS war das halt, das ist halt

00:30:06.280 --> 00:30:07.940
irgendwie, weil das war zu aufwendig.

00:30:07.940 --> 00:30:09.980
Also das ist ja auch von Unix

00:30:09.980 --> 00:30:12.020
inspiriert, aber das haben sie halt nicht so richtig implementiert,

00:30:12.020 --> 00:30:14.140
sondern dann haben sie da so komische Dinge gemacht

00:30:14.140 --> 00:30:16.000
wie Laufwerksbuchstaben oder

00:30:16.000 --> 00:30:17.640
Device-Buchstaben. Ja, und so

00:30:17.640 --> 00:30:20.080
reservierte Namen. Du darfst keine Datei haben,

00:30:20.080 --> 00:30:21.980
die COM1 heißt. Auch unter Windows 11 noch nicht.

00:30:21.980 --> 00:30:24.000
Ja. Und das ist

00:30:24.000 --> 00:30:25.840
natürlich eigentlich total schrecklich.

00:30:25.840 --> 00:30:27.900
Aber

00:30:27.900 --> 00:30:30.020
ja gut, wenn man das nicht anders

00:30:30.020 --> 00:30:32.080
kennt, dann fällt einem das vielleicht gar nicht so

00:30:32.080 --> 00:30:33.800
auf, aber genau.

00:30:34.060 --> 00:30:35.840
Ja, nur, genau. Also diese

00:30:35.840 --> 00:30:37.780
Philosophie, dass halt alles ein Pfeil ist und man alles gleich

00:30:37.780 --> 00:30:39.000
behandeln kann, ist eigentlich schon sehr cool.

00:30:39.000 --> 00:30:41.800
Und ist eigentlich auch immer so ein Beispiel für

00:30:41.800 --> 00:30:43.920
eine sehr gelungene API, weil man halt fast,

00:30:43.920 --> 00:30:46.040
also ganz, ganz viel kann man damit erschlagen.

00:30:46.040 --> 00:30:47.820
Und die API ist

00:30:47.820 --> 00:30:49.940
gleichzeitig einerseits sehr schmal oben.

00:30:49.940 --> 00:30:51.820
Also sozusagen, es gibt nur wenige Dinge,

00:30:51.820 --> 00:30:53.640
die man drauf machen kann. Lesen, Schreiben,

00:30:53.640 --> 00:30:55.760
bestimmte Stelle spulen.

00:30:55.760 --> 00:30:58.080
Man kann

00:30:58.080 --> 00:30:59.660
aber wahnsinnig viel damit machen. Die ist halt

00:30:59.660 --> 00:31:01.920
total tief. Also die ist halt schmal und tief.

00:31:01.920 --> 00:31:03.180
Das ist aber gut für eine API.

00:31:04.060 --> 00:31:04.700
Schlechte APIs,

00:31:04.700 --> 00:31:07.220
ah, worüber reden wir gleich noch?

00:31:07.220 --> 00:31:07.960
Breit und flach.

00:31:07.960 --> 00:31:11.500
Was könnte ein Beispiel für eine sehr breite

00:31:11.500 --> 00:31:12.660
und sehr flache API sein?

00:31:12.660 --> 00:31:15.640
Weiß ich nicht. Zum Beispiel Java-APIs

00:31:15.640 --> 00:31:16.980
irgendwie für Pfeil lesen,

00:31:16.980 --> 00:31:19.640
die sind halt scheiße. Die sind halt irgendwie, du musst halt

00:31:19.640 --> 00:31:21.360
tausend Klassen kennen und die

00:31:21.360 --> 00:31:23.580
konfigurieren und die ineinander stöpseln

00:31:23.580 --> 00:31:25.680
und willst eigentlich nur ein Pfeil lesen.

00:31:25.680 --> 00:31:27.020
Und das ist halt irgendwie, ach.

00:31:27.020 --> 00:31:28.820
Und ja.

00:31:28.820 --> 00:31:31.660
Genau. Sozusagen, also

00:31:31.660 --> 00:31:33.560
das ist halt, also Leute

00:31:33.560 --> 00:31:33.980
sagen mal,

00:31:34.060 --> 00:31:35.840
das ist wirklich schön, das ist eine schöne

00:31:35.840 --> 00:31:37.180
Abstraktion, das hat super funktioniert.

00:31:37.180 --> 00:31:39.880
Genau. Man kann halt sagen, aber ein kleines

00:31:39.880 --> 00:31:41.900
Problem, es gibt ein kleines, kleines Detail, das nicht so richtig

00:31:41.900 --> 00:31:43.840
gut funktioniert, nämlich die meisten Sachen sind kein Pfeil und verhalten

00:31:43.840 --> 00:31:44.580
sich auch nicht so und

00:31:44.580 --> 00:31:46.840
daher

00:31:46.840 --> 00:31:49.620
Wie kriegt man das Problem? Du musst das da irgendwie

00:31:49.620 --> 00:31:52.000
reinstopfen oder so eine Spule

00:31:52.000 --> 00:31:53.960
bauen oder? Ne, das ist halt so ein bisschen

00:31:53.960 --> 00:31:54.980
ja, das ist

00:31:54.980 --> 00:31:57.960
das stimmt auch irgendwo. Also es ist halt einfach

00:31:57.960 --> 00:31:59.840
ja, es gibt halt, alles ist halt furchtbar.

00:31:59.840 --> 00:32:01.860
Was habe ich letztens, ich habe

00:32:01.860 --> 00:32:03.720
letztens ein Essay gelesen auf einer sehr schönen

00:32:03.720 --> 00:32:05.360
Domain. Die Domain heißt irgendwie

00:32:05.360 --> 00:32:07.220
stilldrinking.com

00:32:07.220 --> 00:32:09.040
und da steht irgendwie

00:32:09.040 --> 00:32:11.600
Programming Sucks oder so und da ist

00:32:11.600 --> 00:32:13.620
sehr schön aufgelistet, was alles

00:32:13.620 --> 00:32:15.580
so schief geht und warum eigentlich nie

00:32:15.580 --> 00:32:17.540
irgendwas funktioniert und warum wir alle keine schönen Dinge haben können.

00:32:17.540 --> 00:32:19.660
Kann man ja mal lesen.

00:32:19.660 --> 00:32:21.300
Ich glaube, ich verlege das mal in den Schrauben. Ja, bitte, bitte.

00:32:21.300 --> 00:32:23.160
Den kenne ich auch noch nicht.

00:32:23.160 --> 00:32:25.640
Ja, der ist schon relativ alt

00:32:25.640 --> 00:32:27.200
inzwischen, der ist von 2014 oder so.

00:32:27.200 --> 00:32:29.520
Aber ja, ist immer noch genauso wahr

00:32:29.520 --> 00:32:31.560
wie damals. Er wird sich wahrscheinlich auch nie

00:32:31.560 --> 00:32:31.780
ändern.

00:32:33.720 --> 00:32:34.160
Ja.

00:32:34.160 --> 00:32:37.560
Und das mit dem Audio muss ich auch mal ausprobieren.

00:32:37.560 --> 00:32:39.440
Ja. Das kann ich auch nicht.

00:32:39.440 --> 00:32:41.640
Redirect von

00:32:41.640 --> 00:32:43.700
Bash auf Audio. Genau, was

00:32:43.700 --> 00:32:45.700
auch, C-Python

00:32:45.700 --> 00:32:46.940
benutzt jetzt auch Precommit.

00:32:46.940 --> 00:32:49.800
Auch nett. Precommit sind die Hooks,

00:32:49.800 --> 00:32:51.160
die den Code automatisch

00:32:51.160 --> 00:32:53.320
blinden oder

00:32:53.320 --> 00:32:55.380
Ja, also du kannst halt mit Precommit

00:32:55.380 --> 00:32:57.780
irgendwie diverse Regeln aufstellen,

00:32:57.780 --> 00:32:59.540
die halt erfüllt sein sollen, damit

00:32:59.540 --> 00:33:01.840
ob jetzt. Also zum Beispiel Black-kompatibel

00:33:01.840 --> 00:33:03.600
oder ich weiß nicht, bei C-Python ist das jetzt eher

00:33:03.600 --> 00:33:05.460
NC, also irgendwie. Jammel-Syntax

00:33:05.460 --> 00:33:07.440
gecheckt wird oder das andere. Ja, okay. Weiß ich nicht,

00:33:07.440 --> 00:33:09.440
falls zu groß sind oder. Weniger

00:33:09.440 --> 00:33:10.700
Bugs. Fühlst du weniger Bugs?

00:33:10.700 --> 00:33:11.940
Vielleicht.

00:33:11.940 --> 00:33:15.660
Naja, du kannst damit auch zumindest irgendwie

00:33:15.660 --> 00:33:17.400
relativ hart sicherstellen, dass

00:33:17.400 --> 00:33:19.060
bestimmte Regeln eingehalten werden.

00:33:19.060 --> 00:33:21.180
Machst du Precommit bei deinen Projekten? Ja.

00:33:21.180 --> 00:33:22.520
Auch mit MyPy?

00:33:22.520 --> 00:33:24.020
Ja.

00:33:24.020 --> 00:33:27.640
Aber, ja.

00:33:27.640 --> 00:33:29.480
Mach ich auch. Also ich mach Rough und

00:33:29.480 --> 00:33:31.160
MyPy und IceHorse und Black

00:33:31.160 --> 00:33:33.560
und PyUpgrade und sowas.

00:33:33.560 --> 00:33:35.440
Ja, mach ich auch. Also

00:33:35.440 --> 00:33:37.500
bis auf Rough, das benutze ich

00:33:37.500 --> 00:33:39.540
nicht, weil ehrlich gesagt, wenn man

00:33:39.540 --> 00:33:41.340
MyPy verwendet, ist es so langsam, dass alles

00:33:41.340 --> 00:33:42.520
an den Regalen ist.

00:33:42.520 --> 00:33:45.600
Aber catcht MyPy nicht nach dem

00:33:45.600 --> 00:33:47.480
ersten Durchlauf? Ja,

00:33:47.480 --> 00:33:49.460
mag sein. Ich weiß nicht, ich hab immer die Erfahrung,

00:33:49.460 --> 00:33:51.220
dass wenn ich mir denke, so

00:33:51.220 --> 00:33:53.500
ich hab doch jetzt auf diesen Knopf gedrückt. Doofes

00:33:53.500 --> 00:33:55.600
PyCharm. Warum reagiert dieser Knopf

00:33:55.600 --> 00:33:57.420
ist ausgegraut und irgendwas tut es und dann gucke ich

00:33:57.420 --> 00:33:59.480
hoch, sondern sehe ich, ah, CPU-Auslastung ist hoch.

00:33:59.480 --> 00:34:01.520
Hm, denk ich mir so. PyCharm.

00:34:01.520 --> 00:34:03.360
Und dann denk ich mir, nein,

00:34:03.520 --> 00:34:03.880
MyPy.

00:34:03.880 --> 00:34:07.600
Und es dauert einfach lange und, ja.

00:34:07.600 --> 00:34:09.320
Also MyPy muss man ja irgendwie, wenn man das

00:34:09.320 --> 00:34:11.340
konfiguriert, die ganzen Dependencies irgendwie mit angeben.

00:34:11.340 --> 00:34:12.360
Das ist fürchterlich alles.

00:34:12.360 --> 00:34:15.340
Ja, weil das halt in einem eigenen Virtual

00:34:15.340 --> 00:34:17.020
End alles stattfindet. Ja, aber warum

00:34:17.020 --> 00:34:19.360
kann das das nicht selber raffen aus

00:34:19.360 --> 00:34:21.300
der PyProject-Hummel oder sowas, wo man seine Dependencies

00:34:21.300 --> 00:34:23.360
hat oder wo auch immer die liegen oder, also ich

00:34:23.360 --> 00:34:25.160
finde es auch. Tja, wo auch immer die liegen.

00:34:25.160 --> 00:34:27.280
Ja, da kann man doch sagen, deine Dependencies

00:34:27.280 --> 00:34:29.240
liegen hier. Guck mal nach, das Formal kennst du

00:34:29.240 --> 00:34:31.400
bestimmt. Nimm sie und bau da was mit.

00:34:33.480 --> 00:34:35.580
Ja, vielleicht. Ich weiß es nicht. Aber es ist auf jeden Fall

00:34:35.580 --> 00:34:37.560
nicht so einfach. Aber C-Python

00:34:37.560 --> 00:34:39.540
benutzt es jetzt. Also es erhöht

00:34:39.540 --> 00:34:41.080
die Wahrscheinlichkeit, dass es nicht weggeht. Das ist gut.

00:34:41.080 --> 00:34:43.400
Ja, also

00:34:43.400 --> 00:34:45.160
dass sich jemand findet, der das dann halt weiter maintaint.

00:34:45.160 --> 00:34:47.280
Was auch noch schön ist, ist, oh, das ist

00:34:47.280 --> 00:34:49.460
total super. Ich weiß nicht, das habe ich in jedem

00:34:49.460 --> 00:34:50.780
Projekt gehabt und jetzt ist es,

00:34:50.780 --> 00:34:53.380
ach so, jetzt ist es

00:34:53.380 --> 00:34:54.600
halt quasi hoffentlich

00:34:54.600 --> 00:34:57.280
gelöst. Ich habe in jedem Projekt

00:34:57.280 --> 00:34:59.200
irgendwie eine kleine Funktion, die ich dann auch immer von

00:34:59.200 --> 00:35:01.380
Projekt zu Projekt kopiere, weil es ist einfach zu

00:35:01.380 --> 00:35:03.440
wenig, um daraus irgendwie ein eigenes

00:35:03.440 --> 00:35:05.360
Paket zu machen oder so. Aber ich brauche

00:35:05.360 --> 00:35:07.240
es halt irgendwie, tatsächlich, in jedem Projekt brauche ich halt

00:35:07.240 --> 00:35:08.200
irgendwie so ein Ding, dass mir

00:35:08.200 --> 00:35:11.480
wenn so eine lange Liste

00:35:11.480 --> 00:35:13.340
oder irgendwie ein langes

00:35:13.340 --> 00:35:15.300
Interable kommt, was mir das halt so in

00:35:15.300 --> 00:35:17.200
Badges zerlegt, wo ich dann mit den Badges

00:35:17.200 --> 00:35:19.100
irgendwas mache. Brauche ich immer.

00:35:19.100 --> 00:35:21.580
Also das heißt da, wo du am Ende wieder zusammenfügst

00:35:21.580 --> 00:35:23.200
oder so. Nee, einfach

00:35:23.200 --> 00:35:25.360
in Stücke hacken. In vierer Blöcke, in achter

00:35:25.360 --> 00:35:27.380
Blöcke, in zwölfer Blöcke. Genau, weil du willst

00:35:27.380 --> 00:35:29.360
halt zum Beispiel irgendwie alle, willst

00:35:29.360 --> 00:35:31.220
immer hundert Dinger gleichzeitig in die Datenbank

00:35:31.220 --> 00:35:33.400
oder immer in hunderter Blöcke in die Datenbank schreiben

00:35:33.400 --> 00:35:37.240
oder ausgeben oder sonst irgendwie was

00:35:37.240 --> 00:35:39.240
machen. Aber du willst es halt nicht jedes Mal machen, sondern halt

00:35:39.240 --> 00:35:41.340
so. Genau, also ich brauche das irgendwie

00:35:41.340 --> 00:35:42.700
immer und

00:35:42.700 --> 00:35:45.140
habe dann irgendwie, bei mir heißt diese Funktion

00:35:45.140 --> 00:35:46.460
meistens so chunked oder sowas.

00:35:46.460 --> 00:35:48.800
Und jetzt gibt es eine in

00:35:48.800 --> 00:35:51.120
Intertools, die heißt Batched und

00:35:51.120 --> 00:35:53.100
die macht genau das. Aber ist die

00:35:53.100 --> 00:35:54.800
neu? Die ist neu. Ja?

00:35:54.800 --> 00:35:57.020
Okay, ich dachte, da gäbe es sowas ähnliches.

00:35:57.020 --> 00:35:59.140
Hab ich auch schon mal gehört. Gab es da? Also man kann auch

00:35:59.140 --> 00:36:01.100
mit Zip oder

00:36:01.100 --> 00:36:03.160
mit Eisleis kann man das bauen. Ja, gut, so Zip-Hacks

00:36:03.160 --> 00:36:05.020
kannst du dir bauen, ja. Ja, aber

00:36:05.020 --> 00:36:06.940
meine Batched ist neu.

00:36:06.940 --> 00:36:09.000
Ich habe irgendwie letztes Jahr beim

00:36:09.000 --> 00:36:11.160
vielleicht habe ich auch immer eine geschrieben. Advent of Code

00:36:11.160 --> 00:36:12.400
Varianten irgendwie sowas.

00:36:12.400 --> 00:36:15.120
Jeder hat

00:36:15.120 --> 00:36:16.960
sowas schon mal geschrieben. Ja, also

00:36:16.960 --> 00:36:18.780
da ich das irgendwie immer brauche, ist es gut,

00:36:18.780 --> 00:36:20.980
wenn das jetzt in der Standardbibliothek ist. Hast du das reingebracht,

00:36:20.980 --> 00:36:21.420
Jochen? Nein.

00:36:21.420 --> 00:36:24.140
Aber

00:36:24.140 --> 00:36:27.100
irgendwie, ja, ist ganz in meinem

00:36:27.100 --> 00:36:28.800
Sinne. Ja, das glaube ich.

00:36:28.800 --> 00:36:31.100
Dann genau, ich habe es wie gesagt schon

00:36:31.100 --> 00:36:32.860
installiert und ich hatte auch so ein bisschen Probleme.

00:36:32.920 --> 00:36:34.500
Ja, also

00:36:34.500 --> 00:36:36.640
ich weiß nicht so ganz genau, woran diese Probleme liegen.

00:36:36.640 --> 00:36:38.680
Ist ja auch noch alles sehr frisch. Ich habe sie bloß,

00:36:38.680 --> 00:36:40.820
ich stehe noch unter dem Eindruck, sie erfahren

00:36:40.820 --> 00:36:42.840
zu haben. Also halt sowas

00:36:42.840 --> 00:36:44.740
wie zum Beispiel, also bei

00:36:44.740 --> 00:36:46.900
Projekten, die ich dann auf 3.12 umgestellt habe,

00:36:46.900 --> 00:36:48.860
das ging halt

00:36:48.860 --> 00:36:50.660
irgendwie nicht. Also irgendwie das Installieren

00:36:50.660 --> 00:36:52.540
von dem ganzen Virtual End funktioniert nicht, weil

00:36:52.540 --> 00:36:54.680
es sagt halt so, ich kann dieses Wheel nicht

00:36:54.680 --> 00:36:57.040
bauen von irgendeiner

00:36:57.040 --> 00:36:58.800
Abhängigkeit. Und

00:36:58.800 --> 00:37:00.760
dann habe ich versucht reingeguckt, ja, warum kann es das nicht bauen?

00:37:00.760 --> 00:37:01.440
Ja, weil irgendwie,

00:37:02.360 --> 00:37:05.020
Dist-Utils vielleicht fehlen

00:37:05.020 --> 00:37:07.080
manchmal, weil

00:37:07.080 --> 00:37:09.180
Dist-Utils sind Displicated, aber

00:37:09.180 --> 00:37:11.260
wenn man Setup-Tools installiert, dann kommen die alten

00:37:11.260 --> 00:37:12.800
Dist-Utils quasi mit und dann geht es wieder.

00:37:12.800 --> 00:37:16.340
Und

00:37:16.340 --> 00:37:17.280
genau,

00:37:17.280 --> 00:37:19.400
ach so, und früher wurde das automatisch

00:37:19.400 --> 00:37:21.180
in VNF, wenn man per

00:37:21.180 --> 00:37:22.860
VNF irgendwie ein Virtual End

00:37:22.860 --> 00:37:25.320
erzeugt hat, dann wurden die Setup-Tools direkt mit installiert.

00:37:25.320 --> 00:37:27.180
Und das passiert nicht mehr. Also

00:37:27.180 --> 00:37:29.020
das ist auch nicht mehr drin. Also auf jeden Fall,

00:37:29.020 --> 00:37:31.000
da an der Stelle ist es halt bei mir irgendwie zuverlässig

00:37:31.000 --> 00:37:31.380
gebrochen.

00:37:32.360 --> 00:37:34.640
Und wo es auch gebrochen ist, das fand ich etwas

00:37:34.640 --> 00:37:36.500
überraschend, und ich habe keine Ahnung, ob das irgendwie so

00:37:36.500 --> 00:37:38.600
beabsichtigt war, ist, dass bei vielen

00:37:38.600 --> 00:37:40.720
Abhängigkeiten, die

00:37:40.720 --> 00:37:42.600
halt nur noch eine Pi-Project-Tommel

00:37:42.600 --> 00:37:43.760
mitbringen, aus der dann

00:37:43.760 --> 00:37:46.620
sozusagen steuert, wie dem Wheel erzeugt

00:37:46.620 --> 00:37:48.660
wird, das geht nur

00:37:48.660 --> 00:37:50.560
noch, wenn Pi-ZMQ installiert

00:37:50.560 --> 00:37:52.240
ist. Keine Ahnung, warum.

00:37:52.240 --> 00:37:54.600
Was ist denn Pi-ZMQ?

00:37:54.600 --> 00:37:56.060
Irgendwas mit einer

00:37:56.060 --> 00:37:58.860
dieser, irgend so ein Messaging-Queue.

00:37:58.860 --> 00:38:00.000
Okay.

00:38:00.000 --> 00:38:02.220
Hätte ich jetzt nicht mit Wheels

00:38:02.220 --> 00:38:04.120
in Verbindung gebracht. Ja, ich auch nicht. Deswegen hat es mich

00:38:04.120 --> 00:38:06.180
gewundert. Und zwar auch in einer relativ neuen Version.

00:38:06.180 --> 00:38:08.060
Und wenn man das halt nicht installiert hat, also ich muss

00:38:08.060 --> 00:38:09.700
jetzt eine Reihe von Projekten das Ding als

00:38:09.700 --> 00:38:12.200
Core-Abhängigkeit mit hinzufügen,

00:38:12.200 --> 00:38:14.180
weil ansonsten konnte man

00:38:14.180 --> 00:38:16.040
irgendwie die ganzen Abhängigkeiten nicht mehr installieren.

00:38:16.040 --> 00:38:18.060
In 3.12, in 3.11 geht's noch.

00:38:18.060 --> 00:38:20.080
Also keine Ahnung, was da genau das Problem ist,

00:38:20.080 --> 00:38:20.760
aber naja.

00:38:20.760 --> 00:38:24.180
Vielleicht installiert das irgendwie eine Subdependency

00:38:24.180 --> 00:38:25.300
auf die irgendwie hin.

00:38:25.300 --> 00:38:27.840
Klingt auf jeden Fall gut.

00:38:27.840 --> 00:38:29.840
Genau weiß ich jetzt nicht, aber das ist halt etwas,

00:38:29.840 --> 00:38:32.080
worüber ich gestolpert bin und worüber ich auch gestolpert bin,

00:38:32.080 --> 00:38:33.680
aber das kann sein, dass das jetzt ein sehr spezifisches

00:38:33.680 --> 00:38:36.080
Mac-Problem ist. Es ist halt, auf dem M1

00:38:36.080 --> 00:38:38.060
findet, wenn man Python

00:38:38.060 --> 00:38:39.700
kompiliert mit Homebrew,

00:38:39.700 --> 00:38:42.000
das statt

00:38:42.000 --> 00:38:43.620
der aktuellen OpenSSL-Version

00:38:43.620 --> 00:38:46.240
die OpenSSL-Version 1.1, wenn sie installiert ist.

00:38:46.240 --> 00:38:48.160
Und das geht dann schief,

00:38:48.160 --> 00:38:49.540
weil, ja, zu alt.

00:38:49.540 --> 00:38:51.140
Wahrscheinlich ist das irgendein Fehler im

00:38:51.140 --> 00:38:53.160
Configure-Skript oder so.

00:38:53.160 --> 00:38:54.900
Und wenn man

00:38:54.900 --> 00:38:57.800
dann OpenSSL 1.1 entfernt und

00:38:57.800 --> 00:38:59.380
dann geht's.

00:39:01.940 --> 00:39:04.000
Ja. Das möchte man ja eigentlich.

00:39:04.000 --> 00:39:05.860
Ja. Habe ich jetzt auch.

00:39:05.860 --> 00:39:08.100
Ich dachte dann, wenn man sagt, ah, entfernt's mal,

00:39:08.100 --> 00:39:09.780
dann hat's mir gesagt, irgendwie ganz viele Pakete,

00:39:09.780 --> 00:39:11.700
die drauf basieren, unter anderem sowas wie

00:39:11.700 --> 00:39:13.300
TMAX und so und

00:39:13.300 --> 00:39:15.580
diverse andere Geschichten,

00:39:15.580 --> 00:39:17.400
ImageMagick, LibHive,

00:39:17.400 --> 00:39:19.660
so Sachen, wo man sagt, das kann ich nicht deinstallieren.

00:39:19.660 --> 00:39:21.460
Das ist da, da

00:39:21.460 --> 00:39:23.340
wiederum dependet zu viel anderes Zeugs drauf.

00:39:23.340 --> 00:39:25.680
Wenn man das alles deinstalliert, dann

00:39:25.680 --> 00:39:27.720
OpenSSL 1.1 entfernt und

00:39:27.720 --> 00:39:29.240
dann das nochmal installiert, dann

00:39:29.240 --> 00:39:31.180
linkt das halt gegen die richtige

00:39:31.180 --> 00:39:31.800
OpenSSL-Version.

00:39:31.800 --> 00:39:33.620
OpenSSL. Ja, gut. Also wahrscheinlich

00:39:33.620 --> 00:39:35.420
ist da auch wieder ein Fehler in irgendwelchen Configure-Skripten.

00:39:35.420 --> 00:39:37.460
Das ist doch ein Mac-Problem, oder? Kauft euch mal

00:39:37.460 --> 00:39:39.240
einen richtigen Secure-Skript. Ja,

00:39:39.240 --> 00:39:40.280
kann schon sein.

00:39:40.280 --> 00:39:43.660
Genau, ja. Jetzt haben wir

00:39:43.660 --> 00:39:45.540
aber tatsächlich so ein bisschen News, also nur von 3.3.12

00:39:45.540 --> 00:39:46.560
gemacht und ich glaube,

00:39:46.560 --> 00:39:48.300
wir müssen

00:39:48.300 --> 00:39:51.440
eine neue Folge sonst irgendwie aufmachen

00:39:51.440 --> 00:39:53.500
mit News von Python 3.12. Wir machen

00:39:53.500 --> 00:39:55.020
das nächste Mal mehr News.

00:39:55.020 --> 00:39:57.140
Also eigentlich wollten wir ja über

00:39:57.140 --> 00:39:59.480
Kubernetes reden und ich glaube, wir hatten jetzt so eine neue

00:39:59.480 --> 00:40:01.580
Markierung und haben

00:40:01.660 --> 00:40:03.560
die ganzen News jetzt, wenn ihr noch dran seid und

00:40:03.560 --> 00:40:05.480
Kubernetes tun wollt. Oder übersprungen habt.

00:40:05.480 --> 00:40:06.940
3.3.12 ist schon auch relevant.

00:40:06.940 --> 00:40:09.540
Ja, das stimmt natürlich. Ja, also die anderen News

00:40:09.540 --> 00:40:10.920
dann später. Wir haben immer noch,

00:40:10.920 --> 00:40:13.200
ja, haben wir noch welche? Nee.

00:40:13.200 --> 00:40:15.360
Nee, gut. Ich nicht. Gut, dann

00:40:15.360 --> 00:40:16.580
sprechen wir jetzt über Kubernetes.

00:40:16.580 --> 00:40:19.580
Spannend. So ganz am Einstieg,

00:40:19.580 --> 00:40:20.040
was ist denn das?

00:40:20.040 --> 00:40:22.800
Das ist schwer zu sagen.

00:40:22.800 --> 00:40:25.460
Es ist schwer zu beschreiben, was Kubernetes eigentlich ist.

00:40:25.460 --> 00:40:29.600
In wenigen Worten zusammengefasst

00:40:29.600 --> 00:40:31.120
würde ich sagen, das ist eine verteilte

00:40:31.120 --> 00:40:33.020
Runtime für Docker

00:40:33.020 --> 00:40:35.040
VMs. Also sowas, das

00:40:35.040 --> 00:40:37.060
irgendwie so ein paar Boote auf

00:40:37.060 --> 00:40:39.480
einem See beaufsichtigt.

00:40:39.480 --> 00:40:42.180
Nee.

00:40:42.180 --> 00:40:44.620
Doch.

00:40:44.620 --> 00:40:46.340
Also es ist so ein bisschen das, also ich glaube,

00:40:46.340 --> 00:40:49.080
wenn man sich das so vorstellt,

00:40:49.080 --> 00:40:51.060
dann laufen halt so bestimmte Boote,

00:40:51.060 --> 00:40:52.960
also Pots, so

00:40:52.960 --> 00:40:53.660
Container halt.

00:40:53.660 --> 00:40:56.500
Containerschiff sozusagen. Genau, auf so einem, ja,

00:40:56.500 --> 00:40:59.000
vielleicht sind das einfach so kleine Nussschalen

00:40:59.000 --> 00:41:00.440
oder sowas auf so einem See rum.

00:41:01.120 --> 00:41:02.620
Und irgendwer guckt halt, dass die

00:41:02.620 --> 00:41:04.560
in der richtigen Reihenfolge da laufen und dass

00:41:04.560 --> 00:41:06.600
man damit Dinge anstellen kann.

00:41:06.600 --> 00:41:08.960
Also das ist ein Bild,

00:41:08.960 --> 00:41:09.540
was ich nicht

00:41:09.540 --> 00:41:11.660
in den Kopf kriege, aber

00:41:11.660 --> 00:41:14.740
man kann es sicherlich so betrachten.

00:41:14.740 --> 00:41:16.440
Was ich auch schon mal,

00:41:16.440 --> 00:41:18.860
du sagst verteilte Runtime für, man könnte

00:41:18.860 --> 00:41:20.740
auch sagen, vielleicht ein Betriebssystem für eine Gruppe von

00:41:20.740 --> 00:41:21.580
Rechnern irgendwie.

00:41:21.580 --> 00:41:24.720
Die kann man dann wie ein

00:41:24.720 --> 00:41:26.760
Ding ansprechen, obwohl es halt viele Rechner

00:41:26.760 --> 00:41:28.740
sind. Ja, also das finde ich

00:41:28.740 --> 00:41:30.720
tatsächlich gar nicht so wichtig da dran, sondern das Wichtige

00:41:30.720 --> 00:41:32.280
daran finde ich eigentlich, dass das

00:41:32.280 --> 00:41:34.300
weggeht von dem imperativen Modell,

00:41:34.300 --> 00:41:36.520
was man ja so bei den, also wenn man Ansible macht,

00:41:36.520 --> 00:41:38.680
dann sagst du, auf diesem Server soll

00:41:38.680 --> 00:41:40.740
jetzt das hier ausgeführt werden und auf diesem

00:41:40.740 --> 00:41:42.020
Server soll das hier ausgeführt werden.

00:41:42.020 --> 00:41:44.560
Das ist sehr imperativ, ja, du gibst an, was

00:41:44.560 --> 00:41:46.620
passieren soll. Und

00:41:46.620 --> 00:41:48.620
Kubernetes geht hin

00:41:48.620 --> 00:41:49.380
zu so einem

00:41:49.380 --> 00:41:52.700
deklarativen Modell. Du sagst gar nicht mehr

00:41:52.700 --> 00:41:54.500
auf dem Computer soll das passieren,

00:41:54.500 --> 00:41:56.720
sondern du sagst, es soll drei Instanzen

00:41:56.720 --> 00:41:58.260
von dieser VM geben.

00:41:58.260 --> 00:42:00.440
Also das ist vielleicht auch noch so einer der Zwecke,

00:42:00.560 --> 00:42:02.500
wie Kubernetes am meisten irgendwie verwendet wird, dass du

00:42:02.500 --> 00:42:04.580
halt irgendwie so ein Load-Balancing machen kannst

00:42:04.580 --> 00:42:06.040
und halt skalieren kannst.

00:42:06.040 --> 00:42:08.500
Genau, dass du so skalieren kannst in horizontale

00:42:08.500 --> 00:42:10.260
Richtung, wenn du mehr Last kriegst oder sowas.

00:42:10.260 --> 00:42:12.460
Oder dass du vielleicht so Releases machen kannst,

00:42:12.460 --> 00:42:14.340
die rollend sind oder so.

00:42:14.340 --> 00:42:16.080
Das ist ein Aspekt davon, dass du

00:42:16.080 --> 00:42:18.500
so Skalierungsthemen hast. Finde ich jetzt aber gar

00:42:18.500 --> 00:42:20.340
nicht tatsächlich so wichtig, sondern für mich ist eher

00:42:20.340 --> 00:42:22.640
wichtig, dass du so eine Abstraktion hast zwischen

00:42:22.640 --> 00:42:25.880
was ist das Substrat,

00:42:25.880 --> 00:42:28.180
also die Computer, die du hast,

00:42:28.180 --> 00:42:30.000
und was ist die Workload?

00:42:30.400 --> 00:42:31.740
Also die Sachen, die du ausführen möchtest.

00:42:31.740 --> 00:42:34.500
Und so ein bisschen wie bei einer Datenbank.

00:42:34.500 --> 00:42:36.300
Bei einer Datenbank ist das Substrat die

00:42:36.300 --> 00:42:38.480
Festplatte und die Workload

00:42:38.480 --> 00:42:40.220
sind die Daten, die du drin hast. Und ich will

00:42:40.220 --> 00:42:42.140
eigentlich gar nicht selber entscheiden müssen,

00:42:42.140 --> 00:42:44.040
welche Daten wo liegen und wie die

00:42:44.040 --> 00:42:46.300
aufgebaut sind. Und deshalb nehme ich

00:42:46.300 --> 00:42:48.300
eine SQL-Datenbank, weil da sage ich einfach nur, hier sind

00:42:48.300 --> 00:42:50.240
die Daten und die haben folgende Eigenschaften,

00:42:50.240 --> 00:42:51.500
sorgt dafür, dass die gut sind.

00:42:51.500 --> 00:42:54.240
Und bei Kubernetes ist es genauso.

00:42:54.240 --> 00:42:56.060
Da sage ich, ich habe hier meine

00:42:56.060 --> 00:42:58.140
Nodes, das sind die Computer, die ich habe

00:42:58.140 --> 00:43:00.240
und nimm die mal

00:43:00.240 --> 00:43:02.020
und dann

00:43:02.020 --> 00:43:04.020
komme ich von der anderen Seite und sage, hier ist meine

00:43:04.020 --> 00:43:06.060
Workload. Ich brauche jetzt zwei VMs von

00:43:06.060 --> 00:43:08.120
der Sorte und fünf von der Sorte und sieben von der

00:43:08.120 --> 00:43:10.040
Sorte und die müssen so und so miteinander

00:43:10.040 --> 00:43:11.900
kommunizieren können. Sorg mal dafür.

00:43:11.900 --> 00:43:14.340
Also zweimal eine Datenbank, fünfmal eine Anwendung.

00:43:14.340 --> 00:43:16.180
Genau. Und die müssen folgende Ports

00:43:16.180 --> 00:43:18.020
offen haben und die müssen folgenden Speicherplatz haben

00:43:18.020 --> 00:43:20.060
und die müssen miteinander kommunizieren können und die

00:43:20.060 --> 00:43:21.840
müssen so und so exposed sein und

00:43:21.840 --> 00:43:23.520
sorg mal dafür, dass das passiert.

00:43:23.520 --> 00:43:26.000
Ja, da steckt man halt quasi so ein bisschen

00:43:26.000 --> 00:43:26.760
Lego zusammen.

00:43:26.760 --> 00:43:28.500
Jein.

00:43:30.080 --> 00:43:32.000
Du steckst es nicht selber zusammen, sondern du

00:43:32.000 --> 00:43:34.020
sagst hier, so soll das Lego-Modell

00:43:34.020 --> 00:43:36.000
am Ende aussehen. Schreibst eine Bauanleitung für ein Lego.

00:43:36.000 --> 00:43:36.240
Bau mal.

00:43:36.240 --> 00:43:40.320
Und das ist das, was mich da eigentlich

00:43:40.320 --> 00:43:42.320
dran reizt,

00:43:42.320 --> 00:43:43.980
dass du eben nicht mehr sagst, es soll etwas

00:43:43.980 --> 00:43:45.940
passieren, sondern du sagst, es soll ein Zustand erreicht

00:43:45.940 --> 00:43:47.720
werden. Ja. Und

00:43:47.720 --> 00:43:49.980
das beschreibt auch so ein bisschen das

00:43:49.980 --> 00:43:51.820
System, ja. Das

00:43:51.820 --> 00:43:53.440
beschreibt so ein bisschen, was Kubernetes überhaupt ist.

00:43:53.440 --> 00:43:55.920
Das ist eine Engine, die dafür sorgt, dass

00:43:55.920 --> 00:43:58.040
ein Zustand von VMs

00:43:58.040 --> 00:43:59.120
erreicht wird,

00:43:59.920 --> 00:44:01.360
mit den gegebenen Ressourcen.

00:44:01.360 --> 00:44:05.400
Und

00:44:05.400 --> 00:44:07.420
das ist was Sinnvolles, das ist was Nützliches.

00:44:07.420 --> 00:44:09.620
Das ist nicht dann nützlich, wenn du eine VM

00:44:09.620 --> 00:44:11.440
ausführst oder wenn du einen Rechner hast.

00:44:11.440 --> 00:44:13.560
Das ist dann nützlich, wenn du 100 Rechner

00:44:13.560 --> 00:44:15.200
hast und 1000 VMs ausführen musst.

00:44:15.200 --> 00:44:17.580
Weil dann, wenn du das manuell machen

00:44:17.580 --> 00:44:19.280
möchtest, dann fängst du halt an.

00:44:19.280 --> 00:44:21.660
Dann musst du

00:44:21.660 --> 00:44:23.460
irgendwelche Node-Gruppen machen und musst

00:44:23.460 --> 00:44:25.600
irgendwelche Verteilungsdinge

00:44:25.600 --> 00:44:27.420
machen und Affinitäten und Netzwerk,

00:44:27.420 --> 00:44:29.040
was weiß ich.

00:44:29.760 --> 00:44:31.540
Mit Kubernetes sagst du halt einfach,

00:44:31.540 --> 00:44:33.400
ja, das ist jetzt in Anführungsstrichen

00:44:33.400 --> 00:44:35.440
gesetzt, sagst du einfach, hier sind

00:44:35.440 --> 00:44:37.580
deine Nodes und dann kommst

00:44:37.580 --> 00:44:39.480
du von der anderen Seite an die AP ran und sagst, so,

00:44:39.480 --> 00:44:41.520
ich hab jetzt hier Workloads und zwar diese hier

00:44:41.520 --> 00:44:43.560
und diese hier und diese hier und diese hier und jetzt mach mal.

00:44:43.560 --> 00:44:45.500
Und idealerweise

00:44:45.500 --> 00:44:47.520
sorgt dann das System dafür, dass die

00:44:47.520 --> 00:44:49.440
Workloads, also die Images, die du laufen

00:44:49.440 --> 00:44:51.340
möchtest, auf diesen Knoten, die du hast,

00:44:51.340 --> 00:44:53.340
verteilt werden, sodass die

00:44:53.340 --> 00:44:55.620
alle ihre Anforderungen erfüllen und dass die Knoten

00:44:55.620 --> 00:44:57.500
trotzdem alle gut ausgelastet

00:44:57.500 --> 00:44:59.600
sind und gut verteilt sind. Und

00:44:59.600 --> 00:45:01.320
was weiß ich nicht, was man da alles noch einteilen

00:45:01.320 --> 00:45:01.540
kann.

00:45:01.540 --> 00:45:05.120
Aber im Endeffekt ist es,

00:45:05.120 --> 00:45:07.260
wenn man das, also aus

00:45:07.260 --> 00:45:09.480
Anwendersicht, ja, aus Workload-

00:45:09.480 --> 00:45:10.080
Betreiber-Sicht,

00:45:10.080 --> 00:45:13.300
ist das schon was relativ Simples.

00:45:13.300 --> 00:45:15.260
Du sagst halt, du beschreibst halt,

00:45:15.260 --> 00:45:16.180
wie deine

00:45:16.180 --> 00:45:19.420
Workloads aussehen sollen und was

00:45:19.420 --> 00:45:21.400
du gerne am Laufen haben möchtest. Und auch

00:45:21.400 --> 00:45:22.100
wie viele, ja.

00:45:22.100 --> 00:45:25.300
Also wenn du so ein System hast, wo du 100

00:45:25.300 --> 00:45:27.420
Nodes hast oder 1000 Nodes, ja, dann ist es

00:45:27.420 --> 00:45:29.440
leicht zu sagen, ich brauche jetzt 100 von diesen vor

00:45:29.440 --> 00:45:31.460
oder 200 von diesen. Oder da ist

00:45:31.460 --> 00:45:33.260
jetzt gerade Last drauf, also mach die bitte hoch

00:45:33.260 --> 00:45:33.920
oder wieder runter.

00:45:33.920 --> 00:45:37.200
Naja, das klingt

00:45:37.200 --> 00:45:39.240
erstmal sehr charmant,

00:45:39.240 --> 00:45:41.480
wenn man das einfach so, wenn man sagen kann, okay, ich abstrahiere

00:45:41.480 --> 00:45:43.120
von den konkreten

00:45:43.120 --> 00:45:44.700
Maschinen irgendwie. Da können unten

00:45:44.700 --> 00:45:46.500
Leute immer neue

00:45:46.500 --> 00:45:48.980
Maschinen in Racks

00:45:48.980 --> 00:45:51.360
stecken und mein Cluster wird halt

00:45:51.360 --> 00:45:53.260
größer. Wenn wir das drauf installieren und den

00:45:53.260 --> 00:45:55.200
als Node deklarieren. Genau, und ich muss

00:45:55.200 --> 00:45:56.320
das alles gar nicht wissen.

00:45:56.320 --> 00:45:59.360
Und auch von den Operationen. Du gehst weg von den

00:45:59.360 --> 00:46:01.380
Operationen. Also eine Node braucht

00:46:01.380 --> 00:46:03.620
tatsächlich nichts anderes als ein installiertes

00:46:03.620 --> 00:46:05.120
System mit einem Kubernetes.

00:46:05.120 --> 00:46:06.840
Das weiß ich nicht genau, wie das

00:46:06.840 --> 00:46:08.640
eingerichtet wird, weil die

00:46:08.640 --> 00:46:11.300
diese Operations-Seite habe ich noch nicht

00:46:11.300 --> 00:46:13.400
selber erlebt. Wir benutzen überall

00:46:13.400 --> 00:46:15.700
nur Managed Kubernetes.

00:46:15.700 --> 00:46:18.660
Weil auch, wenn du, also

00:46:18.660 --> 00:46:20.980
das Lustige ist ja, ja,

00:46:20.980 --> 00:46:23.120
das Argument gibt es ganz oft, Google

00:46:23.120 --> 00:46:24.340
macht das, also machen wir das auch.

00:46:24.340 --> 00:46:27.240
Und das stimmt

00:46:27.240 --> 00:46:29.240
aber so nicht, weil Google hat halt bestimmte

00:46:29.240 --> 00:46:31.140
Anforderungen und andere Firmen

00:46:31.140 --> 00:46:32.860
oder Projekte oder Teams haben halt andere

00:46:32.860 --> 00:46:35.020
Anforderungen. Wir haben ja bestimmt zwei Applikationen, dafür brauchen wir

00:46:35.020 --> 00:46:36.880
ein Kubernetes-Cluster. Ja, genau. Also wir haben

00:46:36.880 --> 00:46:38.880
hier zwei Server, dann mach doch mal ein

00:46:38.880 --> 00:46:40.800
Kubernetes-Cluster auf. Wir wollen da vier

00:46:40.800 --> 00:46:42.780
VMs laufen lassen, mach doch mal ein Kubernetes-Cluster auf.

00:46:42.780 --> 00:46:44.880
Nee, das brauchst du nicht.

00:46:44.880 --> 00:46:47.100
Dafür brauchst du einen Server und da kann

00:46:47.100 --> 00:46:48.860
jeder Docker-VMs starten oder

00:46:48.860 --> 00:46:49.900
andere VMs, ja.

00:46:49.900 --> 00:46:53.060
Das brauchst du dann, wenn du tausend Rechner

00:46:53.060 --> 00:46:55.000
hast und 30 Teams, die

00:46:55.000 --> 00:46:57.100
5000 VMs da drauf betreiben

00:46:57.100 --> 00:46:59.120
wollen. Weil dann willst du da nicht mehr händisch reingehen,

00:46:59.120 --> 00:47:00.960
und sagen, ihr kriegt jetzt diese

00:47:00.960 --> 00:47:03.120
Server und ihr kriegt diese Server und ihr kriegt diese

00:47:03.120 --> 00:47:04.280
Server, sondern dann sagst du einfach,

00:47:04.280 --> 00:47:07.000
hier ist euer Quoter und hier ist euer Quoter und hier ist

00:47:07.000 --> 00:47:08.680
euer Quoter. Ja. Und

00:47:08.680 --> 00:47:11.140
ihr dürft da drauf starten, was ihr wollt, solange

00:47:11.140 --> 00:47:13.120
ihr in eurem Quoter bleibt. Kurz, was ist

00:47:13.120 --> 00:47:15.580
ein Quoter? Also ein Anteil von Rechenkapazität?

00:47:15.580 --> 00:47:16.460
Genau, also du kannst

00:47:16.460 --> 00:47:19.200
Accounts, also es ist natürlich

00:47:19.200 --> 00:47:21.120
alles viel komplizierter, als es sich anhört, weil

00:47:21.120 --> 00:47:23.100
genau wie bei Datenbanken, eine Datei

00:47:23.100 --> 00:47:25.060
auf die Festplatte speichern ist easy, eine Datenbank

00:47:25.060 --> 00:47:26.160
betreiben ist nicht so easy.

00:47:26.160 --> 00:47:29.100
Und das kommt auch mit der Scale dazu.

00:47:29.100 --> 00:47:30.840
Ja, wenn du so eine gewisse

00:47:30.840 --> 00:47:33.060
Größe erreicht hast, wenn du halt mehr als 5

00:47:33.060 --> 00:47:34.960
Teams hast oder mehr als 10 Teams hast, dann musst

00:47:34.960 --> 00:47:37.200
du da irgendwie Autorisierung drin haben.

00:47:37.200 --> 00:47:39.040
Und dann musst du auch dafür sorgen, dass sich die Teams

00:47:39.040 --> 00:47:41.040
nicht gegenseitig zu sehr auf die Füße treten

00:47:41.040 --> 00:47:43.100
können. Oder abschießen können. Oder abschießen können, genau.

00:47:43.100 --> 00:47:44.920
Das heißt, du musst verhindern, dass ein Team

00:47:44.920 --> 00:47:46.980
sagt, so, wir brauchen jetzt 100.000 VMs mit

00:47:46.980 --> 00:47:48.880
jeweils einem Gigabyte Speicher und dann ist dein

00:47:48.880 --> 00:47:51.080
ganzer Knoten nur noch von diesen kaputten

00:47:51.080 --> 00:47:52.680
Sachen. Ich hatte so ein bisschen

00:47:52.680 --> 00:47:54.340
Gefühl, so meiner Erfahrung nach,

00:47:54.340 --> 00:47:56.440
ich hatte nicht so das Gefühl, dass man das wirklich

00:47:56.440 --> 00:47:59.080
dafür sorgt, dass mir niemand auf die Füße tritt, sondern eher

00:47:59.080 --> 00:48:01.060
so, dass ich die auf mir, also ich hatte

00:48:01.060 --> 00:48:03.040
immer noch die Schmerzen, als ob mir jemand auf die Füße getreten

00:48:03.040 --> 00:48:05.060
hätte. Aber ich kann die

00:48:05.060 --> 00:48:06.860
nicht mehr sehen, die das waren.

00:48:06.860 --> 00:48:08.640
Ja, genau. Eine andere Administrationsgruppe.

00:48:08.640 --> 00:48:11.000
Keine Operation. Es gibt eine Administrationsgruppe,

00:48:11.000 --> 00:48:13.020
die dann trotzdem alles da, die Geisterkundin hat,

00:48:13.020 --> 00:48:15.060
die das putzen und sauber machen. Aber normalerweise,

00:48:15.060 --> 00:48:16.880
also um zu dem Normalzustand

00:48:16.880 --> 00:48:18.960
zurückzukehren, ja, normalerweise hast du halt dann da deine Teams

00:48:18.960 --> 00:48:20.900
drauf, die irgendwelche Accounts auf diesem Kubernetes

00:48:20.900 --> 00:48:23.060
System haben. Und diese Accounts haben ein Quota. Das heißt,

00:48:23.060 --> 00:48:25.120
die dürfen eine bestimmte Menge CPU

00:48:25.120 --> 00:48:27.280
anfordern und eine bestimmte Menge RAM anfordern.

00:48:27.280 --> 00:48:29.060
Und mehr,

00:48:29.060 --> 00:48:31.260
äh, starten,

00:48:31.260 --> 00:48:33.000
mehr VMs starten kannst du halt nicht.

00:48:33.000 --> 00:48:35.180
Du kannst dem System sagen, starte bitte mehr VMs

00:48:35.180 --> 00:48:37.020
und dann sagt das System, nee, ich kann nicht mehr

00:48:37.020 --> 00:48:39.120
VMs starten, weil dein Quota aufgebraucht ist.

00:48:39.120 --> 00:48:41.240
Und ja,

00:48:41.240 --> 00:48:42.880
auch das kann zu Schmerzen führen,

00:48:42.880 --> 00:48:44.940
dass du halt sagst, okay, wir brauchen aber mehr

00:48:44.940 --> 00:48:46.520
und es geht nicht mehr. Nur

00:48:46.520 --> 00:48:49.140
das Problem hattest du vorher auch, ja, wenn du hier

00:48:49.140 --> 00:48:51.120
die drei Server hattest und die sind halt voll.

00:48:51.120 --> 00:48:53.100
Ja, aber es gibt auch

00:48:53.100 --> 00:48:54.940
höchstens noch selber dran. Es gibt schon

00:48:54.940 --> 00:48:56.940
Probleme, die man kriegt,

00:48:56.940 --> 00:48:58.960
die ich so sonst nicht kenne.

00:48:59.040 --> 00:49:00.680
Also, die ich halt ohne Kubernetes

00:49:00.680 --> 00:49:01.740
nicht habe.

00:49:01.740 --> 00:49:05.020
Weil diese Abstraktion halt doch

00:49:05.020 --> 00:49:07.080
irgendwie leaky ist. Ich meine, wie alle Abstraktionen

00:49:07.080 --> 00:49:08.920
so ein bisschen. Also zum Beispiel etwas, was

00:49:08.920 --> 00:49:09.780
halt irgendwie,

00:49:09.780 --> 00:49:12.920
ich meine, keine Ahnung, vielleicht gibt es auch irgendwie eine tolle

00:49:12.920 --> 00:49:14.940
Lösung für, aber was es halt, was ich halt schon

00:49:14.940 --> 00:49:16.920
irgendwie ätzend fand, ist halt, dass

00:49:16.920 --> 00:49:18.900
du eben, wenn du jetzt viel Zeug

00:49:18.900 --> 00:49:20.920
betreibst, dann kannst du ja

00:49:20.920 --> 00:49:22.800
nicht irgendwie allen Sachen

00:49:22.800 --> 00:49:24.920
irgendwie ganz viel Ressourcen geben, weil sonst sagt der

00:49:24.920 --> 00:49:26.240
Klasse dir so, äh,

00:49:26.240 --> 00:49:28.040
du hast jetzt hier schon so einen Dicke,

00:49:28.040 --> 00:49:28.840
das geht nicht.

00:49:29.040 --> 00:49:30.360
Das heißt, du überlegst dir dann so, okay,

00:49:30.360 --> 00:49:32.840
naja, also eigentlich braucht

00:49:32.840 --> 00:49:34.480
ja dieser Kante, das braucht ja gar nicht so viel.

00:49:34.480 --> 00:49:36.900
Dann setzt man die Ressourcen

00:49:36.900 --> 00:49:38.660
darunter. Ja, da hast du zu wenig

00:49:38.660 --> 00:49:40.680
Ressourcen gehabt, da war dein Quota zu niedrig.

00:49:40.680 --> 00:49:42.700
Ja, und dann

00:49:42.700 --> 00:49:44.700
passieren aber im Betrieb so Dinge, wo man

00:49:44.700 --> 00:49:46.700
dann halt mal kurzfristig ein bisschen mehr braucht.

00:49:46.700 --> 00:49:48.680
Und dann, zum Beispiel Hauptspeicher,

00:49:48.680 --> 00:49:50.180
und dann killt es das einfach weg.

00:49:50.180 --> 00:49:51.960
Das ist halt

00:49:51.960 --> 00:49:54.700
nicht so nett irgendwie. Das ist dann tatsächlich

00:49:54.700 --> 00:49:56.640
das Interessante, was da passiert,

00:49:56.640 --> 00:49:58.180
weil das System

00:49:58.180 --> 00:49:58.780
äh,

00:49:59.040 --> 00:50:00.880
reduziert genug ist, findest du auf einmal

00:50:00.880 --> 00:50:02.540
die Ecken und Kanten. Also zum Beispiel,

00:50:02.540 --> 00:50:04.940
dass du, äh, dass du zwei Limits hast.

00:50:04.940 --> 00:50:06.680
Ja, du hast ein Requests-Limit und

00:50:06.680 --> 00:50:08.420
ein Limit-Limit.

00:50:08.420 --> 00:50:10.840
Du forderst, äh, du brauchst mindestens so

00:50:10.840 --> 00:50:12.720
viel RAM und aber

00:50:12.720 --> 00:50:13.920
auf keinen Fall mehr als so viel.

00:50:13.920 --> 00:50:15.840
Und manchmal brauchst du es halt aber doch.

00:50:15.840 --> 00:50:18.760
Und diese Worte bedeuten auch nicht das, was sie

00:50:18.760 --> 00:50:21.060
bedeuten, sondern dieses Requests,

00:50:21.060 --> 00:50:22.940
wenn du zwischen dem Requests und dem Limit

00:50:22.940 --> 00:50:24.540
bist, dann heißt es, dass der,

00:50:24.540 --> 00:50:26.700
das Kubernetes diese

00:50:26.700 --> 00:50:27.760
vor allem abschalten darf.

00:50:27.760 --> 00:50:28.260
Mhm.

00:50:29.040 --> 00:50:31.240
Weil du ja über dem Requests drüber bist.

00:50:31.240 --> 00:50:33.120
Du bist über das, was du angefordert hast.

00:50:33.120 --> 00:50:35.520
Die, diese Worte bedeuten

00:50:35.520 --> 00:50:37.440
halt nur, wenn du übers Request gehst,

00:50:37.440 --> 00:50:39.000
darf Kubernetes deinen,

00:50:39.000 --> 00:50:41.300
deinen, deinen VAM-Schalter abschalten.

00:50:41.300 --> 00:50:43.320
Beim Limit muss es die VAM

00:50:43.320 --> 00:50:45.420
abschalten. Und das heißt, es darf halt dann,

00:50:45.420 --> 00:50:47.300
wenn andere anfragen, ob sie neue Ressourcen

00:50:47.300 --> 00:50:48.860
haben können und es keiner freien mehr findet.

00:50:48.860 --> 00:50:51.420
Ja, beziehungsweise, wenn

00:50:51.420 --> 00:50:53.380
du über dein, über dein, also es gibt

00:50:53.380 --> 00:50:55.180
zwei wichtige Kenngrößen, ja,

00:50:55.180 --> 00:50:57.080
CPU und, äh, Memory.

00:50:57.080 --> 00:50:58.960
Mhm. Und, äh, für

00:50:58.960 --> 00:51:00.940
jede der beiden kannst du angeben, wie viel du

00:51:00.940 --> 00:51:03.380
requestest, also wie viel du anforderst

00:51:03.380 --> 00:51:05.180
und wie viel

00:51:05.180 --> 00:51:06.860
du maximal benutzen wirst,

00:51:06.860 --> 00:51:08.540
also wie viel du am Limit hast.

00:51:08.540 --> 00:51:11.000
Und, ähm, das,

00:51:11.000 --> 00:51:12.980
das Scheduling, also die Zuweisung,

00:51:12.980 --> 00:51:14.260
welche

00:51:14.260 --> 00:51:16.640
Arbeitslasten auf welchem System,

00:51:16.640 --> 00:51:18.980
auf welchem Knoten laufen, die gehen über

00:51:18.980 --> 00:51:19.720
das Requests.

00:51:19.720 --> 00:51:22.940
Das heißt, wenn du sagst, meine Anwendung

00:51:22.940 --> 00:51:24.780
verbraucht 500 Megabyte Hauptspeicher

00:51:24.780 --> 00:51:26.980
und

00:51:26.980 --> 00:51:28.880
maximal 1000, dann kannst du auf einen

00:51:28.880 --> 00:51:30.680
Rechner gesetzt werden, auf einen Knoten gesetzt werden,

00:51:30.680 --> 00:51:32.320
wo 500 Megabyte frei sind.

00:51:32.320 --> 00:51:34.720
Weil dann ist deine Anforderung erfüllt.

00:51:34.720 --> 00:51:36.740
Ja, du hast gesagt, ich brauche 500 Megabyte

00:51:36.740 --> 00:51:38.740
Hauptspeicher. Wenn du drüber

00:51:38.740 --> 00:51:40.460
gehst, dann kann das halt sein, dass es,

00:51:40.460 --> 00:51:42.540
dass es nicht geht. Du kannst nicht mehr Speicher

00:51:42.540 --> 00:51:44.520
reservieren oder es kann sein, dass du, äh,

00:51:44.520 --> 00:51:46.700
abgeschossen wirst, weil jemand anderes

00:51:46.700 --> 00:51:48.440
auch gerade 500 Megabyte

00:51:48.440 --> 00:51:50.620
angefordert hat und du halt

00:51:50.620 --> 00:51:52.580
aber mehr als deine 500 Megabyte verbraucht hast,

00:51:52.580 --> 00:51:53.940
weil du zwischen Requests und Limit bist.

00:51:53.940 --> 00:51:56.620
Die, die pragmatische Lösung, die sich

00:51:56.620 --> 00:51:58.800
bei uns in diesem Projekt ergeben,

00:51:58.800 --> 00:52:00.260
ist, dass du Request-Gleich-Limit setzt.

00:52:00.260 --> 00:52:02.680
Das heißt, du forderst einfach so viel

00:52:02.680 --> 00:52:04.500
an, wie du denkst, dass du maximal brauchst

00:52:04.500 --> 00:52:06.740
und Spitzen hast, darfst du dann halt

00:52:06.740 --> 00:52:08.620
nicht haben, beziehungsweise Spitzen hast du halt dadurch

00:52:08.620 --> 00:52:10.700
abgedeckt, dass du sie... Das kenne ich auch,

00:52:10.700 --> 00:52:12.500
aber das Problem ist halt, tatsächlich hat man

00:52:12.500 --> 00:52:14.000
aber oft irgendwie Spitzen.

00:52:14.000 --> 00:52:16.660
Ja, und ist auch nicht schlau, ja. Eigentlich willst du ja,

00:52:16.660 --> 00:52:18.040
dass sich diese Wellen so ergänzen.

00:52:18.040 --> 00:52:20.640
Und wenn ich jetzt einfach auf einem normalen

00:52:20.640 --> 00:52:22.620
Rechner sozusagen deploye und ich habe jetzt halt irgendwie

00:52:22.620 --> 00:52:24.820
sagen wir mal 10 Projekte, die alle unterschiedliche

00:52:24.820 --> 00:52:26.640
Last haben und so, und ab und zu brauche ich

00:52:26.640 --> 00:52:28.220
halt mal so einen Gigabyte Hauptspeicher oder

00:52:28.220 --> 00:52:28.720
zwei.

00:52:28.720 --> 00:52:30.580
Zwei für irgendwas,

00:52:30.580 --> 00:52:32.020
weil sie halt irgendwie zum Beispiel

00:52:32.020 --> 00:52:34.740
im Fall, an dem ich mich gut erinnere, wo das halt

00:52:34.740 --> 00:52:36.620
echt Kopfschmerzen breitet

00:52:36.620 --> 00:52:38.740
hat, manchmal startest

00:52:38.740 --> 00:52:40.540
du und du kannst es auch nicht, hast es nicht unter Kontrolle.

00:52:40.540 --> 00:52:42.500
Bei Python hast du es halt oft unter Kontrolle.

00:52:42.500 --> 00:52:44.560
Da kann man schon irgendwas machen,

00:52:44.560 --> 00:52:46.460
aber zum Beispiel für manche Sachen,

00:52:46.460 --> 00:52:48.620
wenn man dann so ein externes Binary

00:52:48.620 --> 00:52:50.160
startet, wie zum Beispiel FFmpeg.

00:52:50.160 --> 00:52:52.420
FFmpeg, du kannst nicht...

00:52:52.420 --> 00:52:53.380
Der isst einfach alles auf.

00:52:53.380 --> 00:52:56.220
Naja, also es kann auf jeden Fall passieren.

00:52:56.220 --> 00:52:58.280
Du hast halt, also normalerweise

00:52:58.280 --> 00:52:58.720
passiert nichts.

00:52:58.720 --> 00:53:00.500
Und dann, aber du hast halt FFmpeg mit

00:53:00.500 --> 00:53:02.040
irgendwie so, weiß ich nicht,

00:53:02.040 --> 00:53:04.460
200 Zeichen irgendwie komischen Optionen

00:53:04.460 --> 00:53:06.420
hintendran und meistens passiert gar nichts. Und in

00:53:06.420 --> 00:53:08.340
komischen Fällen manchmal braucht das dann halt zwei

00:53:08.340 --> 00:53:10.020
Gigabyte Hauptspeicher. Ist halt so.

00:53:10.020 --> 00:53:11.860
Ja, aber solltest du das dann nicht abschießen in dem Fall?

00:53:11.860 --> 00:53:14.260
Nein. Solltest du das nicht verbieten in diesem Fall?

00:53:14.260 --> 00:53:16.200
Ja, und es ist halt dummerweise sinnvoll.

00:53:16.200 --> 00:53:18.520
Und das braucht es halt wirklich. Und jetzt kann man

00:53:18.520 --> 00:53:20.280
natürlich dann irgendwie, keine Ahnung, FFmpeg

00:53:20.280 --> 00:53:22.420
irgendwie sich angucken und schauen, wo ist denn da das Problem?

00:53:22.420 --> 00:53:24.460
Aber, äh, ja.

00:53:24.460 --> 00:53:26.260
Aber wie geht man denn mit so einem Fall um?

00:53:26.260 --> 00:53:28.240
Also, wenn ich einfach auf eine normale Maschine

00:53:28.240 --> 00:53:28.640
deploye,

00:53:28.640 --> 00:53:30.960
dann, das gleicht sich alles aus.

00:53:30.960 --> 00:53:32.680
Das ist kein Problem. Wenn dann mal ein Prozess

00:53:32.680 --> 00:53:34.760
mit ein bisschen mehr Hauptspeicher läuft,

00:53:34.760 --> 00:53:36.640
ist nicht schlimm. Ja, das dauert auch

00:53:36.640 --> 00:53:37.980
nicht so lange. Dann ist es wieder gut.

00:53:37.980 --> 00:53:40.100
Weil Kubernetes hat mir das echt,

00:53:40.100 --> 00:53:42.460
das macht dann echt Kopfschmerzen. Es geht so weit, dass dann

00:53:42.460 --> 00:53:44.380
Leute dann hingehen und neue Maschinen kaufen, weil

00:53:44.380 --> 00:53:45.740
man das irgendwie nicht in den Griff kriegt sonst.

00:53:45.740 --> 00:53:48.000
Und das ist halt schon irgendwie so. Ja, das ist doch gut für die Hersteller.

00:53:48.000 --> 00:53:50.300
Ja, genau. Aber dann denke ich mir so, also irgendwie

00:53:50.300 --> 00:53:51.940
kann das doch nicht die Lösung sein, oder? Also,

00:53:51.940 --> 00:53:54.580
ja. Weil man braucht es ja

00:53:54.580 --> 00:53:56.520
tatsächlich eigentlich nicht. Also, es ist halt

00:53:56.520 --> 00:53:57.820
nicht so, dass man, also,

00:53:58.560 --> 00:54:00.920
er muss da eigene Pods

00:54:00.920 --> 00:54:02.600
starten mit FFmpeg drin.

00:54:02.600 --> 00:54:04.960
Ja, ja, genau. Das kann man natürlich dann auch

00:54:04.960 --> 00:54:06.920
machen. Du kannst dann halt irgendwie so

00:54:06.920 --> 00:54:09.140
dir spezielle, oder das Problem

00:54:09.140 --> 00:54:10.720
hast du natürlich auch, wenn du spezielle Hardware hast,

00:54:10.720 --> 00:54:12.560
sowas wie GPUs oder sowas. Ja, gut, klar.

00:54:12.560 --> 00:54:14.980
Aber dann geht auch so ein bisschen der ganze

00:54:14.980 --> 00:54:16.840
Vorteil irgendwie so ein bisschen wieder verloren, weil

00:54:16.840 --> 00:54:18.580
dann muss sich ja doch wieder um die ganze

00:54:18.580 --> 00:54:20.920
Ja, klar. Die

00:54:20.920 --> 00:54:22.720
Annahme ist halt, dass du viele

00:54:22.720 --> 00:54:25.220
sage ich mal gleichpräige

00:54:25.220 --> 00:54:27.220
Arbeitslasten hast,

00:54:27.220 --> 00:54:28.480
die du

00:54:28.480 --> 00:54:30.080
wo es nur darum geht, die irgendwie so

00:54:30.080 --> 00:54:31.840
mehr oder weniger gleichmäßig zu verteilen.

00:54:31.840 --> 00:54:33.660
Und dann ist das großartig.

00:54:33.660 --> 00:54:35.760
Aber

00:54:35.760 --> 00:54:38.280
das Interessante, was

00:54:38.280 --> 00:54:39.980
als ich Kubernetes gelernt habe,

00:54:39.980 --> 00:54:42.300
war, dass sich da so die Denke

00:54:42.300 --> 00:54:44.440
so ein bisschen verändert. Genauso wie wenn man SQL lernt.

00:54:44.440 --> 00:54:46.300
Beim SQL lernen, wenn du anfängst, SQL

00:54:46.300 --> 00:54:48.460
zu lernen, dann ist die Frage oft so,

00:54:48.460 --> 00:54:50.380
wie sorge ich denn dafür, dass

00:54:50.380 --> 00:54:52.160
er das aus der Tabelle holt?

00:54:52.160 --> 00:54:53.680
Und die Antwort ist,

00:54:53.680 --> 00:54:56.120
gar nicht. Du sorgst da gar nicht dafür, sondern du sagst,

00:54:56.120 --> 00:54:58.200
naja, ich brauche was aus der Tabelle und dann

00:54:58.200 --> 00:55:00.060
sorgt er schon selber dafür, dass es

00:55:00.060 --> 00:55:00.760
aus der Tabelle kommt.

00:55:00.760 --> 00:55:03.420
Und so Situationen

00:55:03.420 --> 00:55:06.000
gibt es bei Kubernetes auch ganz

00:55:06.000 --> 00:55:07.940
viele, weil du eben zu diesem deklarativen Modell

00:55:07.940 --> 00:55:09.900
hingehst. Zum Beispiel, eine

00:55:09.900 --> 00:55:11.620
der schönsten ersten Lernerfahrungen war,

00:55:11.620 --> 00:55:13.820
wie sorge ich denn dafür, dass diese Maschine

00:55:13.820 --> 00:55:16.000
neu gestartet wird? Und die Antwort

00:55:16.000 --> 00:55:17.980
ist, gar nicht. Du löscht

00:55:17.980 --> 00:55:19.840
dir einfach. Du machst einfach die, die

00:55:19.840 --> 00:55:21.860
jetzt gerade existiert, weg und

00:55:21.860 --> 00:55:23.700
Kubernetes bemerkt, oh Moment, da fehlt ja eine

00:55:23.700 --> 00:55:24.700
und startet eine neue.

00:55:24.700 --> 00:55:28.120
Und das ist

00:55:28.120 --> 00:55:30.040
am Anfang manchmal etwas unintuitiv,

00:55:30.040 --> 00:55:30.980
auf diese

00:55:30.980 --> 00:55:33.840
Operationen zu kommen, wenn du irgendwas erreichen

00:55:33.840 --> 00:55:35.960
möchtest, wie du das deklarativ machst.

00:55:35.960 --> 00:55:37.940
Und deklarativ ist halt, diese Maschine soll

00:55:37.940 --> 00:55:38.880
jetzt bitte entfernt werden.

00:55:38.880 --> 00:55:40.320
Ja.

00:55:40.320 --> 00:55:43.240
Das sind auch so ein paar Probleme.

00:55:43.240 --> 00:55:45.840
Was das halt auch ist, ist irgendwie so

00:55:45.840 --> 00:55:47.780
Rolling Release dann halt irgendwie. Du hast halt mehrere

00:55:47.780 --> 00:55:49.940
Versionen von einer Software, die dann

00:55:49.940 --> 00:55:51.060
live ist, weil die halt einfach...

00:55:51.060 --> 00:55:51.700
Wundervolle Sache.

00:55:51.700 --> 00:55:55.840
Also du hast keinerlei Verzug mehr

00:55:55.840 --> 00:55:57.520
zwischen neuer Version, also gefühlt,

00:55:58.040 --> 00:56:00.120
und 10% laufen noch auf der alten Version

00:56:00.120 --> 00:56:01.480
oder schon auf der neuen, und dann schalten die

00:56:01.480 --> 00:56:03.940
ab, wenn die Prozesse irgendwie fertig sind, alte Maschinen

00:56:03.940 --> 00:56:05.420
ab und neu halt irgendwie rein.

00:56:05.420 --> 00:56:07.760
Aber das ist auch irgendwie ein bisschen

00:56:07.760 --> 00:56:08.880
blöd an verschiedenen Stellen.

00:56:08.880 --> 00:56:11.120
Ja, aber es ist doch eine großartige Sache.

00:56:11.120 --> 00:56:14.160
Es gab einen super Artikel zu Blue-Green-Deployments

00:56:14.160 --> 00:56:15.960
mit Django, da hast du halt...

00:56:15.960 --> 00:56:17.780
Von Marius Flissiak.

00:56:17.780 --> 00:56:19.900
Genau. Wird in den

00:56:19.900 --> 00:56:21.020
Shownotes erscheinen.

00:56:21.020 --> 00:56:24.140
Wo du halt ganz arg drauf achten musst,

00:56:24.140 --> 00:56:26.080
dass du deine Datenbank-Migration

00:56:26.080 --> 00:56:27.920
so machst, dass du quasi bei jedem

00:56:27.920 --> 00:56:30.000
Übergang beide Versionen betreiben

00:56:30.000 --> 00:56:31.600
kannst. Ja, das ist ja genau das Problem.

00:56:31.600 --> 00:56:33.760
Was machst du in Migration, in Django?

00:56:33.760 --> 00:56:36.000
Und dann ist irgendwie ein Feld in der Tabelle

00:56:36.000 --> 00:56:37.860
auf einmal neu. Ja gut, also ich meine, es steht dir ja frei,

00:56:37.860 --> 00:56:39.920
das anzuhalten und dann die Migration zu

00:56:39.920 --> 00:56:42.020
machen und dann neu zu starten. Das darfst

00:56:42.020 --> 00:56:44.000
du ja machen. Ja, aber neu ist ja

00:56:44.000 --> 00:56:45.980
kein Problem. Also Problem ist

00:56:45.980 --> 00:56:47.700
halt eher, wenn ein Zweck fällt oder so.

00:56:47.700 --> 00:56:50.080
Aber wie gesagt, dieser Mechanismus

00:56:50.080 --> 00:56:52.080
kannst du ja immer noch machen. Du kannst ja alle anhalten und

00:56:52.080 --> 00:56:54.080
Migration machen und alle neu starten.

00:56:54.080 --> 00:56:55.300
Das ist ja kein Ding.

00:56:55.300 --> 00:56:57.660
Nur, was die jetzt auch noch machen,

00:56:57.800 --> 00:56:59.920
kannst, ist eben diese, ja zum

00:56:59.920 --> 00:57:01.760
Beispiel ein Rolling Release oder ein Blue-Green Deployment.

00:57:01.760 --> 00:57:04.260
Rolling Release,

00:57:04.260 --> 00:57:05.820
ich glaube, wir müssen das erklären, ja? Ich wusste

00:57:05.820 --> 00:57:06.660
diese Worte auch nicht.

00:57:06.660 --> 00:57:09.880
Rolling Release heißt, dass

00:57:09.880 --> 00:57:11.780
wenn du zum Beispiel fünf VMs in

00:57:11.780 --> 00:57:13.760
einer bestimmten Version laufen hast, dass

00:57:13.760 --> 00:57:15.620
du das Kubernetes-System anweisen kannst,

00:57:15.620 --> 00:57:17.720
ich möchte jetzt auf eine andere Version, auf eine höhere

00:57:17.720 --> 00:57:19.500
Version, und zwar Rolling.

00:57:19.500 --> 00:57:21.360
Das heißt, er wird

00:57:21.360 --> 00:57:23.620
die VMs nach und nach

00:57:23.620 --> 00:57:25.440
abschalten und nach und nach die neuen zuschalten.

00:57:25.440 --> 00:57:26.620
Das ist halt immer eine gewisse Lasse.

00:57:27.680 --> 00:57:29.700
Dann eine neue hochfahren. Und erst, wenn die neue

00:57:29.700 --> 00:57:31.800
hochgefahren ist, wird die nächste alte gestoppt.

00:57:31.800 --> 00:57:34.020
Das heißt, du hast

00:57:34.020 --> 00:57:35.980
keine Situation, wo du

00:57:35.980 --> 00:57:37.260
keine Availability hast.

00:57:37.260 --> 00:57:39.460
Ja, genau, aber das kann man ja, so ein Problem, wenn

00:57:39.460 --> 00:57:41.680
PostQuesta einen Gipfel aufkriegt mit einem neuen Feld oder so.

00:57:41.680 --> 00:57:43.720
Ja, gut, klar. Das muss halt deine

00:57:43.720 --> 00:57:45.700
Software dann können. Und das ist nicht

00:57:45.700 --> 00:57:46.240
immer so einfach.

00:57:46.240 --> 00:57:49.740
Ja, also, aber das kannst du auch

00:57:49.740 --> 00:57:51.540
mit Ensemble machen, weil dieses Problem hast du natürlich sowieso

00:57:51.540 --> 00:57:53.680
auch. Ich würde nur sagen, also...

00:57:53.680 --> 00:57:55.620
Das ist natürlich schwierig, weil es ist schon eine komplizierte Operation.

00:57:55.620 --> 00:57:57.400
Ja, aber, aber,

00:57:57.560 --> 00:57:59.420
na gut, ich weiß nicht, ob man das halt so

00:57:59.420 --> 00:58:01.520
einfach automatisieren kann, weil es gibt

00:58:01.520 --> 00:58:03.380
halt sehr unterschiedliche Arten von, also es gibt

00:58:03.380 --> 00:58:05.460
halt die Dinge, wo man halt ein Rolling-Update

00:58:05.460 --> 00:58:07.320
machen kann, wo das halt gar kein Problem ist,

00:58:07.320 --> 00:58:09.540
wo man sozusagen nur irgendwie

00:58:09.540 --> 00:58:11.460
die alten rausnimmt und die neuen

00:58:11.460 --> 00:58:13.400
im Loadbalancer mit hinzufügt. Aber dann gibt es

00:58:13.400 --> 00:58:15.460
halt auch Dinge, wo das halt nicht geht, sondern wo du

00:58:15.460 --> 00:58:16.840
alle auf einmal umschalten musst.

00:58:16.840 --> 00:58:19.300
Weil das sonst

00:58:19.300 --> 00:58:20.620
deine Datenbank kaputt macht, zum Beispiel.

00:58:20.620 --> 00:58:22.380
Ja, oder du musst halt

00:58:22.380 --> 00:58:25.220
zu deiner alten Datenbank eine neue Datenbank gleichzeitig

00:58:25.220 --> 00:58:27.360
hochfahren und dann erst die neuen

00:58:27.440 --> 00:58:29.160
Daten einmal spiegeln, dann rüberfahren

00:58:29.160 --> 00:58:31.340
und dann irgendwie aufsammeln, das, was

00:58:31.340 --> 00:58:33.180
in der Zwischenzeit noch in die alten Daten geschrieben wird

00:58:33.180 --> 00:58:35.340
und dann auch so eine Liste machen,

00:58:35.340 --> 00:58:37.100
die du dann in die neuen Datenbank migrierst und

00:58:37.100 --> 00:58:39.220
das aber dann rollen. Das heißt, während

00:58:39.220 --> 00:58:41.060
du die migrierst immer länger, bis du dann irgendwann

00:58:41.060 --> 00:58:43.280
abschalten kannst, dann kannst du nur noch die neuen, das danach fliegen

00:58:43.280 --> 00:58:45.120
und dann hast du vielleicht nicht mehr ganz klare Daten, weil

00:58:45.120 --> 00:58:47.020
welche kamen jetzt zuerst und...

00:58:47.020 --> 00:58:49.080
Also es eignet sich sicherlich nicht für jede

00:58:49.080 --> 00:58:50.140
Situation, sagen wir es mal so.

00:58:50.140 --> 00:58:53.260
Aber wenn du zum Beispiel irgendwo nur Konfigurationsänderungen

00:58:53.260 --> 00:58:55.420
machst oder nur, keine Ahnung,

00:58:55.420 --> 00:58:57.320
irgendwelche harmlosen Features live

00:58:57.320 --> 00:58:59.120
schaltest, dann ist das schon irgendwie schön, weil du dann

00:58:59.120 --> 00:59:00.840
halt Zero-Downtime hast. Ja, aber das hast du doch

00:59:00.840 --> 00:59:01.460
sonst auch.

00:59:01.460 --> 00:59:05.080
Also wenn ich bei mir irgendwie

00:59:05.080 --> 00:59:07.080
ein neues Deployment mache, habe ich

00:59:07.080 --> 00:59:08.840
Zero-Downtime. Du machst halt den

00:59:08.840 --> 00:59:10.280
neuen Server auch... Ich habe eine Sekunde Downtime in der Mitte.

00:59:10.280 --> 00:59:11.980
Du machst ja den einen...

00:59:12.000 --> 00:59:14.740
altes System läuft. Dann fährst du das neue System

00:59:14.740 --> 00:59:16.660
hoch. Ja gut, das ist ja Blue-Green. Und dann zeigst du

00:59:16.660 --> 00:59:18.540
aber dem Loadbalancer einfach

00:59:18.540 --> 00:59:20.540
aufs neue System. Ja genau, das ist Blue-Green-Deployment, was ihr da

00:59:20.540 --> 00:59:22.260
beschreibt. Das heißt, du hast ein System

00:59:22.260 --> 00:59:24.500
im Background laufen, was Blue ist, also

00:59:24.500 --> 00:59:26.040
was den Status Blue hat

00:59:26.040 --> 00:59:28.700
und sagst dem Loadbalancer, bitte allen Traffic

00:59:28.700 --> 00:59:30.420
auf Blue. Und dann startest du ein System,

00:59:30.420 --> 00:59:32.320
ein komplettes, was Green hat als Status

00:59:32.320 --> 00:59:34.760
und wenn das fertig da ist, sagst du dem Loadbalancer

00:59:34.760 --> 00:59:35.700
jetzt umschalten auf Green.

00:59:35.700 --> 00:59:38.340
Diese Technik, die ihr beschreibt, heißt Blue-Green-Deployment.

00:59:38.340 --> 00:59:40.320
Auf die ist es relativ leicht mit

00:59:40.320 --> 00:59:41.380
Kubernetes umzusetzen.

00:59:42.000 --> 00:59:44.680
Die eigentliche Frage,

00:59:44.680 --> 00:59:46.680
die sich für mich stellt, ist, braucht

00:59:46.680 --> 00:59:48.620
man überhaupt Zero-Downtime-Deployments?

00:59:48.620 --> 00:59:49.940
Ja, das ist auch so eine Frage.

00:59:49.940 --> 00:59:52.580
Die machen ja ungeheuer viel Arbeit und die machen ungeheuer viele

00:59:52.580 --> 00:59:55.120
Probleme. Also dieser Django-Artikel

00:59:55.120 --> 00:59:56.800
über Blue-Green-Deployments, der ist wunderbar

00:59:56.800 --> 00:59:58.720
zu lesen und ist auch sehr schön, aber

00:59:58.720 --> 01:00:00.820
es sind halt einfach acht Arbeitsschritte

01:00:00.820 --> 01:00:02.560
mehr, als wenn du sagst, okay, wir halten

01:00:02.560 --> 01:00:04.560
kurz an, dann sind wir für eine Minute da und dann machen wir

01:00:04.560 --> 01:00:06.640
die Migration und dann starten wir es

01:00:06.640 --> 01:00:08.800
einfach wieder. Das gibt da noch ganz viele schöne Reihensachen.

01:00:08.800 --> 01:00:10.860
Weil wenn du sowas in so einer CI-CD-Chain

01:00:10.860 --> 01:00:11.940
drin hast, wo man, um

01:00:11.940 --> 01:00:13.680
zu testen, ob das überhaupt funktioniert, noch einen

01:00:13.680 --> 01:00:15.840
Staging-Prozess zwischendurch hat, der

01:00:15.840 --> 01:00:17.760
dann aber sowas macht, wie erstmal die

01:00:17.760 --> 01:00:19.720
alte Version auschecken und dann darauf ein Update

01:00:19.720 --> 01:00:21.800
fahren, damit halt klar ist, dass das Update

01:00:21.800 --> 01:00:23.580
geht und er nicht direkt neue Sachen baut,

01:00:23.580 --> 01:00:25.900
dann kann ja sein, dass das neue Version

01:00:25.900 --> 01:00:27.660
bauen anders ist, als auf ein altes System Update

01:00:27.660 --> 01:00:29.760
setzen. Und dann musst du halt erst alte bauen und dann

01:00:29.760 --> 01:00:31.380
das neue Updaten. Und wenn man dann sowas macht, wie

01:00:31.380 --> 01:00:33.880
neue Environments oder Secrets dazu und

01:00:33.880 --> 01:00:35.780
die es beim Anfang noch nicht gibt, aber am Ende

01:00:35.780 --> 01:00:37.780
dann schon, dann musst du halt quasi, oder

01:00:37.780 --> 01:00:39.540
halt welche entfernt halt, größeres Problem,

01:00:39.540 --> 01:00:40.820
dann sind die halt auf einmal weg.

01:00:41.880 --> 01:00:43.740
Das sind ein paar Sachen, die so problematisch sind, weil dann musst du

01:00:43.740 --> 01:00:46.220
zwei Releases machen, um so Sachen rauszukriegen

01:00:46.220 --> 01:00:47.700
zum Beispiel. Ja, das ist

01:00:47.700 --> 01:00:50.040
diese Krankheit. Google macht das, also machen wir das

01:00:50.040 --> 01:00:51.920
auch. Wieso, also die

01:00:51.920 --> 01:00:54.180
allermeisten Projekte

01:00:54.180 --> 01:00:55.840
und Teams und Unternehmen können doch

01:00:55.840 --> 01:00:57.820
auf, können auch eine Minute Downtime

01:00:57.820 --> 01:00:59.080
hinnehmen. Ist doch egal.

01:00:59.080 --> 01:01:01.980
Ja, aber wenn du Service-Level-Agreements

01:01:01.980 --> 01:01:03.800
hast, wo 5,9,

01:01:03.800 --> 01:01:06.360
das hast du so 99,999%.

01:01:06.360 --> 01:01:07.420
Also das können ja alle haben.

01:01:07.420 --> 01:01:08.040
Das macht dann nur 9,5.

01:01:08.040 --> 01:01:11.760
Das ist mein Service-Level-Agreement, ich garantiere.

01:01:11.820 --> 01:01:15.100
Mindestens 55,55555%

01:01:15.100 --> 01:01:15.420
Abteil.

01:01:15.420 --> 01:01:17.580
Hauptsache viele Zahlen.

01:01:17.580 --> 01:01:19.220
Hauptsache viele Significantages.

01:01:19.220 --> 01:01:21.800
Nee, das ist eben die Sache, das ist diese Krankheit.

01:01:21.800 --> 01:01:23.900
Man kann das machen,

01:01:23.900 --> 01:01:25.840
aber muss man das

01:01:25.840 --> 01:01:27.480
machen. Und bloß, weil das,

01:01:27.480 --> 01:01:29.920
und klar, das ist so vom Engineering her, ist das schon cool.

01:01:29.920 --> 01:01:31.740
Hast du eine Woche

01:01:31.740 --> 01:01:33.800
Arbeit reingesteckt, um ein Update zu machen

01:01:33.800 --> 01:01:35.480
und dafür hast du

01:01:35.480 --> 01:01:37.380
100% Availability.

01:01:37.380 --> 01:01:39.920
Großartig. Aber lohnt sich das?

01:01:39.920 --> 01:01:41.700
Ja, genau. Es gibt Fälle, wo das so ist.

01:01:41.760 --> 01:01:43.580
Ja, klar, es gibt Fälle, in denen das so ist.

01:01:43.580 --> 01:01:45.980
Aber, also ich meine, wie viele

01:01:45.980 --> 01:01:47.580
Engineering-Stunden

01:01:47.580 --> 01:01:50.080
sind eine Minute Downtime wert?

01:01:50.080 --> 01:01:51.980
Oder zwei Minuten? Oder fünf Minuten? Oder zehn Minuten?

01:01:51.980 --> 01:01:53.620
Ja.

01:01:53.620 --> 01:01:55.980
Das ist eine

01:01:55.980 --> 01:01:57.880
Frage, die man sich stellen muss. Und bloß, weil man

01:01:57.880 --> 01:01:59.760
das kann und weil die Techniker das machen

01:01:59.760 --> 01:02:01.960
wollen, ich zähle mich da ja auch dazu.

01:02:01.960 --> 01:02:03.900
Ich möchte auch gerne so ein cooles Deployment-System

01:02:03.900 --> 01:02:05.600
bauen, wo du Zero Downtime hast und

01:02:05.600 --> 01:02:07.880
100% Uptime und dann geht's

01:02:07.880 --> 01:02:09.660
aber leider doch nicht, weil du irgendwo WebSocket verbindest.

01:02:09.660 --> 01:02:11.700
Ich hatte ja auch mit dem Operativen

01:02:11.700 --> 01:02:13.760
Teil von so größeren Systemen schon irgendwie

01:02:13.760 --> 01:02:15.480
intensiveren Kontakt irgendwie

01:02:15.480 --> 01:02:17.380
vor langer Zeit. Aber...

01:02:17.380 --> 01:02:19.700
Damals. Damals. Ja, als wir noch jung

01:02:19.700 --> 01:02:21.500
waren. Aber, also

01:02:21.500 --> 01:02:23.700
sozusagen mein Bauchgefühl aus der

01:02:23.700 --> 01:02:25.520
Zeit würde sagen, es gibt

01:02:25.520 --> 01:02:27.520
so viele unterschiedliche Arten von Dingen,

01:02:27.520 --> 01:02:29.200
die man tun muss. Das kann man

01:02:29.200 --> 01:02:30.920
unmöglich irgendwie abstrahieren.

01:02:30.920 --> 01:02:33.440
Und das ist halt von der Hardware auch abhängig, die

01:02:33.440 --> 01:02:35.640
darunter liegt. Das ist halt, dass man das wegabstrahieren

01:02:35.640 --> 01:02:37.320
kann. Aber Jochen, Google macht das doch auch.

01:02:37.320 --> 01:02:39.660
Und wir könnten einfach ein Managed Kubernetes-Cluster

01:02:39.660 --> 01:02:41.640
kaufen und dann kannst du einfach zwei Pots hochschreiben und

01:02:41.640 --> 01:02:43.460
die, da kannst du so einen Schieberegler

01:02:43.460 --> 01:02:45.260
in deinem Webinterface einstellen, der sagt dann

01:02:45.260 --> 01:02:47.580
sieben Pots von acht bis zehn

01:02:47.580 --> 01:02:49.820
Uhr und danach...

01:02:49.820 --> 01:02:51.500
Oder Load Balanced auch, wenn die

01:02:51.500 --> 01:02:53.800
CPU-Auslastung über 50%

01:02:53.800 --> 01:02:55.600
steigt, dann skalierst du hoch.

01:02:55.600 --> 01:02:57.540
Geil. Okay, es kann sein, dass man das heutzutage alles

01:02:57.540 --> 01:02:59.520
nicht mehr braucht. Aber was wir zum Beispiel damals hatten,

01:02:59.520 --> 01:03:01.680
so auch bei diesen Load Balancing-Geschichten

01:03:01.680 --> 01:03:03.080
ist halt sowas. Was ist denn jetzt, wenn

01:03:03.080 --> 01:03:05.420
dein Netzwerk-Konnektivität

01:03:05.420 --> 01:03:06.240
asymmetrisch ist?

01:03:06.240 --> 01:03:09.640
Und du kannst halt...

01:03:09.640 --> 01:03:11.580
Ja, genau. Jetzt muss dann halt...

01:03:11.580 --> 01:03:13.500
Du musst ja alle gleich behandeln können. Jetzt musst du erst mal

01:03:13.500 --> 01:03:14.840
bitte wieder kurz erklären, was das denn bitte

01:03:14.840 --> 01:03:18.000
asymmetrische Netzwerke ist. So eine natürliche

01:03:18.000 --> 01:03:19.780
Asymmetrie in dem Verhältnis

01:03:19.780 --> 01:03:21.680
von wie viel Daten kommen rein, wie viel gehen raus

01:03:21.680 --> 01:03:23.720
bei Web. Weil es kommt halt

01:03:23.720 --> 01:03:24.940
einfach viel weniger rein, als raus geht.

01:03:24.940 --> 01:03:27.140
Ja.

01:03:27.140 --> 01:03:29.520
Also ein Request ist viel kleiner als die

01:03:29.520 --> 01:03:31.380
Antwort auf ein Request. Antwort auf ein Request ist viel größer.

01:03:31.380 --> 01:03:32.980
Üblicherweise ja.

01:03:32.980 --> 01:03:34.500
So, das heißt

01:03:34.500 --> 01:03:37.200
genau, dieses...

01:03:37.200 --> 01:03:39.160
Deswegen haben bis bei DSL,

01:03:39.160 --> 01:03:41.520
also wenn man halt sich überlegt, okay, wie kann ich denn jetzt

01:03:41.520 --> 01:03:42.760
das halt

01:03:42.760 --> 01:03:45.680
noch okay aussehen lassen, obwohl es eigentlich nur Klingeldraht

01:03:45.680 --> 01:03:47.560
ist, dann macht man das halt so asymmetrisch.

01:03:47.560 --> 01:03:49.540
Und auf der anderen Seite

01:03:49.540 --> 01:03:51.740
hat man diese Asymmetrie aber auch.

01:03:51.740 --> 01:03:53.620
Und das kann man dann jetzt

01:03:53.620 --> 01:03:55.800
dann halt zum Beispiel so nutzen, dass man

01:03:55.800 --> 01:03:58.000
dass man halt

01:03:58.000 --> 01:03:59.680
irgendwie das rausgehende Interface

01:03:59.680 --> 01:04:01.480
ist halt einfach viel dicker als das reinkommende.

01:04:01.480 --> 01:04:03.180
Weil reinkommen tut ja nicht so viel.

01:04:03.180 --> 01:04:05.600
Und dann kannst du zum Beispiel auch... Also wenn du jetzt so viel

01:04:05.600 --> 01:04:07.660
Traffic hast, dass du den eigentlich gar nicht mehr loadbalancen

01:04:07.660 --> 01:04:09.600
könntest, weil das ist zu viel

01:04:09.600 --> 01:04:11.460
für... Damals war das halt

01:04:11.460 --> 01:04:12.600
ein Gigabit oder so. Mehr

01:04:12.600 --> 01:04:14.460
kriegte man halt nicht hin.

01:04:14.460 --> 01:04:17.100
Und ja,

01:04:17.100 --> 01:04:19.480
so, heute geht wahrscheinlich ein bisschen mehr, aber

01:04:19.480 --> 01:04:21.540
so, das geht halt nicht.

01:04:21.540 --> 01:04:23.380
Dann ist es aber kein Problem, weil ich muss ja nur

01:04:23.380 --> 01:04:25.140
den reinkommenden Traffic loadbalancen können.

01:04:25.140 --> 01:04:27.380
Und der rausgehende Traffic, der

01:04:27.380 --> 01:04:29.140
geht halt dann über so ein Fake

01:04:29.140 --> 01:04:31.380
Interface

01:04:31.380 --> 01:04:33.380
raus und das landet dann halt alles

01:04:33.380 --> 01:04:35.300
irgendwie... Und das kann halt dann deutlich dicker sein.

01:04:35.300 --> 01:04:35.880
Das ist dann kein Problem.

01:04:35.880 --> 01:04:39.240
Also sowas geht dann ja alles schon nicht mehr.

01:04:39.240 --> 01:04:41.240
Das kannst du gar nicht mehr machen, weil...

01:04:41.460 --> 01:04:43.440
Also du musst ja dann alle gleich behandeln können.

01:04:43.440 --> 01:04:45.400
Und der Loadbalancen geht ja auch nur so,

01:04:45.400 --> 01:04:47.360
also es kann ja nicht so sein, dass beim Loadbalancing

01:04:47.360 --> 01:04:49.520
oder ich denke mal, so in Kubernetes

01:04:49.520 --> 01:04:51.420
kann es ja nicht sein, dass die Pakete über den einen

01:04:51.420 --> 01:04:53.340
Weg rein und auch über den anderen Weg rausgehen oder sowas,

01:04:53.340 --> 01:04:55.060
was man ja an der Stelle gerne halt...

01:04:55.060 --> 01:04:56.700
Das wirst du ja vielleicht über

01:04:56.700 --> 01:04:58.940
Netzwerk-Policies schon irgendwie hinkriegen.

01:04:58.940 --> 01:05:01.360
Ich weiß es nicht, aber mir scheint das so, als ob das

01:05:01.360 --> 01:05:03.560
irgendwie da implizit mit drin wäre,

01:05:03.560 --> 01:05:05.420
dass das irgendwie alles schon egal ist,

01:05:05.420 --> 01:05:07.260
wenn das über das Netzwerk geht. Das ist kein Problem.

01:05:07.260 --> 01:05:08.720
Ja, Netzwerk hast du ja immer genug.

01:05:08.720 --> 01:05:10.800
Ja, genau. Das glaube ich nicht.

01:05:11.460 --> 01:05:13.500
Also, dass das keinen Unterschied macht,

01:05:13.500 --> 01:05:15.520
ja, also

01:05:15.520 --> 01:05:17.460
okay, ich weiß es nicht, aber ich habe

01:05:17.460 --> 01:05:19.620
so den Verdacht, dass das dann doch vielleicht irgendwann liegt.

01:05:19.620 --> 01:05:21.900
Ja, aber...

01:05:21.900 --> 01:05:23.860
Es tropft und abölt und...

01:05:23.860 --> 01:05:25.420
Eine sehr schöne Sache ist halt, dass du wirklich

01:05:25.420 --> 01:05:27.460
diese Trennung hast zwischen...

01:05:27.460 --> 01:05:29.820
Also aus...

01:05:29.820 --> 01:05:31.700
Ich bin ja als Softwareentwickler,

01:05:31.700 --> 01:05:33.360
bin ich ein Anwender von dem System.

01:05:33.360 --> 01:05:35.320
Und ich kann einfach

01:05:35.320 --> 01:05:37.780
den Betrieb des Systems wegdelegieren.

01:05:37.780 --> 01:05:38.900
Und ich kann sagen,

01:05:38.900 --> 01:05:40.940
hier, ich gehe zu Amazon und kaufe mir

01:05:40.940 --> 01:05:41.300
einen Managed...

01:05:41.460 --> 01:05:43.600
Kubernetes-Cluster. Oder ich gehe zu

01:05:43.600 --> 01:05:45.800
Azure und kaufe mir einen Managed-Kubernetes-Cluster.

01:05:45.800 --> 01:05:47.340
Und dann ist es sehr einfach.

01:05:47.340 --> 01:05:49.600
Ich kann dann einfach sagen, hier sind meine Workloads

01:05:49.600 --> 01:05:50.900
und sorg bitte dafür, dass das läuft.

01:05:50.900 --> 01:05:53.440
Und brauche mich darum einfach nicht mehr kümmern.

01:05:53.440 --> 01:05:56.240
Und klar, bezahle ich da zu viel.

01:05:56.240 --> 01:05:57.740
Das ist bei Amazon immer so, ja.

01:05:57.740 --> 01:05:59.740
Ja, ja, aber gut, okay, verstehe ich auch,

01:05:59.740 --> 01:06:00.820
dass das Sinn machen kann, weil...

01:06:00.820 --> 01:06:02.840
Aber es macht mir einfach eine Sache weg.

01:06:02.840 --> 01:06:05.180
Wenn mein Business halt viel Geld umsetzt

01:06:05.180 --> 01:06:06.920
und ich dafür gar nicht so viel IT brauche

01:06:06.920 --> 01:06:09.540
und ich damit keine Schmerzen haben möchte

01:06:09.540 --> 01:06:09.980
und sage, okay...

01:06:09.980 --> 01:06:10.740
Ja, oder auch eine Trennung.

01:06:10.740 --> 01:06:10.980
Okay.

01:06:11.460 --> 01:06:12.340
Du kannst eine Trennung machen

01:06:12.340 --> 01:06:14.420
zwischen den Leuten, die die Computer betreiben,

01:06:14.420 --> 01:06:16.860
die sich um so unangenehme Sachen

01:06:16.860 --> 01:06:18.820
wie Strom und Wärme kümmern müssen

01:06:18.820 --> 01:06:20.700
und wer da dran darf.

01:06:20.700 --> 01:06:23.000
Und du hast die Entwickler,

01:06:23.000 --> 01:06:24.600
die eigentlich das als abstrakte

01:06:24.600 --> 01:06:26.640
Computergrößen sehen und wie viele

01:06:26.640 --> 01:06:28.060
Milli-CPUs du da brauchst.

01:06:28.060 --> 01:06:28.420
Ja.

01:06:28.420 --> 01:06:31.680
Das ist schon für...

01:06:31.680 --> 01:06:33.980
Aber wieder, ja, wieder für ein Unternehmen

01:06:33.980 --> 01:06:35.240
einer gewissen Größe.

01:06:35.240 --> 01:06:35.840
Ja, ja, klar.

01:06:35.840 --> 01:06:37.580
Und ich möchte nicht zu Hause

01:06:37.580 --> 01:06:39.180
auf meinem Raspberry Pi

01:06:39.180 --> 01:06:40.980
oder auf meinen Raspberry Pis

01:06:40.980 --> 01:06:41.440
einen Computer kümmern,

01:06:41.460 --> 01:06:42.760
weil ich einen Kubernetes-Cluster betreiben müssen,

01:06:42.760 --> 01:06:44.340
bloß weil ich da ein Power-VM starten möchte.

01:06:44.340 --> 01:06:45.780
Das mache ich halt händisch, ja.

01:06:45.780 --> 01:06:47.880
Oder mit irgendwelchen Tools,

01:06:47.880 --> 01:06:50.560
die dann dafür geeignet sind.

01:06:50.560 --> 01:06:51.940
Und das ist eigentlich so,

01:06:51.940 --> 01:06:53.600
das finde ich so das Problem

01:06:53.600 --> 01:06:56.780
an diesen ganzen Enterprise-Sachen.

01:06:56.780 --> 01:06:57.340
Ja, ja.

01:06:57.340 --> 01:07:02.160
Lohnt sich das überhaupt für diese Situation?

01:07:02.160 --> 01:07:03.460
Und es gibt viele Situationen,

01:07:03.460 --> 01:07:05.240
in denen Kubernetes eingesetzt wird,

01:07:05.240 --> 01:07:06.400
in denen es sich einfach nicht lohnt,

01:07:06.400 --> 01:07:09.200
weil die Last nicht groß genug ist,

01:07:09.200 --> 01:07:10.200
weil die...

01:07:11.460 --> 01:07:14.040
Weil die Inhomogenität nicht groß genug ist.

01:07:14.040 --> 01:07:16.760
Wenn du tausend identische Maschinen starten möchtest,

01:07:16.760 --> 01:07:18.040
gibt es einfachere Wege.

01:07:18.040 --> 01:07:24.320
Wenn du 50 Maschinen starten möchtest,

01:07:24.320 --> 01:07:25.460
gibt es einfachere Wege.

01:07:25.460 --> 01:07:27.980
Du musst kurz so einen kleinen Elevator machen.

01:07:27.980 --> 01:07:28.220
Warum?

01:07:28.220 --> 01:07:30.940
Ja, es gibt ja ganz viele Workloads,

01:07:30.940 --> 01:07:32.500
die sehr computer-heavy sind.

01:07:32.500 --> 01:07:33.380
Wir hatten mal so ein...

01:07:33.380 --> 01:07:34.640
Ich war mal in so einem Projekt in Norwegen,

01:07:34.640 --> 01:07:36.780
wo wir einfach eine Berechnung durchführen mussten

01:07:36.780 --> 01:07:39.600
und wir hatten nicht viel Zeit

01:07:39.600 --> 01:07:41.280
und wir hatten aber terabyteweise Daten.

01:07:41.460 --> 01:07:43.580
Und eine Möglichkeit, die du da hast,

01:07:43.580 --> 01:07:44.660
ist halt, das zu verteilen.

01:07:44.660 --> 01:07:47.380
Du sagst, okay, wir nehmen halt mehr Computer,

01:07:47.380 --> 01:07:48.660
weil du mehr CPUs brauchst.

01:07:48.660 --> 01:07:52.360
Und diese Arbeitslast

01:07:52.360 --> 01:07:54.480
oder diese Dinge, die wir berechnet haben,

01:07:54.480 --> 01:07:56.000
die waren auf jedem Computer gleich.

01:07:56.000 --> 01:08:00.260
Das heißt, das ist dann sehr einfach,

01:08:00.260 --> 01:08:02.080
in Ansible zu gehen oder in Salt

01:08:02.080 --> 01:08:04.000
oder in Terraform oder in sonst was

01:08:04.000 --> 01:08:06.740
und halt nicht nur eine Host-Adresse zu hinterlegen,

01:08:06.740 --> 01:08:07.380
sondern 100.

01:08:07.380 --> 01:08:10.080
Und dann auf diesen 100 Hosts

01:08:10.080 --> 01:08:11.280
oder 1000 IP-Adressen,

01:08:11.280 --> 01:08:12.380
1000 IP-Adressen zu hinterlegen, ja.

01:08:12.380 --> 01:08:14.960
Und zu sagen, starte bitte auf allen diesen Rechnern,

01:08:14.960 --> 01:08:17.080
in diesem Inventory, diese Workload.

01:08:17.080 --> 01:08:20.600
Da brauche ich keinen Kubernetes dafür.

01:08:20.600 --> 01:08:23.240
Ja, aber die müssen ja trotzdem irgendwie das I.O. kümmern.

01:08:23.240 --> 01:08:24.340
Also wo kommt das halt her?

01:08:24.340 --> 01:08:25.800
Ja, gut, klar, das musst du dann immer noch managen.

01:08:25.800 --> 01:08:28.080
Aber das ist dann bei allen gleich.

01:08:28.080 --> 01:08:29.760
Und das ist das, worauf ich raus möchte.

01:08:29.760 --> 01:08:32.640
Wenn du 1000 identische Dinge hast,

01:08:32.640 --> 01:08:33.840
dann reicht ein Ansible.

01:08:33.840 --> 01:08:37.020
Und das ist auch nicht mal kompliziert,

01:08:37.020 --> 01:08:38.480
weil die alle gleich konfiguriert sind.

01:08:38.480 --> 01:08:41.100
Das...

01:08:41.100 --> 01:08:43.720
Kubernetes hat einen bestimmten Anwendungsfall

01:08:43.720 --> 01:08:47.060
und der ist, du hast viele verschiedene Workloads,

01:08:47.060 --> 01:08:49.800
die aber alle Compute-ähnlich sind

01:08:49.800 --> 01:08:52.400
auf vielen verschiedenen Maschinen,

01:08:52.400 --> 01:08:54.900
die aber Compute-ähnlich sind.

01:08:54.900 --> 01:08:56.120
Das muss man noch mal genau erklären.

01:08:56.120 --> 01:08:56.860
Auf vielen verschiedenen Leuten.

01:08:56.860 --> 01:08:58.280
Also vielleicht so ein reales Beispiel.

01:08:58.280 --> 01:09:00.320
Und am besten, am besten...

01:09:00.320 --> 01:09:02.600
Also auch das, würde ich denken, geht eigentlich noch sehr gut.

01:09:02.600 --> 01:09:05.020
Es sei denn, du hast jetzt noch...

01:09:05.020 --> 01:09:08.800
Die Software läuft auf sehr unterschiedlichen Betriebssystemen,

01:09:08.800 --> 01:09:10.800
in sehr unterschiedlichen Alterungs...

01:09:11.100 --> 01:09:12.540
Ja, von vielen verschiedenen Teams.

01:09:12.540 --> 01:09:15.300
...Verwesungsstufen auf verschiedenen Teams,

01:09:15.300 --> 01:09:17.440
weil dann, sodass du halt nicht sagen kannst,

01:09:17.440 --> 01:09:19.660
ah, ich deploye das jetzt auf eine homogene Geschichte,

01:09:19.660 --> 01:09:21.700
sondern man sagen muss, das geht nur mit Docker,

01:09:21.700 --> 01:09:24.120
das geht nicht anders, weil das halt einfach zu unterschiedlich ist.

01:09:24.120 --> 01:09:26.300
Ja, aber das machen Entwickler sowieso.

01:09:26.300 --> 01:09:28.900
Ja, das machen wir nach Docker, nur du willst das nicht.

01:09:28.900 --> 01:09:30.340
Na gut.

01:09:30.340 --> 01:09:31.640
Ja, aber dann verstehe ich das.

01:09:31.640 --> 01:09:33.480
Also wenn man sagt, okay, ich mache hier auf der einen Seite

01:09:33.480 --> 01:09:36.100
irgendwie, keine Ahnung, ein Headless-QT

01:09:36.100 --> 01:09:37.500
in einer sehr alten Version,

01:09:37.500 --> 01:09:39.200
weil ich das für irgendwas sehr Spezielles brauche.

01:09:39.200 --> 01:09:41.080
Und hier habe ich jetzt irgendwie, keine Ahnung,

01:09:41.080 --> 01:09:44.680
ein aktuelles Nix-OS und da habe ich hier ein Debian

01:09:44.680 --> 01:09:46.260
und das muss ich aber alles gleich auf dem gleichen Klasse.

01:09:46.260 --> 01:09:49.100
Und Java 17 und 18 und 21 und 8 und 2.

01:09:49.100 --> 01:09:52.200
Ja, und für alte Sachen, weil da sind alle Programmierer schon gestorben,

01:09:52.200 --> 01:09:53.600
da muss ich das, muss ich aber weiter betreiben.

01:09:53.600 --> 01:09:55.140
Deine Kobo-Docker-VM.

01:09:55.140 --> 01:09:56.180
Ja, ja, okay, okay.

01:09:56.180 --> 01:09:57.400
Dann, ja.

01:09:57.400 --> 01:09:59.160
Eine AS400-Docker-VM.

01:09:59.160 --> 01:10:03.000
Ja.

01:10:03.000 --> 01:10:04.960
Ja, also das ist...

01:10:04.960 --> 01:10:06.300
Also nochmal, Anwendungsfall bitte noch einmal.

01:10:06.300 --> 01:10:07.700
Du wolltest das kurz nochmal erläutern.

01:10:07.700 --> 01:10:11.060
Also was denn da...

01:10:11.060 --> 01:10:12.120
Ganz heterogen sind.

01:10:12.120 --> 01:10:13.980
Okay, aber...

01:10:13.980 --> 01:10:15.020
Ja, also zum Beispiel Google, ja.

01:10:15.020 --> 01:10:18.180
Google betreibt 35.000 verschiedene Services

01:10:18.180 --> 01:10:20.980
auf ihren 8 Millionen Computern oder was weiß ich.

01:10:20.980 --> 01:10:22.960
Und dann ist das großartig,

01:10:22.960 --> 01:10:24.080
weil dann kannst du einfach sagen,

01:10:24.080 --> 01:10:26.000
okay, es gibt jetzt eine Mannschaft,

01:10:26.000 --> 01:10:27.680
eine große Mannschaft, die sorgt dafür,

01:10:27.680 --> 01:10:30.580
dass diese Computer laufen und ans Netzwerk angeschlossen sind

01:10:30.580 --> 01:10:33.460
und dass die in den Kubernetes-Cluster eingeordnet sind

01:10:33.460 --> 01:10:36.080
und das ist deren Spezialität.

01:10:36.080 --> 01:10:38.220
Und auf der anderen Seite hast du eine Mannschaft von Softwareentwicklern,

01:10:38.220 --> 01:10:41.040
die halt auf diesem einen großen Computer,

01:10:41.040 --> 01:10:44.580
diesen Kubernetes-Computer-Workloads starten dürfen.

01:10:44.580 --> 01:10:45.860
Also die da VMs starten dürfen.

01:10:45.860 --> 01:10:47.500
Und zwar egal, welche sie wollen, ja.

01:10:47.500 --> 01:10:51.340
Und klar, wenn du 5.000 verschiedene Teams hast,

01:10:51.340 --> 01:10:54.080
die eben diese 5.000 verschiedenen Sachen starten,

01:10:54.080 --> 01:10:55.560
dann ist das großartig.

01:10:55.560 --> 01:10:58.100
Dann willst du nicht mehr jedem einzelnen Entwickler sagen müssen,

01:10:58.100 --> 01:11:00.140
okay, du kriegst jetzt die VM und du kriegst die VM

01:11:00.140 --> 01:11:00.900
und du kriegst die VM.

01:11:00.900 --> 01:11:02.320
Sondern du willst einfach sagen...

01:11:02.320 --> 01:11:06.040
Wir machen einfach einen großen Computer-Mischmasch

01:11:06.040 --> 01:11:08.520
und einen großen Kubernetes-Cluster

01:11:08.520 --> 01:11:09.640
und hier ist dein Quota

01:11:09.640 --> 01:11:11.020
und innerhalb des Quotas darfst du machen,

01:11:11.020 --> 01:11:11.660
was du willst.

01:11:11.660 --> 01:11:12.500
Bist du verantwortlich.

01:11:12.500 --> 01:11:14.660
Das heißt, du hast einfach diese Trennung

01:11:14.660 --> 01:11:16.520
zwischen den Computern, die das betreiben

01:11:16.520 --> 01:11:18.600
und der Software, die da laufen soll.

01:11:18.600 --> 01:11:20.240
Und wo die dann läuft,

01:11:20.240 --> 01:11:21.580
das kannst du ja meistens gar nicht sagen.

01:11:21.580 --> 01:11:22.940
Du kannst meistens gar nicht sagen,

01:11:22.940 --> 01:11:26.320
ich habe jetzt hier einen Pod,

01:11:26.320 --> 01:11:27.520
also eine Docker-VM,

01:11:27.520 --> 01:11:29.280
die hier laufen soll.

01:11:29.280 --> 01:11:29.960
Du kannst vielleicht sagen,

01:11:29.960 --> 01:11:31.360
die soll in einer bestimmten Zone laufen

01:11:31.360 --> 01:11:32.340
oder in einem bestimmten Cluster

01:11:32.340 --> 01:11:33.520
oder in einem bestimmten Datacenter.

01:11:33.520 --> 01:11:35.520
Aber manchmal nicht mehr das, ja.

01:11:35.520 --> 01:11:37.480
Wenn du einen Kubernetes-Cluster hast,

01:11:37.480 --> 01:11:39.140
der über viele Datacenter verteilt ist,

01:11:39.140 --> 01:11:41.000
dann...

01:11:41.000 --> 01:11:42.020
Kannst du höchstens noch sagen,

01:11:42.020 --> 01:11:43.900
du willst, dass die möglichst weit voneinander entfernt sind

01:11:43.900 --> 01:11:45.680
oder du willst, dass sie möglichst nah aneinander dran sind.

01:11:45.680 --> 01:11:47.260
Aber wo die dann laufen...

01:11:47.260 --> 01:11:48.100
Ich hätte gern mehr...

01:11:48.100 --> 01:11:48.960
Das ist diesen Schalter,

01:11:48.960 --> 01:11:49.660
den muss doch...

01:11:49.660 --> 01:11:51.720
Ich hätte gern mehr Netzwerk-Latenz.

01:11:51.720 --> 01:11:52.480
Das ist doch immer gut.

01:11:52.480 --> 01:11:54.300
Größere Zahlen besser,

01:11:54.300 --> 01:11:57.780
mehr Netzwerk-Latenz hinter meinen Microservices.

01:11:57.780 --> 01:11:58.820
Das muss einfach...

01:11:58.820 --> 01:12:00.600
Das muss doch Spaß machen.

01:12:00.600 --> 01:12:01.020
Und ganz ehrlich,

01:12:01.020 --> 01:12:02.360
für mich als Anwendungsentwickler

01:12:02.360 --> 01:12:03.940
ist es auch völlig egal, wo das läuft.

01:12:03.940 --> 01:12:05.780
Solange das halt läuft.

01:12:05.780 --> 01:12:06.880
Ja, ja.

01:12:06.880 --> 01:12:10.060
Na, also ich weiß nicht.

01:12:10.060 --> 01:12:10.980
Ich habe halt doch...

01:12:10.980 --> 01:12:14.400
Von der Erfahrung her würde ich...

01:12:14.400 --> 01:12:17.480
Es gibt halt Infrastruktur,

01:12:17.480 --> 01:12:18.880
die gut funktioniert.

01:12:18.880 --> 01:12:20.200
Und es gibt halt Infrastruktur,

01:12:20.200 --> 01:12:21.140
die nicht gut funktioniert.

01:12:21.140 --> 01:12:22.180
Und das hat,

01:12:22.180 --> 01:12:23.940
meiner Erfahrung nach,

01:12:23.940 --> 01:12:24.980
weniger damit zu tun,

01:12:24.980 --> 01:12:26.120
ob man jetzt Kubernetes verwendet

01:12:26.120 --> 01:12:26.900
oder, keine Ahnung,

01:12:26.900 --> 01:12:28.360
irgendwas anderes,

01:12:28.360 --> 01:12:30.020
sondern eher damit,

01:12:30.020 --> 01:12:31.800
welche Leute die betreiben.

01:12:31.800 --> 01:12:33.920
Ich sage zum Beispiel...

01:12:33.920 --> 01:12:36.000
Oh Gott, das hört sich so an wie...

01:12:36.000 --> 01:12:37.180
Ihr seid alle blöd

01:12:37.180 --> 01:12:37.980
und ihr könnt es nicht.

01:12:37.980 --> 01:12:39.920
Ja, aber mit dem Alter...

01:12:39.920 --> 01:12:40.800
Also das ist halt auch sowas.

01:12:40.800 --> 01:12:40.960
Ich weiß nicht,

01:12:40.960 --> 01:12:41.960
vielleicht werde ich auch einfach alt.

01:12:41.960 --> 01:12:42.500
Das kann auch sein.

01:12:42.500 --> 01:12:42.980
Aber früher hätte ich gedacht...

01:12:42.980 --> 01:12:43.980
Oh je, du willst wissen,

01:12:43.980 --> 01:12:45.180
wo deine Programme laufen.

01:12:45.180 --> 01:12:46.600
Nee, ja.

01:12:46.600 --> 01:12:49.920
Also früher hätte ich gedacht,

01:12:49.920 --> 01:12:50.640
also Prozesse,

01:12:50.640 --> 01:12:51.900
beim Softwareentwickeln Prozesse,

01:12:51.900 --> 01:12:52.480
ganz wichtig.

01:12:52.480 --> 01:12:53.520
Und das total...

01:12:53.520 --> 01:12:54.440
Wenn man es richtig macht,

01:12:54.440 --> 01:12:55.080
dann ist das voll gut.

01:12:55.080 --> 01:12:56.660
Und wenn man es falsch macht,

01:12:56.660 --> 01:12:57.840
dann ist alles eine Katastrophe.

01:12:57.840 --> 01:13:00.980
Und irgendwie Engineering total super,

01:13:00.980 --> 01:13:03.760
wenn man da halt nur die richtigen Tools verwendet.

01:13:03.760 --> 01:13:06.560
Und dann geht alles super.

01:13:06.560 --> 01:13:08.760
Und wenn man halt das Falsche macht...

01:13:08.760 --> 01:13:10.020
Und heute denke ich mir eher so,

01:13:10.020 --> 01:13:10.840
ja gut,

01:13:10.940 --> 01:13:11.880
die Sachen, die ich gesehen habe,

01:13:11.880 --> 01:13:12.900
die wirklich gut funktioniert haben,

01:13:12.900 --> 01:13:15.080
teilweise war das Engineering sehr grottig.

01:13:15.080 --> 01:13:16.980
Möglicherweise auch deswegen,

01:13:16.980 --> 01:13:19.260
also einfach von der Zeit her geschuldet,

01:13:19.260 --> 01:13:20.200
weil man hatte nichts Besseres.

01:13:20.200 --> 01:13:21.540
Also ich, wie gesagt...

01:13:21.540 --> 01:13:22.840
Wir hatten ja damals nichts anderes.

01:13:22.840 --> 01:13:24.820
Wir hatten, also ich kann mich noch erinnern,

01:13:24.820 --> 01:13:26.320
ich sage vielleicht besser nicht bei wem,

01:13:26.320 --> 01:13:30.560
aber da lief die ganze Operations-Geschichte

01:13:30.560 --> 01:13:31.640
halt über Shell-Skripte,

01:13:31.640 --> 01:13:33.340
die von einem gemeinsam gemounteten

01:13:33.340 --> 01:13:35.400
NFS-Ding halt liefen und so.

01:13:35.400 --> 01:13:36.320
Wo man sich sagt,

01:13:36.320 --> 01:13:36.900
oh mein Gott,

01:13:36.900 --> 01:13:37.880
das ist ja alles total schrecklich.

01:13:37.880 --> 01:13:38.940
Aber das war es nicht.

01:13:38.940 --> 01:13:39.920
Es war ziemlich cool.

01:13:39.920 --> 01:13:40.920
Das hat richtig gut funktioniert.

01:13:40.920 --> 01:13:41.600
Das hat richtig gut funktioniert alles.

01:13:41.600 --> 01:13:42.360
Es hat richtig,

01:13:42.360 --> 01:13:43.460
auch mit richtig vielen...

01:13:43.460 --> 01:13:45.280
Da habe ich selber ein Proto-Kubernetes gebaut.

01:13:45.280 --> 01:13:46.560
Ja, das war kein Kubernetes.

01:13:46.560 --> 01:13:47.380
Das war irgendwie...

01:13:47.380 --> 01:13:49.280
Und die Shell-Skripte waren auch teilweise ein bisschen...

01:13:49.280 --> 01:13:50.500
Aber es war...

01:13:50.500 --> 01:13:51.560
Das hat richtig gut funktioniert.

01:13:51.560 --> 01:13:53.860
Und ich habe auch schon Kubernetes gesehen.

01:13:53.860 --> 01:13:55.140
Auch große Infrastruktur,

01:13:55.140 --> 01:13:57.040
großes Unternehmen mit groß viel...

01:13:57.040 --> 01:13:58.420
Und das war scheußlich,

01:13:58.420 --> 01:14:01.500
weil man hatte...

01:14:01.500 --> 01:14:04.000
Also dieses Versprechen wurde nicht eingelöst,

01:14:04.000 --> 01:14:05.660
dass halt man sich nicht mehr darum kümmern muss,

01:14:05.660 --> 01:14:10.660
sondern ein größerer Anteil der Zeit,

01:14:10.660 --> 01:14:10.900
als ich das gemacht habe,

01:14:10.900 --> 01:14:11.900
als ich mir oft hätte,

01:14:11.900 --> 01:14:14.640
muss ich mich damit verbringen,

01:14:14.640 --> 01:14:16.420
warum der Kram denn jetzt nicht so funktioniert,

01:14:16.420 --> 01:14:17.100
wie ich mir das denke

01:14:17.100 --> 01:14:18.560
und was denn da jetzt das Problem ist

01:14:18.560 --> 01:14:19.680
und warum ich das nicht sehen kann,

01:14:19.680 --> 01:14:20.800
was da das Problem ist,

01:14:20.800 --> 01:14:21.340
weil ich es nicht darf.

01:14:21.340 --> 01:14:22.960
Da musst du so ein bisschen ranchern oder so.

01:14:22.960 --> 01:14:23.900
Ja, genau, weil du es nicht darfst.

01:14:23.900 --> 01:14:26.060
Weil du es nicht sollst

01:14:26.060 --> 01:14:27.180
und deshalb darfst du es auch nicht.

01:14:27.180 --> 01:14:28.340
Ja, und dann versuchen wir mit den Leuten zu reden,

01:14:28.340 --> 01:14:29.100
die verantwortlich sind

01:14:29.100 --> 01:14:30.060
und dann denkt man sich so...

01:14:30.060 --> 01:14:31.820
Und Performance und Latenz sind auch so Sachen,

01:14:31.820 --> 01:14:35.900
wo du halt einfach plötzlich viel weniger Einblick reinhörst.

01:14:35.900 --> 01:14:36.780
Ja, genau.

01:14:36.780 --> 01:14:37.980
Man sieht einfach viel weniger,

01:14:37.980 --> 01:14:40.000
was ja kann ja ein Feature sein,

01:14:40.000 --> 01:14:40.880
aber...

01:14:40.880 --> 01:14:41.320
Ja, klar.

01:14:41.320 --> 01:14:43.640
In vielen großen Organisationen ist es ja ein Feature.

01:14:43.640 --> 01:14:44.880
Du willst die Leute nicht zu nah

01:14:44.880 --> 01:14:47.380
an die gefährlichen Dinge ranlassen.

01:14:47.380 --> 01:14:48.580
Also lieber schlecht betrieben,

01:14:48.580 --> 01:14:49.460
als gar nicht betrieben.

01:14:49.460 --> 01:14:51.280
Ja, aber...

01:14:51.280 --> 01:14:51.740
Operation ist Schlüssel.

01:14:51.740 --> 01:14:54.380
Also es wäre einfach so,

01:14:54.380 --> 01:14:55.000
es ist halt,

01:14:55.000 --> 01:14:56.120
wenn das Leute sind,

01:14:56.120 --> 01:14:57.160
die das betreiben,

01:14:57.160 --> 01:14:57.940
die das halt irgendwie,

01:14:57.940 --> 01:14:58.640
denen das Spaß macht,

01:14:58.640 --> 01:14:59.540
die da Interesse dran haben,

01:14:59.540 --> 01:15:01.820
die das irgendwie auch versuchen zu optimieren,

01:15:01.820 --> 01:15:04.120
die sich da reinfuchsen oder so,

01:15:04.120 --> 01:15:04.700
dann kann es sein,

01:15:04.700 --> 01:15:05.860
dass die halt auch,

01:15:05.860 --> 01:15:06.360
keine Ahnung,

01:15:06.360 --> 01:15:08.560
mit einem Stock und einem Feuerstein

01:15:08.560 --> 01:15:10.860
irgendwie den Raum warmen.

01:15:10.860 --> 01:15:11.420
Kriegen, ja?

01:15:11.420 --> 01:15:12.960
Während halt irgendwie,

01:15:12.960 --> 01:15:14.820
also keine Ahnung,

01:15:14.820 --> 01:15:15.920
dann irgendwie,

01:15:15.920 --> 01:15:17.520
weil es gibt halt Leute,

01:15:17.520 --> 01:15:18.860
die nehmen halt den Schaufelradbagger

01:15:18.860 --> 01:15:21.320
und baggern halt das falsche Dorf weg.

01:15:21.320 --> 01:15:22.500
Ja, das ist halt irgendwie so,

01:15:22.500 --> 01:15:24.180
das muss nicht unbedingt dann besser sein,

01:15:24.180 --> 01:15:25.040
wenn man ein besseres Tool hat,

01:15:25.040 --> 01:15:25.620
wenn man halt,

01:15:25.620 --> 01:15:26.740
wenn die falschen Leute das steuern.

01:15:26.740 --> 01:15:28.500
Das ist halt, ja.

01:15:28.500 --> 01:15:30.460
Das ist aber so ein bisschen eine Tautologie,

01:15:30.460 --> 01:15:30.940
oder Jochen?

01:15:30.940 --> 01:15:33.500
Also die guten Leute kriegen Dinge gut hin

01:15:33.500 --> 01:15:36.100
und die schlechten Leute kriegen Dinge schlecht hin.

01:15:36.100 --> 01:15:36.600
Ja, aber ich glaube,

01:15:36.600 --> 01:15:39.820
aus so einer 10.000 Fuß irgendwie,

01:15:39.820 --> 01:15:40.260
weiß ich nicht,

01:15:40.260 --> 01:15:40.840
Übersichtsperspektive,

01:15:40.840 --> 01:15:42.680
sieht das halt zu einfach aus.

01:15:42.680 --> 01:15:43.420
Das sieht halt so aus,

01:15:43.420 --> 01:15:44.120
wie wir machen das,

01:15:44.120 --> 01:15:45.340
was alle machen

01:15:45.340 --> 01:15:47.160
und das funktioniert dann schon.

01:15:47.160 --> 01:15:48.640
Wir haben auch viel Geld ausgegeben jetzt.

01:15:48.640 --> 01:15:48.900
Ja.

01:15:48.900 --> 01:15:50.000
Dann muss das auch gut sein.

01:15:50.000 --> 01:15:52.040
Ja, aber vielleicht funktioniert es auch nicht.

01:15:52.040 --> 01:15:53.400
Und zwar aus anderen Gründen,

01:15:53.400 --> 01:15:53.980
als man jetzt sagte.

01:15:53.980 --> 01:15:56.660
Also ich muss sagen,

01:15:56.660 --> 01:15:57.880
aus Anwendungsentwicklersicht,

01:15:57.880 --> 01:15:59.060
ich finde es sehr angenehm,

01:15:59.060 --> 01:16:00.160
weil ich einfach nur noch sagen muss,

01:16:00.160 --> 01:16:00.900
hier ist ein Docker-Image,

01:16:00.900 --> 01:16:01.920
sorgt dafür, dass das läuft.

01:16:01.920 --> 01:16:02.700
Ja.

01:16:02.700 --> 01:16:04.100
Und dann.

01:16:04.100 --> 01:16:04.800
Der Rest ist dir egal.

01:16:04.800 --> 01:16:05.940
Der Rest ist mir egal, ja.

01:16:05.940 --> 01:16:08.980
Du hast einen Passierschein unterschrieben.

01:16:08.980 --> 01:16:10.820
Irgendjemand anders ist dafür verantwortlich.

01:16:10.820 --> 01:16:11.900
Ja, aber was passiert denn,

01:16:11.900 --> 01:16:12.280
wenn das nicht,

01:16:12.280 --> 01:16:13.640
also funktioniert das dann tatsächlich auch?

01:16:13.640 --> 01:16:13.980
Also ich meine,

01:16:13.980 --> 01:16:15.660
dann wäre das ja wahrscheinlich ein Fall für,

01:16:15.660 --> 01:16:16.940
das betreiben dann halt auch Leute,

01:16:16.940 --> 01:16:18.060
die sich da irgendwie.

01:16:18.060 --> 01:16:18.960
Ja, Amazon, AWS.

01:16:18.960 --> 01:16:21.320
Ja, aber okay.

01:16:21.320 --> 01:16:22.660
Ja, die können das wahrscheinlich sogar.

01:16:22.660 --> 01:16:24.000
Azure, ja, ist genauso.

01:16:24.000 --> 01:16:26.540
Ja, da habe ich dann schon häufiger gehört,

01:16:26.540 --> 01:16:27.280
dass das vielleicht dann.

01:16:27.280 --> 01:16:28.600
Kriegt man bei Google Compute

01:16:28.600 --> 01:16:29.400
oder bei Google Cloud,

01:16:29.400 --> 01:16:31.260
kriegt man da auch Kubernetes-Kluster?

01:16:31.260 --> 01:16:31.560
Ja, ja.

01:16:31.560 --> 01:16:32.380
Kriegt man da auch Kubernetes-Kluster mit?

01:16:32.380 --> 01:16:32.660
Okay.

01:16:32.660 --> 01:16:32.960
Ja.

01:16:32.960 --> 01:16:34.660
Wäre ich mir jetzt aber nicht so sicher,

01:16:34.660 --> 01:16:35.320
ob die gut sind.

01:16:35.320 --> 01:16:36.400
Weiß ich auch nicht.

01:16:36.400 --> 01:16:37.620
Also bei Azure habe ich auch schon gehört,

01:16:37.620 --> 01:16:39.000
dass da waren Leute auch nicht so,

01:16:39.000 --> 01:16:40.100
so etwas unter.

01:16:40.100 --> 01:16:41.200
Ja, gut.

01:16:41.200 --> 01:16:43.220
Dann bezahlst du halt bei dem großen A,

01:16:43.220 --> 01:16:44.560
zahlst halt auch den Premium-Preis.

01:16:44.560 --> 01:16:47.400
Ja, das ist schon alles nicht günstig.

01:16:47.400 --> 01:16:47.900
Aber es ist halt die Frage,

01:16:47.900 --> 01:16:49.280
wenn man das eh bezahlen kann.

01:16:49.280 --> 01:16:50.760
Egal.

01:16:50.760 --> 01:16:52.060
Ja, genau.

01:16:52.060 --> 01:16:53.480
Möchtest du vielleicht noch einen Manager haben,

01:16:53.480 --> 01:16:54.720
der vielleicht nicht so technisch affin ist,

01:16:54.720 --> 01:16:56.280
der aber dann so ein Load-Binding-Scene

01:16:56.280 --> 01:16:58.120
mal kurz in einem Web-Interface hochschieben kann,

01:16:58.120 --> 01:17:00.100
weil der gerade eine Spitze am Wochenende erwartet oder so?

01:17:00.100 --> 01:17:02.160
Ja, das ist aber so ein bisschen der Trend, oder?

01:17:02.160 --> 01:17:04.260
Dass du weggehst von den eigenen Data-Centern

01:17:04.260 --> 01:17:05.040
und hin in die Cloud.

01:17:05.040 --> 01:17:06.280
Ja, das ist ja das Versprechen der Cloud,

01:17:06.280 --> 01:17:07.900
dass das jemand anders für dich besser managt.

01:17:07.900 --> 01:17:08.800
Ich.

01:17:08.980 --> 01:17:10.980
Ich unterschreibe das nicht immer so.

01:17:10.980 --> 01:17:11.860
Und ich glaube auch nicht,

01:17:11.860 --> 01:17:13.240
dass das immer eine gute Idee ist,

01:17:13.240 --> 01:17:14.060
in die Cloud zu gehen.

01:17:14.060 --> 01:17:14.820
Und ich glaube auch nicht,

01:17:14.820 --> 01:17:15.980
dass es immer billiger ist,

01:17:15.980 --> 01:17:16.600
in die Cloud zu gehen.

01:17:16.600 --> 01:17:17.380
Ganz im Gegenteil.

01:17:17.380 --> 01:17:19.040
Ja.

01:17:19.040 --> 01:17:21.040
Aber es ist der Trend gerade.

01:17:21.040 --> 01:17:23.300
Es ist der Trend weg vom eigenen Data-Center hin zu.

01:17:23.300 --> 01:17:23.920
Das Hauptproblem ist halt,

01:17:23.920 --> 01:17:26.220
wenn du eine Konzernstruktur hast

01:17:26.220 --> 01:17:28.880
mit einer sehr heterogenen Infrastruktur-Welt,

01:17:28.880 --> 01:17:31.800
dann ermöglicht dir halt dieser Weg in die Cloud

01:17:31.800 --> 01:17:35.500
eine Homogenisierung deines ganzen Geschäfts.

01:17:35.500 --> 01:17:35.860
Ja, aber für Geld.

01:17:35.860 --> 01:17:37.200
Ja, natürlich für Geld.

01:17:37.200 --> 01:17:38.460
Und danach kannst du vielleicht wieder hingehen

01:17:38.460 --> 01:17:38.960
und kannst es wieder machen.

01:17:38.960 --> 01:17:39.420
Und kannst es wieder lokal machen.

01:17:39.420 --> 01:17:42.380
Aber diese Fortentwicklung quasi,

01:17:42.380 --> 01:17:43.840
dass halt diese ganzen heterogenen Teams

01:17:43.840 --> 01:17:46.540
alle abgelöst werden müssen durch was Neues,

01:17:46.540 --> 01:17:48.660
da verlierst du natürlich Know-how.

01:17:48.660 --> 01:17:49.240
Es ist vielleicht auch.

01:17:49.240 --> 01:17:50.400
Aber du kannst halt so Prozesse,

01:17:50.400 --> 01:17:51.940
Skaleneffekte erzeugen irgendwie.

01:17:51.940 --> 01:17:53.520
Und dann vielleicht doch merken,

01:17:53.520 --> 01:17:55.780
wo du halt was nicht mehr so brauchst.

01:17:55.780 --> 01:17:56.340
Ja, ich weiß nicht.

01:17:56.340 --> 01:17:59.160
Also dieses Skaleneffekte erzeugen klingt ganz falsch.

01:17:59.160 --> 01:18:01.020
Ja, das hört sich immer gut an.

01:18:01.020 --> 01:18:01.580
Also ja, das klingt gut.

01:18:01.580 --> 01:18:03.020
Das hört sich in so Business-Präsentationen immer gut an.

01:18:03.020 --> 01:18:03.760
Aber funktioniert das wirklich?

01:18:03.760 --> 01:18:05.240
Also da habe ich so meine...

01:18:05.240 --> 01:18:05.680
Ich glaube tatsächlich,

01:18:05.680 --> 01:18:07.540
dass das so eine Cost-Center-Frage ist.

01:18:07.540 --> 01:18:08.940
Naja, aber ich glaube,

01:18:08.940 --> 01:18:11.560
du kriegst halt die Leute dazu,

01:18:11.560 --> 01:18:12.900
dass sie dann das alles Gleiche machen müssen.

01:18:12.900 --> 01:18:15.260
Du fährst halt dann vier Hunden runter,

01:18:15.260 --> 01:18:16.140
was du halt vorgemacht hast,

01:18:16.140 --> 01:18:17.920
selbst wenn es gut war, möglicherweise, ja.

01:18:17.920 --> 01:18:19.720
Aber du hast alle auf dem gleichen Stand.

01:18:19.720 --> 01:18:20.700
Also du würdest sagen,

01:18:20.700 --> 01:18:22.480
der kleinste gemeinsame Nenner ist immer noch besser,

01:18:22.480 --> 01:18:23.340
als wenn du...

01:18:23.340 --> 01:18:24.020
Nein, das würde ich nicht sagen.

01:18:24.020 --> 01:18:26.360
Das kann notwendig sein für bestimmte Dinge halt.

01:18:26.360 --> 01:18:28.300
Also auch für eine Bewegung.

01:18:28.300 --> 01:18:28.980
Weil das Problem ist ja,

01:18:28.980 --> 01:18:30.200
dass du gerade in so Konsensusstunden

01:18:30.200 --> 01:18:32.120
oft so Silos hast, die sich halt bilden,

01:18:32.120 --> 01:18:33.020
die politisch sind

01:18:33.020 --> 01:18:35.280
und die sich nicht mehr aufbrechen lassen,

01:18:35.280 --> 01:18:36.520
außer mit Gewalt.

01:18:36.520 --> 01:18:38.920
Und das ist halt eine der Methoden...

01:18:38.920 --> 01:18:42.360
Ja, soziale Probleme mit Technik lösen.

01:18:42.360 --> 01:18:45.020
Wertes Prinzip funktioniert immer super.

01:18:45.020 --> 01:18:46.840
Ganz einfach.

01:18:46.840 --> 01:18:48.660
Ja, aber du hast diese Silos halt tatsächlich aufgebrochen

01:18:48.660 --> 01:18:49.760
und du brauchst halt dann tatsächlich,

01:18:49.760 --> 01:18:51.880
musst du halt wieder von vorne anfangen.

01:18:51.880 --> 01:18:53.760
Du kannst das wieder neu bauen, ne?

01:18:53.760 --> 01:18:56.720
Ja, es kommt wahrscheinlich drauf an.

01:18:56.720 --> 01:18:58.100
Aber ich würde auch,

01:18:58.100 --> 01:18:59.060
ich würde immer dazu sagen,

01:18:59.060 --> 01:18:59.780
also klar, okay,

01:18:59.780 --> 01:19:00.960
das mag sein, dass das alles super ist

01:19:00.960 --> 01:19:01.520
und es kann sein,

01:19:01.520 --> 01:19:03.460
dass das, wenn man das an AWS oder sonst wen gibt,

01:19:03.460 --> 01:19:04.420
dass es dann besser ist,

01:19:04.420 --> 01:19:05.640
als das, was vorher da war

01:19:05.640 --> 01:19:06.760
und dass man diese...

01:19:06.760 --> 01:19:07.400
Ja, vielleicht.

01:19:07.400 --> 01:19:08.500
Kann alles sein.

01:19:08.900 --> 01:19:12.160
Vielleicht ist das dann auch super viel besser als vorher.

01:19:12.160 --> 01:19:13.280
Und wenn du so Spitzen hast,

01:19:13.280 --> 01:19:14.020
kann es ja auch sein,

01:19:14.020 --> 01:19:15.640
dass du da mehr machen kannst,

01:19:15.640 --> 01:19:16.440
als du vorher machen kannst.

01:19:16.440 --> 01:19:17.240
Ja, weil du halt einfach

01:19:17.240 --> 01:19:21.280
ungeheuer viel Kapazität jetzt kurz...

01:19:21.280 --> 01:19:23.220
Aber ich würde immer mit dazu sagen wollen,

01:19:23.220 --> 01:19:24.760
dass es halt auch so Dinge gibt,

01:19:24.760 --> 01:19:27.300
wie eben Stack Overflow zum Beispiel,

01:19:27.300 --> 01:19:28.960
die das halt in einem halben Rack machen.

01:19:28.960 --> 01:19:29.580
Ja.

01:19:29.580 --> 01:19:31.160
Und einer der Gründe,

01:19:31.160 --> 01:19:31.800
warum sie das können,

01:19:31.800 --> 01:19:32.260
ist halt,

01:19:32.260 --> 01:19:34.140
dass da jemand irgendwie

01:19:34.140 --> 01:19:35.900
ein totaler Switch-Nerd ist

01:19:35.900 --> 01:19:37.400
und sich halt mit dem Netzwerk-Kram auskennt.

01:19:37.400 --> 01:19:38.880
Und das wäre...

01:19:38.880 --> 01:19:39.920
Das kannst du nie...

01:19:39.920 --> 01:19:42.360
Dieses System kannst du in keine Cloud deployen,

01:19:42.360 --> 01:19:44.500
weil die hat halt die Hardware nicht.

01:19:44.500 --> 01:19:46.520
Und die haben auch nicht die Kenntnisse

01:19:46.520 --> 01:19:48.440
über das, was man da...

01:19:48.440 --> 01:19:48.780
Die können das nicht.

01:19:48.780 --> 01:19:49.340
Willst du damit sagen,

01:19:49.340 --> 01:19:50.020
die können das nicht?

01:19:50.020 --> 01:19:50.780
Ja, bei bestimmten Sachen,

01:19:50.780 --> 01:19:52.000
die man da so in den Spannungsnäht,

01:19:52.000 --> 01:19:53.000
wenn die irgendwie so ein Redis

01:19:53.000 --> 01:19:54.220
irgendwie im Nisch dahin hängen,

01:19:54.220 --> 01:19:55.400
dann müssen die manuell hingehen

01:19:55.400 --> 01:19:56.740
und dann musst du eine halbe Stunde warten,

01:19:56.740 --> 01:19:57.800
weil irgendjemand da runter rennt

01:19:57.800 --> 01:19:59.020
und das Rack reinschiebt oder so, ja.

01:19:59.020 --> 01:20:01.120
Ja, das ist dann vielleicht noch viel schlechter.

01:20:01.120 --> 01:20:02.240
Ja, man muss ja planen vorher.

01:20:02.240 --> 01:20:03.400
Ich glaube auch,

01:20:03.400 --> 01:20:04.700
Stack Overflow ist inzwischen tatsächlich

01:20:04.700 --> 01:20:07.340
irgendwie irgendwo hin in eine Cloud umgezogen.

01:20:07.760 --> 01:20:08.800
Insofern kann ich das auch vielleicht

01:20:08.800 --> 01:20:10.540
nicht mehr als Beispiel...

01:20:10.540 --> 01:20:11.760
Nicht mehr das beste Beispiel.

01:20:11.760 --> 01:20:12.820
Aber sagen wir so,

01:20:12.820 --> 01:20:14.260
für viele, die halt unterhalb

01:20:14.260 --> 01:20:16.100
der Google-Größe sind

01:20:16.100 --> 01:20:16.760
oder, weiß ich nicht,

01:20:16.760 --> 01:20:18.500
konzernpolitische Probleme haben.

01:20:18.500 --> 01:20:19.360
Gibt es so kleine?

01:20:19.360 --> 01:20:20.140
Könnte sein,

01:20:20.140 --> 01:20:21.640
dass manchmal vielleicht der eine oder andere

01:20:21.640 --> 01:20:22.600
hat schon mal sowas gesehen.

01:20:22.600 --> 01:20:24.160
Was mich ja auch noch interessiert,

01:20:24.160 --> 01:20:24.640
also ich meine,

01:20:24.640 --> 01:20:25.260
hey, dann haben wir jetzt

01:20:25.260 --> 01:20:26.400
so ein Managed Criminalist Cluster

01:20:26.400 --> 01:20:26.840
irgendwie gemietet,

01:20:26.840 --> 01:20:28.260
aber wie kriege ich denn vom Entwickler

01:20:28.260 --> 01:20:29.180
den Pod dahin?

01:20:29.180 --> 01:20:32.880
Ja, da gibt es verschiedene Möglichkeiten.

01:20:32.880 --> 01:20:33.620
Ah ja, Moment,

01:20:33.620 --> 01:20:34.440
aber jetzt sind wir ja irgendwie

01:20:34.440 --> 01:20:35.320
wieder bei so einem anderen Thema.

01:20:35.320 --> 01:20:35.960
Das müssen wir irgendwie

01:20:35.960 --> 01:20:37.000
so eine Kette haben,

01:20:37.000 --> 01:20:37.500
so eine CI,

01:20:37.660 --> 01:20:38.460
die das dann baut

01:20:38.460 --> 01:20:39.500
oder das dahin deployt

01:20:39.500 --> 01:20:40.760
oder auf dem Branch.

01:20:40.760 --> 01:20:40.880
Nee, da gibt es wieder

01:20:40.880 --> 01:20:41.660
verschiedene Möglichkeiten.

01:20:41.660 --> 01:20:42.220
Also ich meine,

01:20:42.220 --> 01:20:42.820
du kannst es natürlich

01:20:42.820 --> 01:20:44.060
prinzipiell manuell machen.

01:20:44.060 --> 01:20:44.720
Yay.

01:20:44.720 --> 01:20:46.320
Großartig.

01:20:46.320 --> 01:20:48.460
Ist auch genau der Verwendungszweck.

01:20:48.460 --> 01:20:49.480
Ja, genau.

01:20:49.480 --> 01:20:50.420
Von so einem völlig

01:20:50.420 --> 01:20:50.600
automatisierten System.

01:20:50.600 --> 01:20:51.440
Ey, einmal bitte hier

01:20:51.440 --> 01:20:52.200
diesen Pod bitte neu.

01:20:52.200 --> 01:20:52.920
Dann musst du halt einmal starten.

01:20:52.920 --> 01:20:54.340
Oder du hast ein CI-System,

01:20:54.340 --> 01:20:55.640
ja, was das dann halt irgendwie

01:20:55.640 --> 01:20:55.960
einen Push.

01:20:55.960 --> 01:20:57.760
Oder du hast ein Jenkins-System

01:20:57.760 --> 01:20:59.100
oder du hast ein was-weiß-ich-System.

01:20:59.100 --> 01:21:00.460
Wo kriegt man dieses CI-System her?

01:21:00.460 --> 01:21:02.460
Das kannst du auch mieten.

01:21:02.460 --> 01:21:03.120
Ja, ach so.

01:21:03.120 --> 01:21:05.600
Automatisch.

01:21:05.600 --> 01:21:06.220
Du betreibst es

01:21:06.220 --> 01:21:07.880
auf deinem Kubernetes-Cluster.

01:21:07.880 --> 01:21:08.260
Aha.

01:21:08.260 --> 01:21:09.860
Ach so, das ist ein Drone.

01:21:09.860 --> 01:21:10.760
Habe ich tatsächlich gesehen.

01:21:10.760 --> 01:21:11.400
Also ich meine,

01:21:11.400 --> 01:21:14.040
dass du Jenkins

01:21:14.040 --> 01:21:16.100
auf einem Kubernetes-Cluster startest.

01:21:16.100 --> 01:21:17.800
Oder ein Drone-CI oder sowas?

01:21:17.800 --> 01:21:19.540
Ja, oder irgendein CI.

01:21:19.540 --> 01:21:20.340
Ja, da gibt es halt tausende.

01:21:20.340 --> 01:21:20.920
Egal, genau.

01:21:20.920 --> 01:21:21.520
Da gibt es ganz viele.

01:21:21.520 --> 01:21:23.680
Also das ist dann,

01:21:23.680 --> 01:21:24.740
also nochmal,

01:21:24.740 --> 01:21:25.440
ein CI ist noch wie

01:21:25.440 --> 01:21:25.980
so ein anderer Server,

01:21:25.980 --> 01:21:26.500
auf dem eigentlich

01:21:26.500 --> 01:21:27.060
nichts anderes passiert.

01:21:27.060 --> 01:21:27.680
Also irgendwie sind so

01:21:27.680 --> 01:21:29.000
Diplom-Skript-Ablaufen oder?

01:21:29.000 --> 01:21:30.560
Ja, das kommt drauf an.

01:21:30.560 --> 01:21:30.940
Also ich meine,

01:21:30.940 --> 01:21:32.280
kann man auf verschiedene Arten

01:21:32.280 --> 01:21:32.920
und Weisen verwenden.

01:21:32.920 --> 01:21:34.040
Das Erste, was du machst,

01:21:34.040 --> 01:21:35.360
ist ja Continuous Integration.

01:21:35.360 --> 01:21:36.200
Ja.

01:21:36.200 --> 01:21:36.200
Ja.

01:21:36.220 --> 01:21:36.700
Das heißt,

01:21:36.700 --> 01:21:37.740
da hast du auf jeden Fall

01:21:37.740 --> 01:21:38.740
deine Tests laufen

01:21:38.740 --> 01:21:40.220
und deine Checks.

01:21:40.220 --> 01:21:42.100
Und dann musst du eigentlich

01:21:42.100 --> 01:21:42.660
noch irgendwie.

01:21:42.660 --> 01:21:45.280
Also die Integration heißt ja nur,

01:21:45.280 --> 01:21:45.960
dass du immer

01:21:45.960 --> 01:21:48.300
eine getestete Version hast.

01:21:48.300 --> 01:21:50.440
Und der nächste Schritt

01:21:50.440 --> 01:21:51.680
ist dann Continuous Deployment.

01:21:51.680 --> 01:21:52.680
Delivery, oder?

01:21:52.680 --> 01:21:54.300
Delivery oder Deployment.

01:21:54.300 --> 01:21:54.780
Ich meine Delivery.

01:21:54.780 --> 01:21:55.660
Irgendwas mit D halt.

01:21:55.660 --> 01:21:58.540
CD, C-I-C-D.

01:21:58.540 --> 01:21:59.980
Dass du eben diese

01:21:59.980 --> 01:22:00.940
Continuous Delivery

01:22:00.940 --> 01:22:01.840
oder Deployment machst.

01:22:01.840 --> 01:22:04.200
Wo du halt sagst,

01:22:04.200 --> 01:22:04.700
gut, jedes Mal,

01:22:04.700 --> 01:22:05.740
wenn eine fertig gebaut ist

01:22:05.740 --> 01:22:06.200
und korrekt,

01:22:06.200 --> 01:22:06.660
korrekt getestet,

01:22:06.660 --> 01:22:07.280
dann kannst du ja auch

01:22:07.280 --> 01:22:08.220
gleich ausrollen.

01:22:08.220 --> 01:22:09.680
Aber ich frage jetzt halt,

01:22:09.680 --> 01:22:10.340
wer sagt denn genau,

01:22:10.340 --> 01:22:11.440
korrekt getestet?

01:22:11.440 --> 01:22:12.920
Sind das nur die automatischen Tests,

01:22:12.920 --> 01:22:13.560
die durchlaufen müssen

01:22:13.560 --> 01:22:14.280
oder muss noch irgendwie

01:22:14.280 --> 01:22:14.920
mal das abnehmen?

01:22:14.920 --> 01:22:15.740
Ja gut, es kommt drauf an.

01:22:15.740 --> 01:22:18.000
Kommt drauf an.

01:22:18.000 --> 01:22:18.620
Aber muss noch jemand

01:22:18.620 --> 01:22:19.520
auf den grünen Knopf drücken

01:22:19.520 --> 01:22:19.960
oder nicht?

01:22:19.960 --> 01:22:21.560
Okay, aber das ist genau der Punkt,

01:22:21.560 --> 01:22:22.820
da muss halt so verschiedene Systeme

01:22:22.820 --> 01:22:23.460
dann gebaut werden.

01:22:23.460 --> 01:22:23.940
Das muss ja dann

01:22:23.940 --> 01:22:24.840
irgendwer dann wieder übernehmen

01:22:24.840 --> 01:22:25.960
und das muss halt dann eigentlich,

01:22:25.960 --> 01:22:28.020
wie das halt gestartet wird.

01:22:28.020 --> 01:22:28.680
Also ich würde sagen,

01:22:28.680 --> 01:22:29.260
ideal wäre es,

01:22:29.260 --> 01:22:30.200
du hast einen Production Branch

01:22:30.200 --> 01:22:31.180
irgendwie und du pushst dann irgendwie

01:22:31.180 --> 01:22:31.940
und dann gibt es eine Action

01:22:31.940 --> 01:22:32.600
auf deinem GitHub

01:22:32.600 --> 01:22:33.420
oder auf deinem GitLab,

01:22:33.420 --> 01:22:34.700
die dann das Ding anspricht.

01:22:34.700 --> 01:22:35.340
Ja, das ist ja schon

01:22:35.340 --> 01:22:36.480
sehr spezifisch.

01:22:36.480 --> 01:22:37.480
Das ist viel zu spezifisch

01:22:37.480 --> 01:22:39.740
für deine Umgebung.

01:22:39.740 --> 01:22:41.400
Da gibt es viele,

01:22:41.400 --> 01:22:41.980
da kann ich mir viele

01:22:41.980 --> 01:22:43.180
verschiedene Umgebungen vorstellen,

01:22:43.180 --> 01:22:44.160
wo das sowas nicht geht.

01:22:44.160 --> 01:22:45.180
Oder wo du es auch

01:22:45.180 --> 01:22:45.880
nicht machen darfst

01:22:45.880 --> 01:22:46.400
oder wo du es auch

01:22:46.400 --> 01:22:47.880
nicht machen kannst.

01:22:47.880 --> 01:22:49.200
Oh, wie machen wir das denn dann?

01:22:49.200 --> 01:22:51.320
Ja, mit anderen Prozessen.

01:22:51.320 --> 01:22:52.260
Ja, aber davon hat doch

01:22:52.260 --> 01:22:53.820
vorhin geschrieben drüber,

01:22:53.820 --> 01:22:55.040
dass du Prozesse haben musst

01:22:55.040 --> 01:22:55.660
und dass das dann,

01:22:55.660 --> 01:22:56.280
wenn du genügend Prozesse hast.

01:22:56.280 --> 01:22:57.140
Ja, aber das ist ja genau der Punkt,

01:22:57.140 --> 01:22:57.780
da muss er sich irgendwie

01:22:57.780 --> 01:22:58.120
dann umkümmern,

01:22:58.120 --> 01:22:58.840
da muss er ja dann was machen,

01:22:58.840 --> 01:22:59.220
da brauchst du ja wieder

01:23:02.600 --> 01:23:04.880
Also, sag mal so,

01:23:04.880 --> 01:23:05.540
das kann auch

01:23:05.540 --> 01:23:07.060
ein Entwicklungsteam machen.

01:23:07.060 --> 01:23:08.480
So ist es ja nicht.

01:23:08.480 --> 01:23:09.200
Ja, aber du brauchst halt

01:23:09.200 --> 01:23:09.600
ein Team, genau.

01:23:09.600 --> 01:23:10.200
Und du brauchst halt jemanden,

01:23:10.200 --> 01:23:10.620
der sich damit auskennt.

01:23:10.620 --> 01:23:11.420
Auf jeden Fall muss das

01:23:11.420 --> 01:23:12.100
ein Entwicklungsteam sein.

01:23:12.100 --> 01:23:13.100
Wenn das aber jemand

01:23:13.100 --> 01:23:13.880
sich damit nicht auskennt,

01:23:13.880 --> 01:23:14.760
dieser ganze Quatsch

01:23:14.760 --> 01:23:15.840
irgendwie gar nicht da ist,

01:23:15.840 --> 01:23:17.580
wie, ja, dann hast du

01:23:17.580 --> 01:23:18.000
das Problem.

01:23:18.000 --> 01:23:19.620
Ja, gut, also wie gesagt,

01:23:19.620 --> 01:23:20.840
alleine möchte ich das

01:23:20.840 --> 01:23:21.540
nicht betreiben müssen

01:23:21.540 --> 01:23:22.360
und alleine möchte ich es

01:23:22.360 --> 01:23:23.240
mir auch nicht ausdenken müssen.

01:23:23.240 --> 01:23:25.180
Aber als Entwickler

01:23:25.180 --> 01:23:26.460
in einem großen Konzern

01:23:26.460 --> 01:23:27.820
ist das doch bequem,

01:23:27.820 --> 01:23:29.160
weil da gibt es ja die Leute

01:23:29.160 --> 01:23:29.680
schon, die das machen.

01:23:29.680 --> 01:23:30.240
Ach, da gibt es die schon?

01:23:30.240 --> 01:23:30.820
Ja, klar.

01:23:31.000 --> 01:23:31.560
Oh ja, wirklich?

01:23:31.560 --> 01:23:34.080
Außer du bist in der Abteilung,

01:23:34.080 --> 01:23:35.280
die das macht.

01:23:35.280 --> 01:23:36.280
Dann kannst du noch nicht.

01:23:36.280 --> 01:23:36.680
Ja, DevOps.

01:23:36.680 --> 01:23:37.720
Aber dann ist es besser auch,

01:23:37.720 --> 01:23:38.280
irgendwas, was du kannst.

01:23:38.280 --> 01:23:38.880
Irgendwer kann bestimmt

01:23:38.880 --> 01:23:39.640
DevOps oder so.

01:23:39.640 --> 01:23:40.840
Nee, das ist ja tatsächlich

01:23:40.840 --> 01:23:41.460
mehr Ops.

01:23:41.460 --> 01:23:42.620
Das ist ja nicht DevOps.

01:23:42.620 --> 01:23:43.600
Nicht DevOps, nur Ops.

01:23:43.600 --> 01:23:45.140
Das ist ja nur Ops, genau.

01:23:45.140 --> 01:23:45.960
Du sorgst ja nur dafür,

01:23:45.960 --> 01:23:47.040
dass der Cluster da ist

01:23:47.040 --> 01:23:48.940
und auch funktioniert.

01:23:48.940 --> 01:23:50.680
Die DevOps-Schicht

01:23:50.680 --> 01:23:50.980
ist ja eine oben drüber.

01:23:50.980 --> 01:23:52.080
Ja, aber das CICD

01:23:52.080 --> 01:23:53.580
ist DevOps, oder?

01:23:53.580 --> 01:23:54.720
Ja, genau.

01:23:54.720 --> 01:23:55.260
Aber das ist ja

01:23:55.260 --> 01:23:56.160
in den Anwendungsteams,

01:23:56.160 --> 01:23:57.440
weil die entscheiden müssen,

01:23:57.440 --> 01:23:58.120
was zu ihnen passt.

01:23:58.120 --> 01:23:58.860
Aber wenn du jetzt

01:23:58.860 --> 01:23:59.540
nur Devs hast,

01:23:59.540 --> 01:24:01.320
die kein Ops können,

01:24:01.320 --> 01:24:02.000
dann ...

01:24:02.000 --> 01:24:02.240
Ja, gut.

01:24:02.240 --> 01:24:03.300
Aber das musst du

01:24:03.300 --> 01:24:04.720
auf der Scale,

01:24:04.720 --> 01:24:06.200
wo du so einen Cluster einsetzt,

01:24:06.200 --> 01:24:07.040
musst du davon ausgehen,

01:24:07.040 --> 01:24:08.120
dass du dann halt auch

01:24:08.120 --> 01:24:08.860
das machen musst.

01:24:08.860 --> 01:24:09.300
Ja, genau.

01:24:09.300 --> 01:24:10.120
Aber das ist genau der Punkt.

01:24:10.120 --> 01:24:10.360
Ich glaube,

01:24:10.360 --> 01:24:11.240
das ist bei vielen so.

01:24:11.240 --> 01:24:11.720
Die denken halt,

01:24:11.720 --> 01:24:12.400
hey, ich kaufe mir jetzt

01:24:12.400 --> 01:24:13.600
so einen Managed Kubernetes Cluster

01:24:13.600 --> 01:24:13.960
und dann habe ich ...

01:24:13.960 --> 01:24:14.440
Ja, muss ich gar nichts mehr machen.

01:24:14.440 --> 01:24:15.060
Genau.

01:24:15.060 --> 01:24:16.080
Und dann die Arbeit,

01:24:16.080 --> 01:24:16.900
das passt schon irgendwie.

01:24:16.900 --> 01:24:18.860
Und die vergessen diesen ...

01:24:18.860 --> 01:24:19.560
Ja, gut.

01:24:19.560 --> 01:24:22.900
Das kann auch gut

01:24:22.900 --> 01:24:23.520
und schlecht sein, ja.

01:24:23.520 --> 01:24:25.520
Also das,

01:24:25.520 --> 01:24:27.300
was ich vorhin meinte

01:24:27.300 --> 01:24:28.520
mit dieser Cost-Center-Mentalität,

01:24:29.240 --> 01:24:29.980
dass du halt sagst,

01:24:29.980 --> 01:24:30.740
okay, früher haben wir

01:24:30.740 --> 01:24:31.660
ein Data-Center betrieben

01:24:31.660 --> 01:24:32.840
und es war so teuer

01:24:32.840 --> 01:24:35.100
und heute betreiben wir Cloud

01:24:35.100 --> 01:24:36.180
und dann ist das verteilt

01:24:36.180 --> 01:24:36.720
auf die Teams

01:24:36.720 --> 01:24:37.740
und jedes hat seinen Quota

01:24:37.740 --> 01:24:38.580
und dann muss jedes Team

01:24:38.580 --> 01:24:39.320
die Kosten tragen

01:24:39.320 --> 01:24:40.380
und ist selber verantwortlich.

01:24:40.380 --> 01:24:41.600
Und die Kosten sind aber

01:24:41.600 --> 01:24:42.000
immer noch da

01:24:42.000 --> 01:24:42.580
und die sind höher.

01:24:42.580 --> 01:24:43.680
Nur hast du sie jetzt

01:24:43.680 --> 01:24:44.360
anders verteilt,

01:24:44.360 --> 01:24:45.240
sodass du sie nicht mehr

01:24:45.240 --> 01:24:46.280
in einer Spalte siehst,

01:24:46.280 --> 01:24:47.280
sondern halt im Team

01:24:47.280 --> 01:24:48.440
auf die Teams

01:24:48.440 --> 01:24:49.320
oder auf die Anwendung

01:24:49.320 --> 01:24:50.060
oder wie auch immer du es spielst.

01:24:50.060 --> 01:24:50.480
Ja, aber dann hast du

01:24:50.480 --> 01:24:50.960
im Controlling

01:24:50.960 --> 01:24:52.200
die Aggregationsspalte vergessen.

01:24:52.200 --> 01:24:52.880
Ja, genau.

01:24:52.880 --> 01:24:54.400
Beziehungsweise die ist halt

01:24:54.400 --> 01:24:55.120
jetzt woanders.

01:24:55.120 --> 01:24:56.380
Die ist nicht mehr

01:24:56.380 --> 01:24:57.700
im Data-Center-Kosten-Center,

01:24:57.700 --> 01:24:59.260
sondern im Development-Center.

01:24:59.260 --> 01:25:00.960
Das ist halt da möglicherweise

01:25:00.960 --> 01:25:03.860
eine ganz andere Seite

01:25:03.860 --> 01:25:04.580
der Bilanz halt.

01:25:04.580 --> 01:25:06.080
Ja, aber das ist ja eigentlich

01:25:06.080 --> 01:25:07.240
vom Controlling ja eher so Fail,

01:25:07.240 --> 01:25:08.080
weil eigentlich müssen ja auch

01:25:08.080 --> 01:25:08.740
Tickets und das hier

01:25:08.740 --> 01:25:09.400
irgendwie erlöst werden.

01:25:09.400 --> 01:25:11.160
Ja, aber das ist real.

01:25:11.160 --> 01:25:12.480
Ja, ja, ich glaube auch,

01:25:12.480 --> 01:25:13.540
solche Fails haben

01:25:13.540 --> 01:25:14.360
reale Konsequenzen.

01:25:14.360 --> 01:25:15.140
Also ob du das jetzt,

01:25:15.140 --> 01:25:16.280
also genau,

01:25:16.280 --> 01:25:16.940
es kann sein,

01:25:16.940 --> 01:25:17.740
dass auf der einen Seite

01:25:17.740 --> 01:25:17.980
Am Ende des Tages

01:25:17.980 --> 01:25:19.360
bezahlst du es ja auch immer noch.

01:25:19.360 --> 01:25:21.160
Du zahlst halt irgendwie

01:25:21.160 --> 01:25:22.580
einen guten Teil

01:25:22.580 --> 01:25:23.380
deines Umsatzes

01:25:23.380 --> 01:25:23.800
an Amazon

01:25:23.800 --> 01:25:25.080
oder an Microsoft

01:25:25.080 --> 01:25:25.520
oder so

01:25:25.520 --> 01:25:26.360
und du zahlst halt

01:25:26.360 --> 01:25:26.360
und du zahlst halt

01:25:26.360 --> 01:25:27.300
und das wird verbucht

01:25:27.300 --> 01:25:28.380
als Investition,

01:25:28.380 --> 01:25:28.840
die halt,

01:25:28.840 --> 01:25:30.820
wo irgendwie Geld zurückkommt,

01:25:30.820 --> 01:25:31.400
was falsch ist.

01:25:31.400 --> 01:25:31.960
Ist ja auch so.

01:25:31.960 --> 01:25:34.460
Also vielleicht, ja.

01:25:34.460 --> 01:25:35.240
Beziehungsweise du könntest

01:25:35.240 --> 01:25:36.640
dir weniger investieren

01:25:36.640 --> 01:25:37.860
und könntest trotzdem

01:25:37.860 --> 01:25:38.500
genauso viel umsetzen.

01:25:38.500 --> 01:25:39.100
Und auf der anderen Seite

01:25:39.100 --> 01:25:39.880
sieht das so aus wie,

01:25:39.880 --> 01:25:41.060
oh, das ist halt,

01:25:41.060 --> 01:25:42.140
das sind halt bloß Kosten,

01:25:42.140 --> 01:25:43.740
die da rausgehen und

01:25:43.740 --> 01:25:44.900
Da brauchst du Leute,

01:25:44.900 --> 01:25:45.600
die da hingehen

01:25:45.600 --> 01:25:46.320
und ein Gebäude,

01:25:46.320 --> 01:25:47.880
das ist ja sowieso tote Kosten

01:25:47.880 --> 01:25:49.580
und dann brauchst du Hardware

01:25:49.580 --> 01:25:50.440
und was machst du mit der

01:25:50.440 --> 01:25:51.180
nach zwei Jahren,

01:25:51.180 --> 01:25:51.820
wenn du die nicht mehr

01:25:51.820 --> 01:25:52.400
verkaufen kannst?

01:25:52.400 --> 01:25:53.540
Strom und Kühlung

01:25:53.540 --> 01:25:54.540
und diese ganzen Kosten,

01:25:54.540 --> 01:25:54.900
die der da hat.

01:25:54.900 --> 01:25:55.840
Du musst halt irgendwie

01:25:55.840 --> 01:25:56.340
einen Teil

01:25:56.340 --> 01:25:57.360
Das ist doch der klassische

01:25:57.360 --> 01:25:59.060
Kauf versus Mieten.

01:25:59.060 --> 01:25:59.620
Ja, genau,

01:25:59.620 --> 01:26:00.500
aber wo findest du genau

01:26:00.500 --> 01:26:00.960
das intern?

01:26:00.960 --> 01:26:01.760
Also du bist jetzt mal

01:26:01.760 --> 01:26:02.260
ein Konzern, ne?

01:26:02.260 --> 01:26:02.960
Du hast jetzt von Tech

01:26:02.960 --> 01:26:03.520
keine Ahnung.

01:26:03.520 --> 01:26:04.340
Die verkaufen ihr Zeugs

01:26:04.340 --> 01:26:05.040
und mieten es zurück

01:26:05.040 --> 01:26:06.060
zu einem teureren Preis.

01:26:06.060 --> 01:26:07.260
Ja, aber du hast

01:26:07.260 --> 01:26:08.080
von Tech keine Ahnung.

01:26:08.080 --> 01:26:09.700
Du machst halt irgendwas

01:26:09.700 --> 01:26:10.840
anderes und dann musst du

01:26:10.840 --> 01:26:11.680
eigentlich so ein,

01:26:11.680 --> 01:26:12.280
brauchst du irgendwas

01:26:12.280 --> 01:26:12.680
mit Cloud.

01:26:12.680 --> 01:26:13.400
Dann hast du überlegt,

01:26:13.400 --> 01:26:13.840
okay, du musst jetzt

01:26:13.840 --> 01:26:14.420
irgendwie Anwendung,

01:26:14.420 --> 01:26:15.180
wir sind jetzt irgendwie

01:26:15.180 --> 01:26:16.040
so ein globaler Konzern.

01:26:16.040 --> 01:26:16.580
Ja, ja, genau.

01:26:16.580 --> 01:26:17.200
Irgendwas mit Cloud.

01:26:17.200 --> 01:26:18.100
Das ist ja Buzzword,

01:26:18.100 --> 01:26:19.520
Cloud, KI und so,

01:26:19.520 --> 01:26:20.000
dies, das.

01:26:20.000 --> 01:26:21.700
Und dann sagst du,

01:26:21.740 --> 01:26:22.360
ja, okay, dann müssen

01:26:22.360 --> 01:26:22.940
jetzt aber schon alle

01:26:22.940 --> 01:26:23.700
so modern sein

01:26:23.700 --> 01:26:24.840
und ein bisschen Cloud machen

01:26:24.840 --> 01:26:25.600
und wenn wir jetzt

01:26:25.600 --> 01:26:26.340
aber unser eigenes

01:26:26.340 --> 01:26:27.600
Datacenter irgendwie betreiben,

01:26:27.600 --> 01:26:28.280
das müssen wir dann

01:26:28.280 --> 01:26:29.440
irgendwie offshoren

01:26:29.440 --> 01:26:30.720
und das funktioniert

01:26:30.720 --> 01:26:31.540
aber auch nicht so richtig,

01:26:31.540 --> 01:26:32.540
weil da die guten Leute

01:26:32.540 --> 01:26:33.080
irgendwie dann doch

01:26:33.080 --> 01:26:33.700
irgendwie nur ja

01:26:33.700 --> 01:26:35.420
und dann baust du dann

01:26:35.420 --> 01:26:36.060
irgendwie so ein Datacenter

01:26:36.060 --> 01:26:36.620
und merkst dann irgendwie so,

01:26:36.620 --> 01:26:37.320
ja, wenn wir jetzt

01:26:37.320 --> 01:26:37.820
irgendwie in Deutschland

01:26:37.820 --> 01:26:38.680
irgendwie sowas bauen,

01:26:38.680 --> 01:26:40.160
was ja irgendwie total gut ist,

01:26:40.160 --> 01:26:40.940
ist aber schon teuer

01:26:40.940 --> 01:26:44.320
und das festigt sich dann

01:26:44.320 --> 01:26:44.660
da alles

01:26:44.660 --> 01:26:45.120
und könnt ihr jetzt

01:26:45.120 --> 01:26:46.040
globaler es betreiben

01:26:46.040 --> 01:26:46.480
und die kennen ja

01:26:46.480 --> 01:26:47.100
die ganzen Sachen nicht

01:26:47.100 --> 01:26:48.060
und wie bieten die das

01:26:48.060 --> 01:26:48.760
jetzt für Services

01:26:48.760 --> 01:26:49.860
in Brasilien an und so

01:26:49.860 --> 01:26:51.200
und dann könnt ihr ja

01:26:51.200 --> 01:26:51.580
gar nicht mit denen

01:26:51.740 --> 01:26:52.840
und gar nicht kommunizieren

01:26:52.840 --> 01:26:53.700
und warum machen wir das

01:26:53.700 --> 01:26:54.480
dann nicht alles in der Cloud

01:26:54.480 --> 01:26:55.280
und das ist ja total einfach,

01:26:55.280 --> 01:26:55.880
einfaches Interface

01:26:55.880 --> 01:26:56.700
für alle gleich

01:26:56.700 --> 01:26:57.680
und benutzen das dann einfach

01:26:57.680 --> 01:26:59.080
und dann haben wir

01:26:59.080 --> 01:26:59.900
dieses Controlling-Problem,

01:26:59.900 --> 01:27:02.380
dann, ja, brauchst du halt

01:27:02.380 --> 01:27:03.300
diese ganzen Sachen nicht mehr,

01:27:03.300 --> 01:27:04.320
aber das ist ja tatsächlich,

01:27:04.320 --> 01:27:04.860
du musst das nicht

01:27:04.860 --> 01:27:06.020
selber vorhalten die ganze Zeit,

01:27:06.020 --> 01:27:06.760
du brauchst nicht

01:27:06.760 --> 01:27:07.800
das ganze Team vor Ort

01:27:07.800 --> 01:27:08.440
an der gleichen Stelle,

01:27:08.440 --> 01:27:09.700
das diese ganzen Sachen managt

01:27:09.700 --> 01:27:10.440
und irgendwelche Schnittstellen

01:27:10.440 --> 01:27:11.140
nach außen anbietet, oder?

01:27:11.140 --> 01:27:12.460
Ja, das ist operativ

01:27:12.460 --> 01:27:13.600
sicherlich wesentlich einfacher

01:27:13.600 --> 01:27:15.380
von Amazon Services zu mieten,

01:27:15.380 --> 01:27:16.260
anstatt ein eigenes

01:27:16.260 --> 01:27:17.140
Datacenter zu betreiben,

01:27:17.140 --> 01:27:18.980
nur ab einer gewissen Größe,

01:27:18.980 --> 01:27:20.300
ich meine, es gibt ja auch

01:27:20.300 --> 01:27:21.060
Schritte dazwischen,

01:27:21.060 --> 01:27:22.060
es gibt ja auch Co-Location

01:27:22.060 --> 01:27:23.120
und es gibt ja auch so

01:27:23.120 --> 01:27:24.760
Meet-Racks und so weiter,

01:27:24.760 --> 01:27:26.240
aber ab einer gewissen Größe

01:27:26.240 --> 01:27:26.840
lohnt es sich halt

01:27:26.840 --> 01:27:28.520
und ich, und ganz ehrlich,

01:27:28.520 --> 01:27:29.580
ich sehe die Vorteile

01:27:29.580 --> 01:27:30.500
von vielen von diesen

01:27:30.500 --> 01:27:31.240
Cloud-Diensten nicht,

01:27:31.240 --> 01:27:31.920
die sind sehr teuer

01:27:31.920 --> 01:27:33.040
und die haben viele

01:27:33.040 --> 01:27:34.040
so fiktive Vorteile,

01:27:34.040 --> 01:27:34.660
ja, aber du kannst

01:27:34.660 --> 01:27:35.900
die hochskalieren so viel wie du willst,

01:27:35.900 --> 01:27:37.360
ja, gut, okay,

01:27:37.360 --> 01:27:39.940
aber ich habe 12 Visitor im Monat

01:27:39.940 --> 01:27:41.260
und ich muss niemals

01:27:41.260 --> 01:27:42.020
etwas hochskalieren,

01:27:42.020 --> 01:27:42.580
ich würde es gerne,

01:27:42.580 --> 01:27:43.340
dann machst du Serverless,

01:27:43.340 --> 01:27:44.140
noch weiter,

01:27:44.140 --> 01:27:45.260
ja, genau, mache ich Serverless,

01:27:45.260 --> 01:27:46.800
das kann ich,

01:27:46.800 --> 01:27:48.620
die für die gleiche,

01:27:48.620 --> 01:27:49.740
die gleiche Latenz

01:27:49.740 --> 01:27:50.180
wie vorher,

01:27:50.300 --> 01:27:51.260
nur für einen höheren Preis,

01:27:51.260 --> 01:27:51.640
voll gut.

01:27:51.640 --> 01:27:53.400
Ja, aber da musst du

01:27:53.400 --> 01:27:54.100
jetzt nicht die ganze Zeit an sein,

01:27:54.100 --> 01:27:54.660
du bezahlst ja nur

01:27:54.660 --> 01:27:55.520
für die genutzte Minute.

01:27:55.520 --> 01:27:56.860
Ja, gut,

01:27:56.860 --> 01:27:57.920
aber dafür muss ich auch

01:27:57.920 --> 01:27:59.260
das Ein- und Ausschalten mitbezahlen

01:27:59.260 --> 01:28:00.800
und wenn dann mal 100.000 kommen,

01:28:00.800 --> 01:28:01.500
dann muss ich auf einmal

01:28:01.500 --> 01:28:02.120
alles bezahlen.

01:28:02.120 --> 01:28:04.520
Nee, das will ich gar nicht.

01:28:04.520 --> 01:28:05.620
Also,

01:28:05.620 --> 01:28:07.740
das ist so eine,

01:28:07.740 --> 01:28:09.440
ja, da wird ja viel

01:28:09.440 --> 01:28:10.180
Buzzword-Bingo gespielt,

01:28:10.180 --> 01:28:10.560
ja, und gerade auch so.

01:28:10.560 --> 01:28:11.640
Ich verstehe zum Beispiel gar nicht,

01:28:11.640 --> 01:28:12.260
warum Amazon,

01:28:12.260 --> 01:28:12.660
Entschuldigung,

01:28:12.660 --> 01:28:13.360
dass ich nicht gerade noch spreche,

01:28:13.360 --> 01:28:14.860
aber nicht einfach so eine

01:28:14.860 --> 01:28:15.560
tolle Strategie fährt,

01:28:15.560 --> 01:28:16.040
wie zu sagen,

01:28:16.040 --> 01:28:16.960
hey, wir könnten

01:28:16.960 --> 01:28:17.760
unseren Umsatz hochbekommen,

01:28:17.820 --> 01:28:18.480
wir gucken einfach mal

01:28:18.480 --> 01:28:19.200
bei allen unseren Kunden,

01:28:19.200 --> 01:28:19.880
dann stellen wir irgendwelche

01:28:19.880 --> 01:28:21.420
Server in Russland auf

01:28:21.420 --> 01:28:22.320
und machen einfach

01:28:22.320 --> 01:28:23.640
ganz klasse viele Requests

01:28:23.640 --> 01:28:24.520
auf die ganzen Servers,

01:28:24.520 --> 01:28:25.300
dass die per Alarm

01:28:25.300 --> 01:28:26.220
da angeboten sind oder so

01:28:26.220 --> 01:28:27.840
und hauen einfach da mal

01:28:27.840 --> 01:28:29.200
so die Quotas so massiv hoch,

01:28:29.200 --> 01:28:30.100
weil wir benutzen das alles

01:28:30.100 --> 01:28:30.720
einfach mal.

01:28:30.720 --> 01:28:32.080
Wenn die mal Geld brauchen,

01:28:32.080 --> 01:28:32.720
machen die das vielleicht.

01:28:32.720 --> 01:28:33.680
Ja, aber bisher brauchen sie

01:28:33.680 --> 01:28:34.100
das noch gar nicht.

01:28:34.100 --> 01:28:35.580
Voll einfach.

01:28:35.580 --> 01:28:37.740
Du kannst einfach dann dadurch

01:28:37.740 --> 01:28:39.100
so deinen Umsatz voll hoch.

01:28:39.100 --> 01:28:41.340
Das ist eine gute Idee.

01:28:41.340 --> 01:28:41.720
Sie können auch einfach

01:28:41.720 --> 01:28:44.100
die Preise erhöhen oder so,

01:28:44.100 --> 01:28:46.340
aber das braucht jetzt auch so.

01:28:46.340 --> 01:28:47.460
Voll viele Leute nutzen

01:28:47.460 --> 01:28:48.000
unsere Sachen.

01:28:48.010 --> 01:28:49.870
Und dann merken sie, oh, der kommt ja kein Umsatz mehr raus, oder?

01:28:49.870 --> 01:28:51.990
Es gab vor einer Weile so einen Artikel,

01:28:51.990 --> 01:28:53.550
ich kann den auch für die Shownotes wieder raussuchen,

01:28:53.550 --> 01:28:56.530
dass Amazon Prime,

01:28:56.530 --> 01:28:58.570
dieses Video-Hosting, die sind umgestiegen

01:28:58.570 --> 01:29:00.470
von Serverless

01:29:00.470 --> 01:29:01.790
auf

01:29:01.790 --> 01:29:04.270
quasi reservierte Instanzen.

01:29:04.270 --> 01:29:06.270
Weil die halt auch so

01:29:06.270 --> 01:29:07.450
FFM-Pack-Lasten haben, ja?

01:29:07.450 --> 01:29:09.990
Und weil die da auch so Transcoding machen und

01:29:09.990 --> 01:29:12.150
das über dieses

01:29:12.150 --> 01:29:13.970
Serverless-Verteilte total cool ist, weil

01:29:13.970 --> 01:29:16.070
jede einzelne Komponente

01:29:16.070 --> 01:29:17.510
des Systems kann einzeln skalieren.

01:29:18.010 --> 01:29:20.210
Aber brauchst du gar nicht, weil du hast nur eine in der Mitte,

01:29:20.210 --> 01:29:22.450
die halt dick Rechenkraft verbraucht

01:29:22.450 --> 01:29:24.390
und dann außen so ein bisschen Gewürz

01:29:24.390 --> 01:29:24.850
außenrum.

01:29:24.850 --> 01:29:27.690
Aber auch die Abstraktionsleder, die da tolle,

01:29:27.690 --> 01:29:28.730
brauchst du eigentlich gar nicht mehr.

01:29:28.730 --> 01:29:31.730
Die haben irgendwie ihr Budget um 90% gesenkt und

01:29:31.730 --> 01:29:33.830
die Latenzen auch.

01:29:33.830 --> 01:29:35.890
Und

01:29:35.890 --> 01:29:37.670
das finde ich so ein bisschen gruselig, ja?

01:29:37.670 --> 01:29:39.570
Wenn so die Amazon-internen Teams sagen,

01:29:39.570 --> 01:29:41.690
also wir wollen das nicht benutzen,

01:29:41.690 --> 01:29:43.850
dann ist da doch

01:29:43.850 --> 01:29:45.630
schon was im Argen. Aber klar,

01:29:45.630 --> 01:29:47.670
also ich meine, das ist ja das Problem bei

01:29:47.670 --> 01:29:49.530
diesen ganzen Technologien. Die sind cool und

01:29:49.530 --> 01:29:51.630
neu und man will die mal ausprobieren

01:29:51.630 --> 01:29:53.450
und auch im Unternehmensumfeld ist es ja so,

01:29:53.450 --> 01:29:55.350
die sind cool und neu und man will die mal ausprobieren.

01:29:55.350 --> 01:29:57.610
Genau wie bei Kubernetes auch,

01:29:57.610 --> 01:29:59.550
ja? Das ist auch cool und neu

01:29:59.550 --> 01:30:01.210
und damit kannst du alles das machen, was

01:30:01.210 --> 01:30:02.670
Google auch macht.

01:30:02.670 --> 01:30:05.710
Aber brauchst du es wirklich?

01:30:05.710 --> 01:30:09.310
Ja, also meistens so dieses

01:30:09.310 --> 01:30:11.590
wie du sagtest, dieses Deklarative

01:30:11.590 --> 01:30:13.490
hat halt was für sich. Man schreibt zwei, drei

01:30:13.490 --> 01:30:15.290
Konfigurationsdateien und wenn man sich jetzt ein

01:30:15.290 --> 01:30:17.510
Minikube auf dem Server deployt, dann ist auch das relativ

01:30:17.510 --> 01:30:19.430
einfach. Da muss man auch dazu sagen, ehrlicherweise

01:30:19.430 --> 01:30:21.250
ist es Jammer, was man schreiben muss an

01:30:21.250 --> 01:30:22.270
Konfigurationsdateien.

01:30:22.270 --> 01:30:25.290
Naja, ist das schlimm?

01:30:25.290 --> 01:30:27.410
Ich weiß nicht, ich muss ja immer

01:30:27.410 --> 01:30:29.390
an dieses Meme-Bild denken

01:30:29.390 --> 01:30:31.510
von dem Typen, der halt irgendwie

01:30:31.510 --> 01:30:33.630
vor einem Haufen Soldaten

01:30:33.630 --> 01:30:36.690
steht und

01:30:36.690 --> 01:30:39.310
die dann

01:30:39.310 --> 01:30:41.390
sagen, ja, schieß den oder so

01:30:41.390 --> 01:30:42.930
und der so, hey, aber ich kann irgendwie

01:30:42.930 --> 01:30:45.030
Kubernetes, oder ich kann

01:30:45.030 --> 01:30:46.810
mit Computern Dinge machen

01:30:46.810 --> 01:30:47.350
und

01:30:47.350 --> 01:30:49.210
dann sagen die, ja, kannst du auch Jammer

01:30:49.210 --> 01:30:51.070
für Kubernetes schreiben und dann so, äh, schieß mich

01:30:51.070 --> 01:30:51.250
bitte.

01:30:51.250 --> 01:30:57.250
Da gibt's auch dieses Bild mit der Schlange

01:30:57.250 --> 01:30:57.830
und der Maus,

01:30:57.830 --> 01:31:01.330
wo die Maus sagt, bitte friss mich nicht und die Schlange

01:31:01.330 --> 01:31:02.770
sagt, nee, ich will dich gar nicht fressen.

01:31:02.770 --> 01:31:04.490
Dann sagt die Maus, okay, was willst du denn stattdessen?

01:31:04.490 --> 01:31:07.510
Dann sagt die Schlange, kannst du nicht Kubernetes-Engineer

01:31:07.510 --> 01:31:09.150
bei uns werden? Dann sagt die Maus, bitte friss mich.

01:31:09.150 --> 01:31:09.970
Also,

01:31:09.970 --> 01:31:13.370
ich glaube

01:31:13.370 --> 01:31:15.010
mit Schlange und Maus, ich glaube, dass das mal ein

01:31:15.010 --> 01:31:17.190
Python, eine Python-Metalle

01:31:17.190 --> 01:31:17.730
Tafel war.

01:31:17.730 --> 01:31:20.950
Jason, genau das, wie man es eigentlich

01:31:20.950 --> 01:31:22.690
jetzt machen sollte? Nee, auch nicht.

01:31:22.690 --> 01:31:24.410
Ja, ach, alles.

01:31:24.410 --> 01:31:26.390
Ist alles nicht so schön. Tommel.

01:31:26.390 --> 01:31:28.730
Tommel ist auch nicht schön.

01:31:28.730 --> 01:31:31.030
Ist auch nicht schön, aber ist der beste Kandidat vielleicht.

01:31:31.030 --> 01:31:32.750
Ihr ist vielleicht nochmal, erklärt bitte kurz den

01:31:32.750 --> 01:31:33.870
Unterschied zwischen Jammel und Tommel.

01:31:33.870 --> 01:31:36.930
Jammel ist yet another Markup Language

01:31:36.930 --> 01:31:38.770
und Tommel ist Toms Markup Language.

01:31:38.770 --> 01:31:40.970
Also, die Probleme

01:31:40.970 --> 01:31:42.990
bei Jammel sind halt, dass, wenn man da nicht vorsichtig

01:31:42.990 --> 01:31:45.490
ist, dann bedeutet halt eine Jammel-Dateiparsen

01:31:45.490 --> 01:31:46.790
halt Code ausführen, was

01:31:46.790 --> 01:31:48.590
vielleicht für die Leute nicht so klar ist.

01:31:48.590 --> 01:31:51.270
Ja, auch so Ambiguitäten, ja, das Norwegen-Problem.

01:31:51.270 --> 01:31:53.330
Oh, das tolle

01:31:53.330 --> 01:31:54.950
Norwegen-Problem, jetzt musst du noch unterzeichnen, was das Norwegen-Problem ist.

01:31:54.950 --> 01:31:57.650
Tops versus Spaces. No, no, no.

01:31:57.650 --> 01:31:59.250
Das Norway-Problem. Das No.

01:31:59.250 --> 01:32:02.170
Wenn man

01:32:02.170 --> 01:32:03.410
eine Liste von Ländern

01:32:03.410 --> 01:32:05.250
speichern möchte und dann

01:32:05.250 --> 01:32:07.570
dazu die ISO-Länder-Codes verwendet,

01:32:07.570 --> 01:32:09.350
dann sind das ja zwei buchstabige

01:32:09.350 --> 01:32:11.530
Länder-Codes und das geht bei den allermeisten

01:32:11.530 --> 01:32:13.330
Ländern sehr gut, außer bei Norwegen,

01:32:13.330 --> 01:32:15.290
weil der norwegische Länder-Code ist

01:32:15.290 --> 01:32:16.690
NO und das

01:32:16.790 --> 01:32:18.870
von Jammel als FALSE geparst,

01:32:18.870 --> 01:32:20.790
weil NO ist ja ein Synonym für FALSE.

01:32:20.790 --> 01:32:22.810
Das heißt, du hast dann so eine Liste von Ländern,

01:32:22.810 --> 01:32:23.570
Deutschland,

01:32:23.570 --> 01:32:26.050
Dänemark, Schweden,

01:32:26.050 --> 01:32:27.070
Nein.

01:32:27.070 --> 01:32:32.890
Das kann einem auch echt das Deployment kaputt machen,

01:32:32.890 --> 01:32:35.050
wenn man das Held da drin hat.

01:32:35.050 --> 01:32:36.610
Ja, oder auch

01:32:36.610 --> 01:32:38.830
Tops versus Spaces, ja, und generell

01:32:38.830 --> 01:32:40.670
so Significant White Space, das ist ja

01:32:40.670 --> 01:32:41.650
generell abzulehnen,

01:32:41.650 --> 01:32:44.090
gerade in der Python-Welt.

01:32:44.090 --> 01:32:46.610
Ja, das ist halt,

01:32:46.610 --> 01:32:46.770
Jammel-Problem.

01:32:46.770 --> 01:32:46.770
Ja, das ist halt, Jammel-Problem.

01:32:46.770 --> 01:32:46.770
Ja, das ist halt, Jammel-Problem.

01:32:46.790 --> 01:32:47.870
Jammel ist halt so eine,

01:32:47.870 --> 01:32:50.230
ja, das krankt halt an den

01:32:50.230 --> 01:32:52.470
an den gleichen Problemen, die

01:32:52.470 --> 01:32:54.790
viele solche Datenbeschreibungssprachen

01:32:54.790 --> 01:32:56.810
haben, dass, wenn man

01:32:56.810 --> 01:32:58.550
genügend Daten da durchschickt oder wenn

01:32:58.550 --> 01:33:00.630
genügend Leute damit arbeiten, dann siehst du ja alle

01:33:00.630 --> 01:33:01.570
Ecken und Kanten.

01:33:01.570 --> 01:33:04.710
Und wenn die nur so ein kleines

01:33:04.710 --> 01:33:06.830
Loch haben, ja, wo sie nicht genügend spezifiziert

01:33:06.830 --> 01:33:08.390
sind, dann fallen dir da

01:33:08.390 --> 01:33:09.830
gigabyteweise die Daten raus.

01:33:09.830 --> 01:33:12.370
Und das ist bei allen

01:33:12.370 --> 01:33:14.370
Sprachen so, das ist bei Jason so,

01:33:14.370 --> 01:33:16.450
Jason hat seine Probleme, ja,

01:33:16.770 --> 01:33:18.290
und auch seine, seine

01:33:18.290 --> 01:33:20.290
Ungereimtheiten, ja, es gibt nur Floats.

01:33:20.290 --> 01:33:22.590
Ja, es gibt überhaupt

01:33:22.590 --> 01:33:24.390
nur so vier Dat-Typen, ne, das ist vielleicht

01:33:24.390 --> 01:33:26.230
mancher, also es ist einfach

01:33:26.230 --> 01:33:28.510
elegant, oder halt auch

01:33:28.510 --> 01:33:30.550
irgendwie. Ja, und auch die Wiederholung,

01:33:30.550 --> 01:33:32.490
ja, du kannst nicht, wenn du irgendwie

01:33:32.490 --> 01:33:34.510
eine Million gleiche Objekte hast,

01:33:34.510 --> 01:33:36.310
dann die alle 10 Byte

01:33:36.310 --> 01:33:38.730
benutzen, aber die Keys, die du da halt reinschmeißt,

01:33:38.730 --> 01:33:40.690
die sind alle diesen gigabyteweise

01:33:40.690 --> 01:33:41.570
Keys reingeschrieben.

01:33:41.570 --> 01:33:44.030
Das Komma, keine Kommentare.

01:33:44.030 --> 01:33:44.750
Und auch die Pausen-Geschwindigkeit.

01:33:46.750 --> 01:33:48.410
Komma und...

01:33:48.410 --> 01:33:50.790
Jason Pausen geht inzwischen

01:33:50.790 --> 01:33:53.050
quasi schneller, als du

01:33:53.050 --> 01:33:54.710
von der Platte lesen kannst. Also da,

01:33:54.710 --> 01:33:56.890
ich lese ja mal das Blog von

01:33:56.890 --> 01:33:58.410
Daniel

01:33:58.410 --> 01:34:01.310
Lemire, ich weiß nicht genau,

01:34:01.310 --> 01:34:02.810
wie man das ausspricht, kanadischer

01:34:02.810 --> 01:34:05.930
Computer Science.

01:34:05.930 --> 01:34:06.990
Ich habe das auch in meinem

01:34:06.990 --> 01:34:09.050
RSS-Reel drin, dieses Blog,

01:34:09.050 --> 01:34:11.030
aber der schreibt so viele gute Sachen.

01:34:11.030 --> 01:34:12.950
Ja, das muss man auch irgendwie mal lesen.

01:34:12.950 --> 01:34:14.030
Der war letztens

01:34:14.030 --> 01:34:16.730
in irgendeinem, war das in einer

01:34:16.730 --> 01:34:19.070
von dem IEEE-Podcast

01:34:19.070 --> 01:34:20.670
Software Engineering Radio oder so,

01:34:20.670 --> 01:34:21.970
wo er auch drüber geschrieben hat,

01:34:21.970 --> 01:34:23.290
geredet hat.

01:34:23.290 --> 01:34:26.210
Der hat

01:34:26.210 --> 01:34:28.830
SIMD-Jason, glaube ich, geschrieben.

01:34:28.830 --> 01:34:30.990
Und wie man

01:34:30.990 --> 01:34:33.030
das halt machen kann und wo man aufpassen muss

01:34:33.030 --> 01:34:34.530
und man kann Jason

01:34:34.530 --> 01:34:36.650
Pausen quasi beliebig schnell hinbekommen.

01:34:36.650 --> 01:34:38.810
Also sie waren über mehrere

01:34:38.810 --> 01:34:40.830
Gigabyte pro Sekunde und...

01:34:40.830 --> 01:34:42.530
Ja gut, aber mehrere Gigabyte pro Sekunde

01:34:42.530 --> 01:34:44.970
impliziert ja immer noch, dass du mehrere Gigabyte hast.

01:34:44.970 --> 01:34:46.270
Ja, ja, klar.

01:34:46.710 --> 01:34:48.930
Und wenn du dann stattdessen Protobuff hast

01:34:48.930 --> 01:34:50.830
und nur 100 Megabyte hast, dann ist das natürlich

01:34:50.830 --> 01:34:53.070
weniger. Gut, aber sei es drum.

01:34:53.070 --> 01:34:55.090
Die eigentliche Aussage

01:34:55.090 --> 01:34:57.030
ist ja, jede von diesen Beschreibungssprachen

01:34:57.030 --> 01:34:58.990
hat Vor- und Nachteile und jede hat

01:34:58.990 --> 01:35:01.150
ihre Krankheiten. Und Tommel ist da nichts anderes.

01:35:01.150 --> 01:35:02.790
Tommel ist halt eine relativ

01:35:02.790 --> 01:35:04.690
simple Sprache,

01:35:04.690 --> 01:35:07.230
so ein bisschen an INI angelehnt,

01:35:07.230 --> 01:35:08.790
damit man auch das schön im Texteditor

01:35:08.790 --> 01:35:10.550
haben kann und damit du auch schön so

01:35:10.550 --> 01:35:12.870
auf quasi Dateiebene das machen kannst.

01:35:12.870 --> 01:35:14.730
Aber Jochen, würdest du tatsächlich irgendwo

01:35:14.730 --> 01:35:16.150
eine Schnittstelle machen, die Tommel verwendet?

01:35:16.710 --> 01:35:18.650
Also würdest du Tommel irgendwo

01:35:18.650 --> 01:35:19.250
schreiben?

01:35:19.250 --> 01:35:22.730
Ich habe das Gefühl, dass

01:35:22.730 --> 01:35:24.750
Tommel sowas ist, so eine Konfigurationssprache ist.

01:35:24.750 --> 01:35:26.970
Die wird manuell geschrieben und maschinell ausgelesen.

01:35:26.970 --> 01:35:28.850
Ich weiß

01:35:28.850 --> 01:35:30.850
nicht, ob ich auf die Idee käme, Tommel maschinell

01:35:30.850 --> 01:35:32.430
zu schreiben. Nee, wahrscheinlich nicht.

01:35:32.430 --> 01:35:34.810
Message-Spec oder sowas mit Python

01:35:34.810 --> 01:35:37.230
und dann eine genaue...

01:35:37.230 --> 01:35:38.650
Für automatische Sachen würde ich

01:35:38.650 --> 01:35:39.950
eher tatsächlich sowas wie JSON nehmen.

01:35:39.950 --> 01:35:42.870
Aber für Menschen

01:35:42.870 --> 01:35:43.930
ist JSON halt nicht so toll.

01:35:43.930 --> 01:35:45.530
Als die Default-Wahl ist.

01:35:45.530 --> 01:35:46.110
Ja.

01:35:46.710 --> 01:35:48.570
Und wenn es für Menschen nicht so toll ist,

01:35:48.570 --> 01:35:49.850
dann kannst du auch...

01:35:49.850 --> 01:35:50.510
XML nehmen.

01:35:50.510 --> 01:35:54.030
Ach, Dominik.

01:35:54.030 --> 01:35:57.190
Nein, Protobuf oder Message-Spec.

01:35:57.190 --> 01:35:59.330
Das würde ich gerne noch...

01:35:59.330 --> 01:36:00.650
Wir sind jetzt auch schon ein bisschen dran,

01:36:00.650 --> 01:36:02.110
aber das würde ich gerne noch...

01:36:02.110 --> 01:36:04.390
Das habe ich versucht zu sagen und habe es

01:36:04.390 --> 01:36:05.870
irgendwie 20 Minuten lang nicht hingekriegt.

01:36:05.870 --> 01:36:08.930
Und das hat mich irgendwie dann noch verfolgt.

01:36:08.930 --> 01:36:11.030
Also XML,

01:36:11.030 --> 01:36:13.030
ja, warum das halt...

01:36:13.030 --> 01:36:15.130
Also alle jammern immer drüber,

01:36:15.130 --> 01:36:16.650
aber warum das

01:36:16.710 --> 01:36:17.970
halt unter Umständen eine schlechte Idee ist

01:36:17.970 --> 01:36:18.490
oder was überhaupt.

01:36:18.490 --> 01:36:20.250
Das ist auch wieder ein schönes Beispiel für...

01:36:20.250 --> 01:36:22.110
Das hat mir ja auch schon ein paar Mal...

01:36:22.110 --> 01:36:24.370
Warum Abstraktion ist immer so Fluch und Segen.

01:36:24.370 --> 01:36:25.230
Das ist immer so schwierig.

01:36:25.230 --> 01:36:27.730
Und XML hat halt auch so fiese Probleme.

01:36:27.730 --> 01:36:29.090
Warum jammern da Leute immer so?

01:36:29.090 --> 01:36:31.590
Und ich habe dann irgendwie gesagt so,

01:36:31.590 --> 01:36:35.530
ja, CSV gefällt mir viel besser als XML,

01:36:35.530 --> 01:36:36.610
weil ich war ja lange

01:36:36.610 --> 01:36:38.990
in diesem Datenexport-Import-Geschäft tätig.

01:36:38.990 --> 01:36:41.630
Und nach viel Schmerzen

01:36:41.630 --> 01:36:43.290
wurde jedem,

01:36:43.290 --> 01:36:45.290
der halt irgendwie an diesem Datenaufbau

01:36:46.710 --> 01:36:47.830
Austauschpunkt teilnehmen wollte,

01:36:47.830 --> 01:36:49.970
geraten von den Kundenberatern halt immer so,

01:36:49.970 --> 01:36:53.050
nimm CSV, nimm nicht XML.

01:36:53.050 --> 01:36:54.710
Wir können XML, klar.

01:36:54.710 --> 01:36:56.690
Du kannst uns auch XML geben, das geht.

01:36:56.690 --> 01:36:57.810
Mach es nicht.

01:36:57.810 --> 01:36:58.810
Nimm CSV.

01:36:58.810 --> 01:37:02.310
Und ich dachte auch nur so,

01:37:02.310 --> 01:37:03.770
ja, ich würde immer CSV vorziehen

01:37:03.770 --> 01:37:05.670
gegenüber XML.

01:37:05.670 --> 01:37:08.750
Wieso das denn?

01:37:08.750 --> 01:37:10.330
CSV ist ja noch viel schrecklicher.

01:37:10.330 --> 01:37:11.750
Da ist ja gar nichts definiert und so.

01:37:11.750 --> 01:37:12.650
Denn auf Python,

01:37:12.650 --> 01:37:14.350
Readability counts?

01:37:14.350 --> 01:37:16.610
Nee, das ist gar nicht so der Punkt.

01:37:16.710 --> 01:37:18.510
Sondern der Punkt ist eher

01:37:18.510 --> 01:37:20.770
dieses Abstraktionsding aus meiner Perspektive

01:37:20.770 --> 01:37:21.190
jetzt sozusagen.

01:37:21.190 --> 01:37:22.590
Also es gibt möglicherweise auch Anwendungen,

01:37:22.590 --> 01:37:23.310
es gibt auch Anwendungen,

01:37:23.310 --> 01:37:24.570
nicht möglicherweise, ganz sicher,

01:37:24.570 --> 01:37:26.130
wo XML viel besser ist

01:37:26.130 --> 01:37:27.870
und wo CSV schrecklich ist.

01:37:27.870 --> 01:37:29.030
Aber...

01:37:29.030 --> 01:37:30.610
Jochen, du verkaufst gerade alle Zuhörer.

01:37:30.610 --> 01:37:32.750
Das ist ganz schlimm, dir zuzuhören.

01:37:32.750 --> 01:37:34.270
Haben wir jetzt noch welche jetzt gerade?

01:37:34.270 --> 01:37:36.630
CSV ist besser, XML ist besser.

01:37:36.630 --> 01:37:39.650
Nein, nein, aber vielleicht schon interessant,

01:37:39.650 --> 01:37:41.070
wo dann so Probleme passieren.

01:37:41.070 --> 01:37:43.930
Weil oft hast du halt kaputte Prozesse

01:37:43.930 --> 01:37:44.610
innerhalb von Unternehmer.

01:37:44.610 --> 01:37:45.210
Das hatten wir auch schon.

01:37:46.170 --> 01:37:48.990
Und wenn du jetzt XML erzeugst

01:37:48.990 --> 01:37:50.590
und das irgendwo hinschiebst,

01:37:50.590 --> 01:37:53.370
dann bist du ja gezwungen.

01:37:53.370 --> 01:37:54.230
Zum Beispiel, wenn du das auch

01:37:54.230 --> 01:37:56.110
gegen eine DTD validierst oder so.

01:37:56.110 --> 01:37:57.310
Das musst du überhaupt irgendwie...

01:37:57.310 --> 01:38:00.010
Die meisten XML-Schreibbibliotheken

01:38:00.010 --> 01:38:01.050
weigern sich halt einfach,

01:38:01.050 --> 01:38:02.290
irgendwie was rauszuschreiben,

01:38:02.290 --> 01:38:03.710
was halt nicht okay ist als XML.

01:38:03.710 --> 01:38:06.510
Das heißt, wenn du irgendwie Mist machst

01:38:06.510 --> 01:38:08.070
und dann aber was rausschreiben willst,

01:38:08.070 --> 01:38:09.010
dann funktioniert das halt nicht.

01:38:09.010 --> 01:38:11.990
Und dann kann es sein,

01:38:11.990 --> 01:38:12.950
dass die Probleme,

01:38:12.950 --> 01:38:14.610
dass es halt aus einem kleinen Fehler

01:38:14.610 --> 01:38:15.530
ein großer Fehler wird.

01:38:15.630 --> 01:38:17.850
Und das ist halt das eigentlich üble Problem.

01:38:17.850 --> 01:38:19.250
Also sozusagen das praktische Beispiel,

01:38:19.250 --> 01:38:20.970
was immer und immer wieder passiert,

01:38:20.970 --> 01:38:22.350
ist halt oft sowas wie,

01:38:22.350 --> 01:38:23.110
wir kriegen CSV

01:38:23.110 --> 01:38:25.930
und dann passieren da so Dinge drin wie,

01:38:25.930 --> 01:38:28.450
naja, also ein Teil der Zeilen

01:38:28.450 --> 01:38:31.110
ist halt UTF-8 irgendwie encoding verwendet,

01:38:31.110 --> 01:38:32.510
ein Teil der Zeilen irgendwie Windows,

01:38:32.510 --> 01:38:34.050
ein Teil der Zeilen Latin One.

01:38:34.050 --> 01:38:34.990
Großartig.

01:38:34.990 --> 01:38:36.630
Großartig kann man sagen,

01:38:36.630 --> 01:38:37.970
ja so, naja, das nehme ich nicht.

01:38:37.970 --> 01:38:39.130
Das geht nicht.

01:38:39.130 --> 01:38:40.170
Das ist irgendwie kaputt.

01:38:40.170 --> 01:38:41.170
Ja, kann man machen.

01:38:41.170 --> 01:38:41.470
Validiert nicht.

01:38:41.470 --> 01:38:43.650
Aber ist halt auch Geld,

01:38:43.650 --> 01:38:44.910
das dann verloren geht unter Umständen.

01:38:45.090 --> 01:38:46.310
Und ehrlich gesagt,

01:38:46.310 --> 01:38:46.970
wenn ich jetzt sage,

01:38:46.970 --> 01:38:48.730
so, ich passe jetzt diese Zeile

01:38:48.730 --> 01:38:51.030
und dann kriege ich halt irgendwie eine Exception

01:38:51.030 --> 01:38:51.710
oder ich weiß nicht,

01:38:51.710 --> 01:38:52.330
ich merke halt so,

01:38:52.330 --> 01:38:53.410
oh, das ist hier was ganz anderes,

01:38:53.410 --> 01:38:54.150
das ist kein UTF-8,

01:38:54.150 --> 01:38:55.130
dann zu sagen,

01:38:55.130 --> 01:38:56.350
na gut, dann probiere ich halt mal Latin One.

01:38:56.350 --> 01:38:57.030
Okay, geht.

01:38:57.030 --> 01:38:57.990
Ja, oder so.

01:38:57.990 --> 01:38:58.890
Das ist nicht so schlimm.

01:38:58.890 --> 01:38:59.910
Das geht, das kann man programmieren.

01:38:59.910 --> 01:39:00.450
Das geht.

01:39:00.450 --> 01:39:02.050
Ich kann jetzt immer noch parsen.

01:39:02.050 --> 01:39:03.830
Ja, selbst wenn solche Dinge passieren wie,

01:39:03.830 --> 01:39:06.590
ja, das ist halt jetzt nicht mehr Semikolon

01:39:06.590 --> 01:39:07.990
der Spalten-Trenner,

01:39:07.990 --> 01:39:10.750
sondern Komma oder Tab

01:39:10.750 --> 01:39:12.850
oder da gab es auch nicht so ein Zeichen für.

01:39:12.850 --> 01:39:14.230
Husky Separated Values.

01:39:14.230 --> 01:39:15.050
Das ist mein eigener,

01:39:15.050 --> 01:39:15.870
mein eigener Kreuzzug.

01:39:15.870 --> 01:39:17.810
Genau.

01:39:17.810 --> 01:39:19.390
Das kann ich auch irgendwie erkennen

01:39:19.390 --> 01:39:20.750
und dann kann ich damit irgendwie umgehen.

01:39:20.750 --> 01:39:22.110
Und wenn man das halt ein paar Jahre macht,

01:39:22.110 --> 01:39:23.210
dann hat man halt irgendwie einen Parser.

01:39:23.210 --> 01:39:24.610
Da kannst du gegenschmeißen,

01:39:24.610 --> 01:39:24.970
was du willst.

01:39:24.970 --> 01:39:25.910
Der passt, ist alles egal.

01:39:25.910 --> 01:39:26.350
Geht.

01:39:26.350 --> 01:39:27.070
So.

01:39:27.070 --> 01:39:28.990
Okay, ist Aufwand und ist hässlich

01:39:28.990 --> 01:39:30.230
und macht keinen Spaß,

01:39:30.230 --> 01:39:31.050
aber es geht irgendwie.

01:39:31.050 --> 01:39:34.190
Und die meisten Probleme bei CSV sind so,

01:39:34.190 --> 01:39:35.950
dass man die schon irgendwie in den Griff kriegt.

01:39:35.950 --> 01:39:37.230
Man muss halt irgendwie wollen,

01:39:37.230 --> 01:39:40.450
aber ja, es geht auf jeden Fall.

01:39:40.450 --> 01:39:42.270
Man kann sich aus diesem Problem

01:39:42.270 --> 01:39:43.010
wieder rausrecovern.

01:39:43.010 --> 01:39:44.390
Bei XML ist es oft so,

01:39:44.390 --> 01:39:44.990
dass du Probleme,

01:39:45.010 --> 01:39:45.770
halt dann siehst,

01:39:45.770 --> 01:39:48.350
aus denen du dich überhaupt nicht mehr rausrecovern kannst.

01:39:48.350 --> 01:39:48.790
Wie zum Beispiel,

01:39:48.790 --> 01:39:50.530
es kommt halt ein syntaktisch korrektes XML,

01:39:50.530 --> 01:39:54.390
aber das ist halt leer.

01:39:54.390 --> 01:39:57.370
Und jetzt bedeutet halt leer halt zum Beispiel so was wie,

01:39:57.370 --> 01:40:00.250
naja, lösche alle Dinge,

01:40:00.250 --> 01:40:01.910
die halt vorher da waren.

01:40:01.910 --> 01:40:05.350
Was halt ein katastrophaler Fehler sein kann.

01:40:05.350 --> 01:40:07.750
Wo dann Rechtsstreit draus wird.

01:40:07.750 --> 01:40:09.710
Update oder Lead.

01:40:09.710 --> 01:40:10.970
Ja, so die Frage ist,

01:40:10.970 --> 01:40:11.870
was machst du denn an der Stelle?

01:40:11.870 --> 01:40:12.430
Du siehst halt,

01:40:12.430 --> 01:40:13.510
okay, jetzt kommt hier dieses Ding

01:40:13.510 --> 01:40:14.590
und dann denkst du dir so,

01:40:14.590 --> 01:40:14.950
okay,

01:40:14.970 --> 01:40:16.490
was willst du denn jetzt

01:40:16.490 --> 01:40:18.850
als Programmlogik machen?

01:40:18.850 --> 01:40:19.570
Willst du sagen,

01:40:19.570 --> 01:40:23.530
nö, das führe ich jetzt nicht aus,

01:40:23.530 --> 01:40:25.110
weil das kommt mir irgendwie komisch vor.

01:40:25.110 --> 01:40:26.470
Landest du im Rechtsstreit.

01:40:26.470 --> 01:40:28.090
Du führst es aus,

01:40:28.090 --> 01:40:29.910
irgendwie viel Geld geht verloren,

01:40:29.910 --> 01:40:30.930
du landest in einem Rechtsstreit.

01:40:30.930 --> 01:40:32.090
Du hast nur schlechte Optionen.

01:40:32.090 --> 01:40:33.150
Du hast nicht die Option so,

01:40:33.150 --> 01:40:34.630
okay, wir machen das Encoding

01:40:34.630 --> 01:40:35.290
nochmal ein bisschen anders

01:40:35.290 --> 01:40:36.590
und dann versuchen wir das irgendwie anders zu parsen,

01:40:36.590 --> 01:40:37.050
dann geht's.

01:40:37.050 --> 01:40:38.530
Sondern du bist eigentlich nur bei,

01:40:38.530 --> 01:40:39.610
eigentlich wahrscheinlich

01:40:39.610 --> 01:40:40.790
müsstest du dann irgendwie alarmieren

01:40:40.790 --> 01:40:42.630
oder müsstest du jemanden irgendwie anrufen oder so.

01:40:42.630 --> 01:40:44.930
Aber das ist halt auch dann einfach,

01:40:44.930 --> 01:40:45.870
das ist einfach Kacke, ja.

01:40:45.870 --> 01:40:46.730
Das ist einfach.

01:40:46.730 --> 01:40:48.910
Und solche Sachen hast du halt bei,

01:40:48.910 --> 01:40:50.610
wenn die Fehler nicht mehr,

01:40:50.610 --> 01:40:52.230
also die Idee bei XML ist so ein bisschen,

01:40:52.230 --> 01:40:53.650
wenn du auf der syntaktischen,

01:40:53.650 --> 01:40:54.730
wenn man sagt halt,

01:40:54.730 --> 01:40:55.750
ah, wir haben so viele Probleme

01:40:55.750 --> 01:40:56.990
mit diesen Syntax und so,

01:40:56.990 --> 01:40:58.690
wir machen jetzt ein Format,

01:40:58.690 --> 01:40:59.450
wo das validiert ist,

01:40:59.450 --> 01:41:00.430
dass das nicht mehr passieren kann.

01:41:00.430 --> 01:41:02.470
Ja, und dann hast du halt sozusagen

01:41:02.470 --> 01:41:05.510
mit dieser Art Wacky Mole zu spielen,

01:41:05.510 --> 01:41:06.630
ja, dann kommt das Ding halt

01:41:06.630 --> 01:41:07.590
an einer anderen Stelle wieder hoch

01:41:07.590 --> 01:41:08.870
und zwar auf einer semantischen Ebene,

01:41:08.870 --> 01:41:09.910
wo du gar nichts mehr machen kannst

01:41:09.910 --> 01:41:11.030
oder wo es viel schwerer ist,

01:41:11.030 --> 01:41:11.970
damit umzugehen mit dem Fehler.

01:41:11.970 --> 01:41:13.630
Und ja,

01:41:13.630 --> 01:41:14.830
das ist halt so ein bisschen mein,

01:41:14.890 --> 01:41:16.170
mein Problem mit XML

01:41:16.170 --> 01:41:17.590
und dass man das halt,

01:41:17.590 --> 01:41:18.890
man kriegt die Probleme nicht so einfach weg.

01:41:18.890 --> 01:41:19.270
Es ist,

01:41:19.270 --> 01:41:20.250
also wenn da,

01:41:20.250 --> 01:41:21.170
wenn da Abteilungen sind

01:41:21.170 --> 01:41:22.670
und die eben verwenden alle Excel

01:41:22.670 --> 01:41:23.850
und dann in unterschiedlichen Formaten,

01:41:23.850 --> 01:41:24.870
dann ziehst du das irgendwie zusammen

01:41:24.870 --> 01:41:25.910
und versuchst es rauszuschreiben,

01:41:25.910 --> 01:41:28.510
dann, ja,

01:41:28.510 --> 01:41:30.470
dann besser,

01:41:30.470 --> 01:41:31.850
du schreibst es irgendwie raus

01:41:31.850 --> 01:41:32.610
und es ist halt falsch

01:41:32.610 --> 01:41:34.110
und du kannst es hinterher noch irgendwie wieder fixen,

01:41:34.110 --> 01:41:36.310
als da fehlen dann halt bei zwei Abteilungen,

01:41:36.310 --> 01:41:37.450
die fehlen die Daten einfach

01:41:37.450 --> 01:41:38.390
und du weißt halt nicht,

01:41:38.390 --> 01:41:39.390
was passiert ist, ja.

01:41:39.390 --> 01:41:41.570
Das ist so ein bisschen die Debatte

01:41:41.570 --> 01:41:44.170
zwischen be lenient with what you accept

01:41:44.170 --> 01:41:44.850
and strict with what you don't.

01:41:44.850 --> 01:41:46.150
Strict with what you create.

01:41:46.150 --> 01:41:46.790
Robustness.

01:41:46.790 --> 01:41:48.610
Robustness-Principle.

01:41:48.610 --> 01:41:49.350
Ja,

01:41:49.350 --> 01:41:51.430
versus Programming by Contract

01:41:51.430 --> 01:41:53.490
und wenn du das nicht 100% erfüllst,

01:41:53.490 --> 01:41:53.970
dann ist es halt weg.

01:41:53.970 --> 01:41:55.170
Ja,

01:41:55.170 --> 01:41:55.650
also.

01:41:55.650 --> 01:41:56.910
Ja,

01:41:56.910 --> 01:41:57.730
schmeiße ich alles weg,

01:41:57.730 --> 01:41:59.290
wenn ich halt irgendwie Mist bekomme

01:41:59.290 --> 01:41:59.810
auf meiner API,

01:41:59.810 --> 01:42:00.830
sage ich harte Begegnungen.

01:42:00.830 --> 01:42:00.850
Ja,

01:42:00.850 --> 01:42:01.470
oder riskierst du,

01:42:01.470 --> 01:42:02.950
dass halt jemand,

01:42:02.950 --> 01:42:04.230
die gar nicht benutzen kann,

01:42:04.230 --> 01:42:04.610
die API,

01:42:04.610 --> 01:42:05.710
weil das ausgründet.

01:42:05.710 --> 01:42:05.730
Ja,

01:42:05.730 --> 01:42:06.930
vielleicht weiß ich ja noch gar nicht,

01:42:06.930 --> 01:42:08.050
was da alles kommen soll.

01:42:08.050 --> 01:42:10.070
Vielleicht möchte ich das ja einfach irgendwie

01:42:10.070 --> 01:42:11.490
als Zeichenkette konvertieren,

01:42:11.490 --> 01:42:12.570
da trotzdem irgendwie reinschreiben

01:42:12.570 --> 01:42:13.270
und wieder rausgeben,

01:42:13.270 --> 01:42:14.110
wenn da jemand erfragt.

01:42:14.110 --> 01:42:14.810
Das heißt,

01:42:14.810 --> 01:42:16.190
wenn das irgendwie gar nicht dem entspricht,

01:42:16.190 --> 01:42:17.030
was ich eigentlich dachte,

01:42:17.030 --> 01:42:18.230
was ich haben brauche.

01:42:18.230 --> 01:42:19.170
Das,

01:42:19.170 --> 01:42:20.450
das kommt auch so ein bisschen in Wellen,

01:42:20.450 --> 01:42:20.610
oder,

01:42:20.610 --> 01:42:21.910
dieses Robustness-Principle.

01:42:21.910 --> 01:42:23.570
Für eine Weile lang war das total,

01:42:23.570 --> 01:42:25.250
ja,

01:42:25.250 --> 01:42:26.350
wir akzeptieren alles

01:42:26.350 --> 01:42:28.250
und dann hast du so lustige Modibake

01:42:28.250 --> 01:42:30.290
in deinem Notepad drin.

01:42:30.290 --> 01:42:30.930
Shit in,

01:42:30.930 --> 01:42:31.330
shit out,

01:42:31.330 --> 01:42:31.850
sagt man ja.

01:42:31.850 --> 01:42:32.270
Ja,

01:42:32.270 --> 01:42:32.470
ja,

01:42:32.470 --> 01:42:32.730
glaube ich.

01:42:32.730 --> 01:42:34.970
Internet Explorer zeigt alle auf einmal

01:42:34.970 --> 01:42:35.950
alles auf Koreanisch an

01:42:35.950 --> 01:42:37.850
und dann schwingt das wieder,

01:42:37.850 --> 01:42:38.970
das pendelt wieder in die andere Richtung,

01:42:38.970 --> 01:42:39.710
wo alles XML,

01:42:39.710 --> 01:42:40.690
XHTML sein muss

01:42:40.690 --> 01:42:41.910
und nur wenn das validiert,

01:42:41.910 --> 01:42:43.550
kannst du die Webseite auch überhaupt anzeigen

01:42:43.550 --> 01:42:44.770
und dann,

01:42:44.770 --> 01:42:45.570
dann schwingt es wieder rum

01:42:45.570 --> 01:42:46.350
zu HTML5,

01:42:46.350 --> 01:42:46.870
wo das so,

01:42:46.870 --> 01:42:47.430
ja gut,

01:42:47.430 --> 01:42:48.770
wenn da ein HTML5-Teig drin ist,

01:42:48.770 --> 01:42:50.070
dann kannst du schon irgendwas draus machen

01:42:50.070 --> 01:42:51.370
und,

01:42:51.370 --> 01:42:51.830
ja.

01:42:51.830 --> 01:42:53.210
Ja,

01:42:53.210 --> 01:42:53.510
so,

01:42:53.510 --> 01:42:53.730
so,

01:42:53.730 --> 01:42:55.310
persönlich ist mir aber das irgendwie,

01:42:55.310 --> 01:42:57.390
wir versuchen es irgendwie hinzukriegen,

01:42:57.390 --> 01:42:58.670
ist mir sympathischer als,

01:42:58.670 --> 01:43:00.010
wir machen jetzt eine Bürokratie

01:43:00.010 --> 01:43:00.430
und,

01:43:00.430 --> 01:43:01.990
dann fällt uns auch das.

01:43:01.990 --> 01:43:02.030
Nein,

01:43:02.030 --> 01:43:02.470
der Kunde ist schuld,

01:43:02.470 --> 01:43:03.230
der Benutzer ist schuld,

01:43:03.230 --> 01:43:04.650
das ist immer die richtige Antwort.

01:43:04.650 --> 01:43:06.890
Ja.

01:43:06.890 --> 01:43:08.170
Naja.

01:43:08.170 --> 01:43:10.670
Ja,

01:43:10.670 --> 01:43:11.070
schwierig,

01:43:11.070 --> 01:43:11.990
schwierig da auch,

01:43:11.990 --> 01:43:12.710
ja.

01:43:14.730 --> 01:43:15.590
Wieder wie vorhin,

01:43:15.590 --> 01:43:15.730
ja,

01:43:15.730 --> 01:43:16.570
es gibt Situationen,

01:43:16.570 --> 01:43:17.310
in denen es so ist

01:43:17.310 --> 01:43:18.290
und es gibt Situationen,

01:43:18.290 --> 01:43:18.790
in denen es so ist.

01:43:18.790 --> 01:43:18.990
Ja,

01:43:18.990 --> 01:43:19.310
insofern.

01:43:19.310 --> 01:43:20.290
Nee,

01:43:20.290 --> 01:43:20.650
aber klar,

01:43:20.650 --> 01:43:21.010
vor allem,

01:43:21.010 --> 01:43:21.530
also ich meine,

01:43:21.530 --> 01:43:24.370
viele von diesen Datenschnittstellen

01:43:24.370 --> 01:43:26.030
sind ja zwischen,

01:43:26.030 --> 01:43:26.710
sag ich mal,

01:43:26.710 --> 01:43:27.210
Entitäten,

01:43:27.210 --> 01:43:29.630
die mehr oder minder professionell sind

01:43:29.630 --> 01:43:29.990
und,

01:43:29.990 --> 01:43:33.410
dann ist es halt einfach pragmatisch zu sagen,

01:43:33.410 --> 01:43:33.690
okay,

01:43:33.690 --> 01:43:34.870
das kann halt sein,

01:43:34.870 --> 01:43:37.550
dass die das nicht 100% richtig generieren können

01:43:37.550 --> 01:43:39.790
und wie geht man damit um?

01:43:39.790 --> 01:43:40.830
Ja.

01:43:40.830 --> 01:43:42.190
Und,

01:43:42.190 --> 01:43:42.550
ja.

01:43:44.690 --> 01:43:45.450
Ja, okay.

01:43:45.450 --> 01:43:46.890
Hat jetzt aber nichts mehr

01:43:46.890 --> 01:43:47.750
mit Kubernetes zu tun, oder?

01:43:47.750 --> 01:43:48.150
Ich wollte gerade sagen,

01:43:48.150 --> 01:43:48.750
CubeControl,

01:43:48.750 --> 01:43:49.130
nein.

01:43:49.130 --> 01:43:49.970
In gewisser Weise,

01:43:49.970 --> 01:43:50.810
in gewisser Weise schon,

01:43:50.810 --> 01:43:52.290
weil bei Kubernetes

01:43:52.290 --> 01:43:54.390
hast du halt auch so eine Abstraktionsschicht,

01:43:54.390 --> 01:43:55.610
die dann halt irgendwie,

01:43:55.610 --> 01:43:56.230
wo du sagst,

01:43:56.230 --> 01:43:56.450
okay,

01:43:56.450 --> 01:43:57.390
ich zwinge dich dazu,

01:43:57.390 --> 01:43:58.470
dass du sagen kannst,

01:43:58.470 --> 01:43:59.790
wie viel Hauptspeicher du denn brauchst,

01:43:59.790 --> 01:43:59.950
ne?

01:43:59.950 --> 01:44:00.450
Ja, okay, gut.

01:44:00.450 --> 01:44:01.590
Und dann kann es sein,

01:44:01.590 --> 01:44:02.730
dass du halt ein anderes Problem kriegst,

01:44:02.730 --> 01:44:02.990
weil.

01:44:02.990 --> 01:44:04.150
Das ist quasi das,

01:44:04.150 --> 01:44:05.810
was du vorhin sagen wolltest,

01:44:05.810 --> 01:44:05.990
ja?

01:44:05.990 --> 01:44:06.130
Genau.

01:44:06.130 --> 01:44:07.690
Dass es Situationen gibt,

01:44:07.690 --> 01:44:08.710
in denen kannst du gar nicht sagen,

01:44:08.710 --> 01:44:09.830
wie viel Hauptspeicher du brauchst.

01:44:09.830 --> 01:44:11.010
Also zumindest nicht dauerhaft

01:44:11.010 --> 01:44:12.570
oder zumindest nicht so richtig im Voraus.

01:44:12.570 --> 01:44:12.990
Oder das,

01:44:12.990 --> 01:44:14.970
das ist ein gutes Argument.

01:44:14.970 --> 01:44:16.670
ist halt so viel aufwendiger,

01:44:16.670 --> 01:44:17.210
als.

01:44:17.210 --> 01:44:18.890
Ja, beziehungsweise du überprovisionierst.

01:44:18.890 --> 01:44:20.570
Du musst halt einfach quasi

01:44:20.570 --> 01:44:21.630
vom Worst Case ausgehen

01:44:21.630 --> 01:44:24.610
und der Worst Case ist halt,

01:44:24.610 --> 01:44:26.870
alle Menschen auf der Welt

01:44:26.870 --> 01:44:28.290
rufen gleichzeitig dieses Video ab

01:44:28.290 --> 01:44:29.770
und das.

01:44:29.770 --> 01:44:31.150
Das musst du dann auch gehen.

01:44:31.150 --> 01:44:32.010
Das musst du jetzt einplanen.

01:44:32.010 --> 01:44:33.370
Ja, und das musst du dann halt auch bezahlen.

01:44:33.370 --> 01:44:34.010
Ja, genau.

01:44:34.010 --> 01:44:34.810
Und das musst du dann auch bezahlen,

01:44:34.810 --> 01:44:35.890
weil so viel hast du ja requested.

01:44:35.890 --> 01:44:36.510
Also zum Beispiel

01:44:36.510 --> 01:44:37.950
so ein Konzertticketanbieter

01:44:37.950 --> 01:44:38.350
wäre das vielleicht

01:44:38.350 --> 01:44:39.050
ein relevantes Problem.

01:44:39.050 --> 01:44:40.650
Ja, oder überall,

01:44:40.650 --> 01:44:40.990
wo du es spielst.

01:44:40.990 --> 01:44:40.990
Ja, oder überall,

01:44:40.990 --> 01:44:41.470
wo du Spitzenspitzen hast.

01:44:41.470 --> 01:44:43.870
Es gibt ja überall Saisonalität.

01:44:43.870 --> 01:44:46.890
Es gibt ja überall Zeitpunkte,

01:44:46.890 --> 01:44:47.870
wo mehr Traffic ist

01:44:47.870 --> 01:44:48.990
und wo weniger Traffic ist

01:44:48.990 --> 01:44:50.950
und Spannungsspitzen.

01:44:50.950 --> 01:44:52.430
Aber das ist ja auch das Versprechen,

01:44:52.430 --> 01:44:54.090
das ist ja das Versprechen von Cloud,

01:44:54.090 --> 01:44:56.050
dass du diese Spitzen abfangen kannst

01:44:56.050 --> 01:44:57.630
für die realen Kosten,

01:44:57.630 --> 01:44:58.190
sage ich mal.

01:44:58.190 --> 01:44:59.230
Ja.

01:44:59.230 --> 01:45:00.050
Weil in dem Moment

01:45:00.050 --> 01:45:00.830
mietest du dann halt

01:45:00.830 --> 01:45:01.930
mehr Rechenleistung

01:45:01.930 --> 01:45:02.830
als in anderen Momenten.

01:45:02.830 --> 01:45:03.630
Du mietest ja auf einmal halt

01:45:03.630 --> 01:45:05.210
250.000 Rechner,

01:45:05.210 --> 01:45:05.970
die du normalerweise brauchst

01:45:05.970 --> 01:45:06.430
nur fünf.

01:45:06.430 --> 01:45:07.010
Ja, genau.

01:45:07.010 --> 01:45:07.810
Aber für das Wochenende,

01:45:07.810 --> 01:45:08.870
wo halt dann die Konzertkarten

01:45:08.870 --> 01:45:09.770
Genau, wo Taylor Swift

01:45:09.770 --> 01:45:10.710
eine Milliarde Dollar

01:45:10.710 --> 01:45:10.970
umsetzt,

01:45:10.970 --> 01:45:12.370
mit ihren Konzertkarten,

01:45:12.370 --> 01:45:13.550
dann bricht dein System

01:45:13.550 --> 01:45:14.310
halt trotzdem zusammen.

01:45:14.310 --> 01:45:16.170
Weil so war es ja.

01:45:16.170 --> 01:45:21.530
Ja gut, aber das,

01:45:21.530 --> 01:45:22.470
ja,

01:45:22.470 --> 01:45:23.810
das ist so ein bisschen

01:45:23.810 --> 01:45:24.810
das eigentlich Frustrierende,

01:45:24.810 --> 01:45:25.190
finde ich,

01:45:25.190 --> 01:45:26.670
dass man aus technischer Sicht

01:45:26.670 --> 01:45:27.530
so viele Sachen sieht,

01:45:27.530 --> 01:45:28.490
die man machen könnte

01:45:28.490 --> 01:45:31.350
und dann macht aber trotzdem jemand

01:45:31.350 --> 01:45:32.310
so viel Geld mit

01:45:32.310 --> 01:45:33.570
Shell-Skripten,

01:45:33.570 --> 01:45:34.690
die jede Nacht

01:45:34.690 --> 01:45:36.070
alles neu starten

01:45:36.070 --> 01:45:38.370
und diese Personen,

01:45:38.370 --> 01:45:39.690
die sitzen an der richtigen Stelle.

01:45:39.690 --> 01:45:40.390
So ärgerlich.

01:45:40.950 --> 01:45:42.370
Wir könnten es alles viel besser.

01:45:42.370 --> 01:45:47.690
Das war ein Kauf-mich-Vortrag.

01:45:47.690 --> 01:45:50.210
Ja, jede Unterhaltung ist,

01:45:50.210 --> 01:45:51.830
jedes Gespräch ist ein Kauf-Mich-Vortrag.

01:45:51.830 --> 01:45:53.570
Was meinst du,

01:45:53.570 --> 01:45:54.830
warum ich immer herkomme, Dominik?

01:45:54.830 --> 01:45:55.510
Ach so, natürlich.

01:45:55.510 --> 01:45:57.170
Für die ganzen großen Aufträge.

01:45:57.170 --> 01:45:58.150
Ja, die ich alle schon

01:45:58.150 --> 01:45:58.870
über den Podcast

01:45:58.870 --> 01:45:59.950
an Landtag hergezogen habe.

01:45:59.950 --> 01:46:02.110
Funktioniert jedes Mal.

01:46:02.110 --> 01:46:02.750
Immer.

01:46:02.750 --> 01:46:04.010
Also, liebe Zuhörer,

01:46:04.010 --> 01:46:05.510
wenn auch Sie Interesse haben

01:46:05.510 --> 01:46:06.110
an einem

01:46:06.110 --> 01:46:08.470
An einem Pick.

01:46:08.470 --> 01:46:09.990
An einem Pick?

01:46:09.990 --> 01:46:10.650
Ach so, ein Pick.

01:46:10.950 --> 01:46:12.010
Dominik, hast du einen Pick?

01:46:12.010 --> 01:46:13.110
Environs.

01:46:13.110 --> 01:46:14.630
Kennt ihr das?

01:46:14.630 --> 01:46:15.250
Was ist Environs?

01:46:15.250 --> 01:46:16.850
Kennt ihr Django Environ

01:46:16.850 --> 01:46:17.490
oder kennt ihr

01:46:17.490 --> 01:46:18.650
ja,

01:46:18.650 --> 01:46:19.010
wie heißt der?

01:46:19.010 --> 01:46:20.130
Python.env oder sowas?

01:46:20.130 --> 01:46:20.950
Genau.

01:46:20.950 --> 01:46:22.890
Das ist was anderes.

01:46:22.890 --> 01:46:23.210
Egal.

01:46:23.210 --> 01:46:24.110
Also Environ,

01:46:24.110 --> 01:46:25.130
ja, nicht ganz.

01:46:25.130 --> 01:46:27.130
Environ ist so ein anderes Paket,

01:46:27.130 --> 01:46:27.730
wo man halt

01:46:27.730 --> 01:46:28.750
Environment-Dateien

01:46:28.750 --> 01:46:29.450
lesen kann

01:46:29.450 --> 01:46:30.250
oder halt aus der

01:46:30.250 --> 01:46:31.170
Environment-Variablen

01:46:31.170 --> 01:46:31.850
dann irgendwann

01:46:31.850 --> 01:46:33.510
seine Sachen ins Playbook kommt.

01:46:33.510 --> 01:46:34.930
Das ist so ein bisschen

01:46:34.930 --> 01:46:37.610
anders als Django Environ irgendwie.

01:46:37.610 --> 01:46:38.950
Und das macht halt auch sowas,

01:46:38.950 --> 01:46:40.290
dass man halt irgendwie,

01:46:40.290 --> 01:46:40.930
äh,

01:46:40.950 --> 01:46:42.210
quasi

01:46:42.210 --> 01:46:43.090
auf das

01:46:43.090 --> 01:46:44.350
Environment irgendwie

01:46:44.350 --> 01:46:46.570
geordneter Form zugreifen kann.

01:46:46.570 --> 01:46:47.430
Genau, also mit

01:46:47.430 --> 01:46:48.630
Konvertierung direkt

01:46:48.630 --> 01:46:49.490
in die richtigen Datentypen

01:46:49.490 --> 01:46:50.010
und sowas.

01:46:50.010 --> 01:46:50.530
Ah, okay.

01:46:50.530 --> 01:46:51.890
Und ja.

01:46:51.890 --> 01:46:54.590
Finde ich ganz nett.

01:46:54.590 --> 01:46:55.530
Also, weil Django Environ

01:46:55.530 --> 01:46:56.130
habe ich sonst immer benutzt.

01:46:56.130 --> 01:46:57.230
Ich versuche gerade alles umzuziehen

01:46:57.230 --> 01:46:59.010
und, äh,

01:46:59.010 --> 01:46:59.610
ist irgendwie schön.

01:46:59.610 --> 01:47:00.230
Ich weiß noch nicht,

01:47:00.230 --> 01:47:01.430
ist das einfach, intuitiv

01:47:01.430 --> 01:47:02.010
funktionierend?

01:47:02.010 --> 01:47:02.990
Du machst ein Env auf

01:47:02.990 --> 01:47:03.870
und machst dann Read Env

01:47:03.870 --> 01:47:04.570
von den DotFiles,

01:47:04.570 --> 01:47:05.070
die du haben willst.

01:47:05.070 --> 01:47:06.730
Apropos DotFiles,

01:47:06.730 --> 01:47:07.590
wie benutzt ihr es?

01:47:07.590 --> 01:47:08.450
Schreibt ihr einfach tatsächlich

01:47:08.450 --> 01:47:10.310
Stumpf-Secrets irgendwo rein

01:47:10.310 --> 01:47:10.870
oder habt ihr da

01:47:10.870 --> 01:47:10.930
irgendwie,

01:47:10.950 --> 01:47:11.610
irgendwelche, äh,

01:47:11.610 --> 01:47:13.290
Secret-Vaults oder, äh,

01:47:13.290 --> 01:47:14.810
es gibt ja noch ganz andere Sachen.

01:47:14.810 --> 01:47:15.270
Also man muss ja

01:47:15.270 --> 01:47:15.910
irgendwem vertrauen.

01:47:15.910 --> 01:47:16.550
Weiß ich nicht,

01:47:16.550 --> 01:47:17.670
ob ich das jetzt hier sagen will.

01:47:17.670 --> 01:47:20.250
Doch,

01:47:20.250 --> 01:47:21.010
und Secrets liegen

01:47:21.010 --> 01:47:21.850
auf einem offenen

01:47:21.850 --> 01:47:23.270
S3-Packet,

01:47:23.270 --> 01:47:24.250
wo nur er

01:47:24.250 --> 01:47:24.990
die ID kennt.

01:47:24.990 --> 01:47:25.950
Ja.

01:47:25.950 --> 01:47:26.530
Nee,

01:47:26.530 --> 01:47:27.250
verschlüsselt im Git.

01:47:27.250 --> 01:47:29.110
Gut,

01:47:29.110 --> 01:47:29.490
das sind zwei

01:47:29.490 --> 01:47:30.370
unterschiedliche Probleme, ne?

01:47:30.370 --> 01:47:30.610
Einmal,

01:47:30.610 --> 01:47:32.430
wie hält man die Secrets,

01:47:32.430 --> 01:47:33.010
äh,

01:47:33.010 --> 01:47:34.990
vor,

01:47:34.990 --> 01:47:35.710
bevor man

01:47:35.710 --> 01:47:36.290
deployed hat,

01:47:36.290 --> 01:47:36.710
sozusagen?

01:47:36.710 --> 01:47:38.030
Äh,

01:47:38.030 --> 01:47:39.130
und wie hält man

01:47:39.130 --> 01:47:40.370
die Secrets eigentlich,

01:47:40.370 --> 01:47:40.690
wenn,

01:47:40.870 --> 01:47:41.410
deployed ist,

01:47:41.410 --> 01:47:41.930
weil die,

01:47:41.930 --> 01:47:42.250
die,

01:47:42.250 --> 01:47:43.030
die Applikation,

01:47:43.030 --> 01:47:43.330
ja,

01:47:43.330 --> 01:47:43.750
irgendwie,

01:47:43.750 --> 01:47:44.590
sie kennen muss?

01:47:44.590 --> 01:47:45.750
Und dafür können sie ja

01:47:45.750 --> 01:47:46.470
nicht mehr verschlüsselt sein.

01:47:46.470 --> 01:47:46.490
Ja,

01:47:46.490 --> 01:47:47.630
aber das ist doch das DRM-Problem,

01:47:47.630 --> 01:47:47.790
oder?

01:47:47.790 --> 01:47:48.930
Du kannst eine Nachricht

01:47:48.930 --> 01:47:49.710
nicht vor dem Empfänger

01:47:49.710 --> 01:47:50.490
verschlüsseln.

01:47:50.490 --> 01:47:50.810
Genau,

01:47:50.810 --> 01:47:51.130
genau,

01:47:51.130 --> 01:47:51.430
genau.

01:47:51.430 --> 01:47:52.490
Aber der Empfänger

01:47:52.490 --> 01:47:53.030
muss sie auch irgendwie

01:47:53.030 --> 01:47:53.370
kriegen,

01:47:53.370 --> 01:47:54.010
also wie,

01:47:54.010 --> 01:47:54.210
ja.

01:47:54.210 --> 01:47:54.990
Ich benutze ja gerade

01:47:54.990 --> 01:47:56.290
einen proprietären Service

01:47:56.290 --> 01:47:56.550
für,

01:47:56.550 --> 01:47:57.590
den ich ganz gut finde.

01:47:57.590 --> 01:47:57.850
Aha.

01:47:57.850 --> 01:47:58.590
Doppler.

01:47:58.590 --> 01:47:59.610
Doppler.

01:47:59.610 --> 01:48:00.010
Und,

01:48:00.010 --> 01:48:00.830
also natürlich kennen die dann

01:48:00.830 --> 01:48:01.610
halt auch die ganzen Sachen,

01:48:01.610 --> 01:48:02.550
aber die machen sowas wie

01:48:02.550 --> 01:48:03.430
Automatic Rotation

01:48:03.430 --> 01:48:03.870
oder sowas,

01:48:03.870 --> 01:48:04.490
da musst du nicht mehr

01:48:04.490 --> 01:48:05.770
anfassen und du kannst halt

01:48:05.770 --> 01:48:06.410
für jeden Entwickler

01:48:06.410 --> 01:48:07.710
irgendwie so eigene Sachen

01:48:07.710 --> 01:48:08.170
haben,

01:48:08.170 --> 01:48:09.090
da musst du einfach nur noch

01:48:09.090 --> 01:48:09.230
sagen,

01:48:09.230 --> 01:48:10.270
Doppler Lock-In,

01:48:10.270 --> 01:48:11.070
Doppler Setup fertig

01:48:11.070 --> 01:48:12.270
für so ein Projekt

01:48:12.270 --> 01:48:13.690
oder halt Doppler Use

01:48:13.690 --> 01:48:14.190
und der schreibt dann,

01:48:14.190 --> 01:48:14.570
wenn du willst,

01:48:14.570 --> 01:48:15.330
seine Dot-Amps rein

01:48:15.330 --> 01:48:15.690
oder so.

01:48:15.690 --> 01:48:16.690
Aber,

01:48:16.690 --> 01:48:17.270
Moment,

01:48:17.270 --> 01:48:18.710
aber da liegen dann

01:48:18.710 --> 01:48:20.130
deine Secrets getrennt

01:48:20.130 --> 01:48:20.830
von allem anderen,

01:48:20.830 --> 01:48:21.950
also auch von deinen

01:48:21.950 --> 01:48:23.510
Repositories

01:48:23.510 --> 01:48:24.670
und deine Produktionsmaschine

01:48:24.670 --> 01:48:25.730
geht halt auch zu Doppler

01:48:25.730 --> 01:48:26.790
und zieht da die Secrets

01:48:26.790 --> 01:48:28.090
und schreibt sie nochmal

01:48:28.090 --> 01:48:29.450
irgendwo lokal hin

01:48:29.450 --> 01:48:30.450
oder holt sich die einfach?

01:48:30.450 --> 01:48:31.810
Oder zumindest in den Haupt.

01:48:31.810 --> 01:48:32.470
Oder du musst auch irgendwie

01:48:32.470 --> 01:48:33.470
auf Doppler zugreifen.

01:48:33.470 --> 01:48:33.690
Genau,

01:48:33.690 --> 01:48:34.090
du musst halt,

01:48:34.090 --> 01:48:34.430
du musst,

01:48:34.430 --> 01:48:34.870
dieses Secrets

01:48:34.870 --> 01:48:35.930
mit dem Token,

01:48:35.930 --> 01:48:36.750
das Token,

01:48:36.750 --> 01:48:38.210
musst du aber die Applikation

01:48:38.210 --> 01:48:38.410
irgendwie kennen.

01:48:38.410 --> 01:48:39.430
Das ist dein Master Key.

01:48:39.430 --> 01:48:40.390
Ja,

01:48:40.390 --> 01:48:40.850
wenn ich den kenne,

01:48:40.850 --> 01:48:41.290
dann kann ich

01:48:41.290 --> 01:48:42.730
alle deine Secrets abgreifen.

01:48:42.730 --> 01:48:43.330
Ja.

01:48:43.330 --> 01:48:45.830
Wie schreibst du

01:48:45.830 --> 01:48:46.790
dieses Token?

01:48:46.790 --> 01:48:47.690
Du machst vorher

01:48:47.690 --> 01:48:48.290
ein Hissignor

01:48:48.290 --> 01:48:49.130
und schreibst das dann

01:48:49.130 --> 01:48:49.870
ins Deployment-Skript.

01:48:49.870 --> 01:48:53.310
Du hast ein sekundäres System,

01:48:53.310 --> 01:48:54.250
wo dieses Token drin ist.

01:48:54.250 --> 01:48:54.750
Genau,

01:48:54.750 --> 01:48:55.130
eben,

01:48:55.130 --> 01:48:56.050
weil wenn du das schon

01:48:56.050 --> 01:48:56.670
ein System hast,

01:48:56.670 --> 01:48:57.430
um dieses Secret,

01:48:57.430 --> 01:48:58.350
was sehr wichtig ist,

01:48:58.350 --> 01:48:59.490
zu deployen,

01:48:59.490 --> 01:49:00.330
warum deployst du denn nicht

01:49:00.330 --> 01:49:01.310
einfach auch alle anderen Sachen damit?

01:49:01.310 --> 01:49:03.190
wo ist jetzt der Vorteil?

01:49:04.430 --> 01:49:06.270
also du musst ja,

01:49:06.270 --> 01:49:07.250
also du kannst das ja

01:49:07.250 --> 01:49:07.770
irgendwie mit,

01:49:07.770 --> 01:49:11.350
also ich muss gerade

01:49:11.350 --> 01:49:11.750
kurz überlegen,

01:49:11.750 --> 01:49:12.530
also wo ist das Problem?

01:49:12.530 --> 01:49:13.170
Ja,

01:49:13.170 --> 01:49:13.870
also ja,

01:49:13.870 --> 01:49:15.230
wie willst du die anderen Sachen

01:49:15.230 --> 01:49:16.330
da reinbekommen dann?

01:49:16.330 --> 01:49:18.030
Ja.

01:49:18.030 --> 01:49:19.170
Also wenn ich jetzt

01:49:19.170 --> 01:49:19.990
so ein Deploy-Token hab,

01:49:19.990 --> 01:49:20.130
ne,

01:49:20.130 --> 01:49:21.250
das halt dann einfach so zugreift

01:49:21.250 --> 01:49:22.150
auf die ganzen anderen Keys,

01:49:22.150 --> 01:49:23.030
die da irgendwo rumliegen

01:49:23.030 --> 01:49:23.390
und die vielleicht

01:49:23.390 --> 01:49:24.250
auch rotated sind oder was,

01:49:24.250 --> 01:49:26.130
das ist ein Token,

01:49:26.130 --> 01:49:26.350
okay,

01:49:26.350 --> 01:49:28.010
dann hab ich lesende Zugriff

01:49:28.010 --> 01:49:29.190
auf die ganzen Geheimnisse,

01:49:29.190 --> 01:49:32.890
aber wenn du die sonst

01:49:32.890 --> 01:49:33.450
eh nicht hinschreibst,

01:49:33.450 --> 01:49:33.870
weil ich verstehe

01:49:33.870 --> 01:49:34.410
den Unterschied nicht,

01:49:34.430 --> 01:49:34.470
dann muss ich,

01:49:34.470 --> 01:49:35.250
ne,

01:49:35.250 --> 01:49:35.570
ich auch nicht,

01:49:35.570 --> 01:49:37.470
also mein Punkt wäre halt gerade,

01:49:37.470 --> 01:49:38.050
wenn du eine,

01:49:38.050 --> 01:49:39.710
dieses Ding muss ja auch geheim bleiben

01:49:39.710 --> 01:49:42.570
und wenn du einen Weg haben musst,

01:49:42.570 --> 01:49:43.590
wie du dieses Geheimnis

01:49:43.590 --> 01:49:44.930
deiner Applikation mitteilst,

01:49:44.930 --> 01:49:46.150
warum kannst du diesen Weg,

01:49:46.150 --> 01:49:46.450
und geheim hältst,

01:49:46.450 --> 01:49:46.910
und geheim,

01:49:46.910 --> 01:49:47.310
ja genau,

01:49:47.310 --> 01:49:48.490
warum kannst du diesen Weg

01:49:48.490 --> 01:49:48.910
nicht benutzen,

01:49:48.910 --> 01:49:49.970
um alle anderen Geheimnisse,

01:49:49.970 --> 01:49:50.730
die du halt auch hast,

01:49:50.730 --> 01:49:52.270
der Applikation auch mitzuteilen,

01:49:52.270 --> 01:49:52.530
weil,

01:49:52.530 --> 01:49:53.970
ja,

01:49:53.970 --> 01:49:56.650
musst du die ja eh haben.

01:49:56.650 --> 01:49:57.450
Es ist dieser Weg

01:49:57.450 --> 01:49:58.030
oder machst du das einmal

01:49:58.030 --> 01:49:58.670
beim Setup?

01:49:58.670 --> 01:50:02.870
Manuelle Eingabe einmal

01:50:02.870 --> 01:50:03.710
irgendwie mit HIST?

01:50:03.710 --> 01:50:03.950
Ja,

01:50:03.950 --> 01:50:04.410
man kann sich ja auch

01:50:04.410 --> 01:50:04.730
ändern,

01:50:04.730 --> 01:50:05.290
also,

01:50:05.290 --> 01:50:07.410
also du hast eigentlich

01:50:07.410 --> 01:50:08.590
nur die Menge der Secrets,

01:50:08.590 --> 01:50:10.190
die du mitgeben möchtest,

01:50:10.190 --> 01:50:11.850
verringert.

01:50:11.850 --> 01:50:12.010
Ja,

01:50:12.010 --> 01:50:12.470
aber,

01:50:12.470 --> 01:50:12.850
na,

01:50:12.850 --> 01:50:13.670
ich verlege gerade.

01:50:13.670 --> 01:50:15.110
Du hast die Secrets komprimiert.

01:50:15.110 --> 01:50:16.210
Also du kannst halt zum Beispiel

01:50:16.210 --> 01:50:18.170
jetzt GitHub irgendwie sagen,

01:50:18.170 --> 01:50:18.990
bei den Secrets steht es drin,

01:50:18.990 --> 01:50:19.570
da könntest du aber auch

01:50:19.570 --> 01:50:19.830
dann sagen,

01:50:19.830 --> 01:50:20.310
du sagst dann halt,

01:50:20.310 --> 01:50:20.470
okay,

01:50:20.470 --> 01:50:21.430
dann machst du alle bei Secrets,

01:50:21.430 --> 01:50:22.290
bei GitHub Secrets.

01:50:22.290 --> 01:50:22.970
Ja.

01:50:22.970 --> 01:50:24.970
Ja.

01:50:24.970 --> 01:50:26.990
Okay,

01:50:26.990 --> 01:50:27.710
ich wollte ja gar nicht,

01:50:27.710 --> 01:50:28.930
es ist halt einfach nur so,

01:50:28.930 --> 01:50:29.870
es ist ein blödes Problem,

01:50:29.870 --> 01:50:30.050
ne,

01:50:30.050 --> 01:50:30.410
aber ich,

01:50:30.410 --> 01:50:31.650
also was ich tatsächlich mache,

01:50:31.650 --> 01:50:32.010
ist ich,

01:50:32.010 --> 01:50:33.190
oh doof,

01:50:33.190 --> 01:50:34.030
das ist echt doof,

01:50:34.030 --> 01:50:34.390
das zu sagen,

01:50:34.390 --> 01:50:34.630
ne,

01:50:34.630 --> 01:50:34.950
aber.

01:50:34.950 --> 01:50:37.070
Don't do it,

01:50:37.070 --> 01:50:38.150
erzähl es mir gleich rein,

01:50:38.150 --> 01:50:38.910
Geheimnis von später.

01:50:38.910 --> 01:50:39.170
Ich habe,

01:50:39.170 --> 01:50:40.030
ich habe Sachen oft in,

01:50:40.030 --> 01:50:40.890
in Voice drin,

01:50:40.890 --> 01:50:42.190
drin liegen und dann,

01:50:42.190 --> 01:50:43.630
schreibe ich das halt tatsächlich

01:50:43.630 --> 01:50:44.310
in so einen Endfile

01:50:44.310 --> 01:50:45.810
und dann hat die Applikation das.

01:50:45.810 --> 01:50:46.890
Der Nachteil,

01:50:46.890 --> 01:50:47.890
also der Vorteil dabei ist,

01:50:47.890 --> 01:50:49.030
es ist eigentlich total einfach,

01:50:49.030 --> 01:50:50.130
ich muss mir keine Gedanken machen

01:50:50.130 --> 01:50:51.210
über irgendwelche externen Services

01:50:51.210 --> 01:50:51.510
oder so,

01:50:51.510 --> 01:50:52.250
ich habe auch kein System

01:50:52.250 --> 01:50:53.490
neben dem Repository,

01:50:53.490 --> 01:50:54.750
es ist alles im Repository drin,

01:50:54.750 --> 01:50:56.070
aber halt verschlüsselt.

01:50:56.070 --> 01:50:57.070
So,

01:50:57.070 --> 01:50:57.430
zack.

01:50:57.430 --> 01:50:58.010
Genau,

01:50:58.010 --> 01:50:58.910
aber der,

01:50:58.910 --> 01:50:59.190
der,

01:50:59.190 --> 01:50:59.270
der,

01:50:59.270 --> 01:51:00.550
die Nachteile sind,

01:51:00.550 --> 01:51:01.550
äh,

01:51:01.550 --> 01:51:01.910
tja,

01:51:01.910 --> 01:51:03.510
wenn ein Angreifer irgendwie

01:51:03.510 --> 01:51:04.670
in meine Applikation reinkommt,

01:51:04.670 --> 01:51:04.930
dann.

01:51:04.930 --> 01:51:05.070
Ja,

01:51:05.070 --> 01:51:05.990
der muss auch da entschlüsseln halt,

01:51:05.990 --> 01:51:06.590
einfach dann.

01:51:06.590 --> 01:51:06.850
Nein,

01:51:06.850 --> 01:51:07.070
nein,

01:51:07.070 --> 01:51:07.890
der muss nichts entschlüsseln,

01:51:07.890 --> 01:51:08.010
das,

01:51:08.010 --> 01:51:09.050
das ist halt das,

01:51:09.050 --> 01:51:09.690
was ein Angreifer dann.

01:51:09.690 --> 01:51:10.770
In der Applikation ist es ja.

01:51:10.770 --> 01:51:11.610
In der Applikation.

01:51:11.610 --> 01:51:12.490
Aber das ist ja immer so.

01:51:12.490 --> 01:51:13.090
Ja,

01:51:13.090 --> 01:51:14.550
aber er hat es halt besonders einfach,

01:51:14.550 --> 01:51:14.890
weil,

01:51:14.890 --> 01:51:15.310
äh,

01:51:15.310 --> 01:51:15.990
er muss einfach nur,

01:51:15.990 --> 01:51:16.750
er nimmt einmal

01:51:16.750 --> 01:51:18.510
das komplette Environment,

01:51:18.510 --> 01:51:19.390
ne,

01:51:19.390 --> 01:51:20.530
macht da Jason raus

01:51:20.530 --> 01:51:21.550
und schickt es an irgendeinen,

01:51:21.550 --> 01:51:23.250
ich hier alle Secrets in,

01:51:23.250 --> 01:51:23.570
äh,

01:51:23.570 --> 01:51:24.910
alle Environments von allen irgendwie

01:51:24.910 --> 01:51:25.770
stormen.

01:51:25.770 --> 01:51:26.610
Und dann hinterher guckt er,

01:51:26.610 --> 01:51:28.010
ob da vielleicht ein ABS-Key drin war

01:51:28.010 --> 01:51:28.430
oder sowas.

01:51:33.510 --> 01:51:33.870
Äh,

01:51:33.870 --> 01:51:34.830
ja,

01:51:34.830 --> 01:51:35.310
aber,

01:51:35.310 --> 01:51:35.870
genau,

01:51:35.870 --> 01:51:36.090
also,

01:51:36.090 --> 01:51:36.770
aber das würde ich sagen,

01:51:36.770 --> 01:51:37.590
dass der Nachteil ist,

01:51:37.590 --> 01:51:38.070
es ist halt besonders,

01:51:38.070 --> 01:51:38.430
also ich,

01:51:38.430 --> 01:51:39.170
ich werde,

01:51:39.170 --> 01:51:40.690
wenn jemand meine Applikation schafft

01:51:40.690 --> 01:51:41.130
aufzumachen,

01:51:41.130 --> 01:51:41.430
dann

01:51:41.430 --> 01:51:43.530
habe ich ein Problem.

01:51:43.530 --> 01:51:43.730
Ja gut,

01:51:43.730 --> 01:51:44.090
aber genau.

01:51:44.090 --> 01:51:45.170
Er hat ja alle Secrets sofort.

01:51:45.170 --> 01:51:46.670
Also Environments macht ja auch nichts anderes

01:51:46.670 --> 01:51:47.490
als aus irgendeiner File

01:51:47.490 --> 01:51:48.370
oder irgendwie anders die Sachen reinzuschreiben.

01:51:48.370 --> 01:51:50.810
Man könnte es ja auch anders machen.

01:51:50.810 --> 01:51:52.070
Man könnte ja auch sowas machen wie,

01:51:52.070 --> 01:51:53.150
äh,

01:51:53.150 --> 01:51:55.070
man packt es in ein

01:51:55.070 --> 01:51:56.110
Modul

01:51:56.110 --> 01:51:57.270
mit komischem Namen,

01:51:57.270 --> 01:51:57.830
äh,

01:51:57.830 --> 01:51:58.170
irgendwie

01:51:58.170 --> 01:51:59.750
und schreibt das halt als Python-Code

01:51:59.750 --> 01:52:00.170
irgendwo hin.

01:52:00.170 --> 01:52:02.170
Security by Obscurity.

01:52:02.170 --> 01:52:02.490
Und,

01:52:02.490 --> 01:52:03.130
äh,

01:52:03.510 --> 01:52:03.850
versteht den Kram,

01:52:03.850 --> 01:52:04.030
ja,

01:52:04.030 --> 01:52:04.650
also,

01:52:04.650 --> 01:52:05.050
sag mal so,

01:52:05.050 --> 01:52:06.410
wirklich helfen tut es nicht,

01:52:06.410 --> 01:52:07.650
weil du kommst immer noch in den Kram ran,

01:52:07.650 --> 01:52:09.970
aber die automatischen Dinge,

01:52:09.970 --> 01:52:11.430
die halt über irgendwie eine,

01:52:11.430 --> 01:52:13.330
es wird eine Sicherheitslücke in Django gefunden

01:52:13.330 --> 01:52:13.770
und es,

01:52:13.770 --> 01:52:14.530
alle,

01:52:14.530 --> 01:52:15.570
es läuft über alle Dinge,

01:52:15.570 --> 01:52:16.310
wo man erkennen kann,

01:52:16.310 --> 01:52:16.490
oh,

01:52:16.490 --> 01:52:16.990
das ist ein Django,

01:52:16.990 --> 01:52:17.990
läuft das halt drüber

01:52:17.990 --> 01:52:19.910
und holt alle Environments

01:52:19.910 --> 01:52:21.070
und damit alle Secrets.

01:52:21.070 --> 01:52:21.650
Das ist offensichtlich, ja.

01:52:21.650 --> 01:52:22.730
Das wird da nicht funktionieren.

01:52:22.730 --> 01:52:23.170
Das ist genauso,

01:52:23.170 --> 01:52:24.890
wenn ich den Standard-SSH-Port

01:52:24.890 --> 01:52:26.850
auf 2224 ändere,

01:52:26.850 --> 01:52:27.510
damit das nicht,

01:52:27.510 --> 01:52:27.670
ja,

01:52:27.670 --> 01:52:27.950
okay,

01:52:27.950 --> 01:52:29.490
es ist Security by Obscurity so ein bisschen.

01:52:29.490 --> 01:52:31.190
Was du dann eigentlich machen müsstest,

01:52:31.190 --> 01:52:31.370
ist,

01:52:31.490 --> 01:52:33.490
dass du irgendwelche Capabilities hast,

01:52:33.490 --> 01:52:33.790
also,

01:52:33.790 --> 01:52:34.990
dass du die Datenfangverbindung

01:52:34.990 --> 01:52:37.330
nicht mehr direkt über Django machst,

01:52:37.330 --> 01:52:39.050
wo das Datenbankpasswort drinsteht,

01:52:39.050 --> 01:52:39.250
sondern,

01:52:39.250 --> 01:52:40.690
dass es da einen getrennten Service gibt,

01:52:40.690 --> 01:52:42.170
der ein anderer Benutzer ist,

01:52:42.170 --> 01:52:43.410
der eine andere Technologie hat,

01:52:43.410 --> 01:52:45.630
den du nicht automatisch mit aufgemacht hast,

01:52:45.630 --> 01:52:47.950
der nur von dem Django-System erreichbar ist,

01:52:47.950 --> 01:52:48.850
wo du quasi sagen kannst,

01:52:48.850 --> 01:52:50.330
ich möchte jetzt eine Datenbankverbindung haben.

01:52:50.330 --> 01:52:51.430
Aber,

01:52:51.430 --> 01:52:53.570
das ist ja dann auch schon wieder so viel Aufwand.

01:52:53.570 --> 01:52:53.810
Ja,

01:52:53.810 --> 01:52:53.990
ja,

01:52:53.990 --> 01:52:54.150
genau.

01:52:54.150 --> 01:52:54.310
Ja,

01:52:54.310 --> 01:52:54.810
das ist halt.

01:52:54.810 --> 01:52:56.030
Ja,

01:52:56.030 --> 01:52:56.850
ich überlege auch noch was.

01:52:56.850 --> 01:52:58.190
Andererseits vielleicht fehlt da eine Standardlösung.

01:52:58.190 --> 01:53:01.470
Vielleicht fehlt da eine Security-Onion,

01:53:01.490 --> 01:53:03.250
um Django außenrum.

01:53:03.250 --> 01:53:04.690
Ja,

01:53:04.690 --> 01:53:05.270
ich weiß es nicht.

01:53:05.270 --> 01:53:05.890
Aber das,

01:53:05.890 --> 01:53:07.250
ich überlege immer noch was für diesen

01:53:07.250 --> 01:53:08.030
profitären Service spricht,

01:53:08.030 --> 01:53:08.870
weil das sind halt verschiedene Sachen,

01:53:08.870 --> 01:53:09.810
die halt dann davon getrennt sind,

01:53:09.810 --> 01:53:10.930
die vielleicht gar nicht so schlecht sind,

01:53:10.930 --> 01:53:11.150
weil,

01:53:11.150 --> 01:53:12.990
wenn ich halt aufs Repo zugreifen kann

01:53:12.990 --> 01:53:14.050
oder auf die SQL-Server komme,

01:53:14.050 --> 01:53:15.230
ich dann trotzdem an die SQLs nicht dran.

01:53:15.230 --> 01:53:15.870
Also,

01:53:15.870 --> 01:53:16.670
irgendwie,

01:53:16.670 --> 01:53:17.090
ja,

01:53:17.090 --> 01:53:17.490
ist halt die Frage,

01:53:17.490 --> 01:53:18.710
wo liegt denn dieser Key zum

01:53:18.710 --> 01:53:20.530
Produktionsdeployment?

01:53:20.530 --> 01:53:21.710
Dann kann man ja noch per Netzwerk

01:53:21.710 --> 01:53:22.730
irgendwo davon und so.

01:53:22.730 --> 01:53:23.070
Na,

01:53:23.070 --> 01:53:25.010
ich muss mir nochmal genau überlegen,

01:53:25.010 --> 01:53:26.430
was davon der coole Vorteil ist.

01:53:26.430 --> 01:53:27.410
Also,

01:53:27.410 --> 01:53:27.970
weil alternativ,

01:53:27.970 --> 01:53:29.190
die anderen Lösungen finde ich alle

01:53:29.190 --> 01:53:30.550
nicht so convenient

01:53:30.550 --> 01:53:31.070
und

01:53:31.070 --> 01:53:31.590
insbesondere,

01:53:31.590 --> 01:53:31.830
also,

01:53:31.830 --> 01:53:32.630
es gibt halt diesen

01:53:32.630 --> 01:53:33.790
Level von,

01:53:33.790 --> 01:53:34.970
ich habe jetzt DevSecrets

01:53:34.970 --> 01:53:35.890
für den einen Entwickler,

01:53:35.890 --> 01:53:37.170
die anderen als die anderen DevSecrets.

01:53:37.170 --> 01:53:38.030
Ich habe noch SessionSecrets,

01:53:38.030 --> 01:53:38.710
die stehen alle drin.

01:53:38.710 --> 01:53:40.030
Die kannst du einfach mit einem

01:53:40.030 --> 01:53:40.730
Kommando aufsetzen,

01:53:40.730 --> 01:53:41.170
das funktioniert,

01:53:41.170 --> 01:53:42.010
das wird eingetragen

01:53:42.010 --> 01:53:42.710
und es ist nutzbar,

01:53:42.710 --> 01:53:43.570
es ist übertragbar.

01:53:43.570 --> 01:53:44.430
Du kannst einfach,

01:53:44.430 --> 01:53:45.610
wenn irgendwie ein Entwickler aussteigt,

01:53:45.610 --> 01:53:46.530
kannst du einfach den Account

01:53:46.530 --> 01:53:47.610
da rausnehmen oder so.

01:53:47.610 --> 01:53:48.710
Das sind alles Sachen,

01:53:48.710 --> 01:53:49.470
die ziemlich easy sind

01:53:49.470 --> 01:53:50.410
und du kannst automatisch dann halt

01:53:50.410 --> 01:53:51.150
so Sachen migrieren und so.

01:53:51.150 --> 01:53:51.910
Das ist schon nice.

01:53:51.910 --> 01:53:53.350
Und das hast du zum Beispiel

01:53:53.350 --> 01:53:54.510
alles bei diesen anderen Walls

01:53:54.510 --> 01:53:55.030
nicht mit drin,

01:53:55.030 --> 01:53:55.970
da musst du alles selber anfassen.

01:53:55.970 --> 01:53:59.090
Ja,

01:53:59.090 --> 01:53:59.590
okay.

01:54:01.070 --> 01:54:01.670
Okay,

01:54:01.670 --> 01:54:03.390
was ist denn dein Pick?

01:54:03.390 --> 01:54:05.730
Mein Pick ist ein Artikel

01:54:05.730 --> 01:54:07.490
mit dem Titel

01:54:07.490 --> 01:54:09.710
An Interactive Intro to CRDTs.

01:54:09.710 --> 01:54:12.490
Ich bin ja ein großer Fan von CRDTs,

01:54:12.490 --> 01:54:15.670
also Concurrent Replicated Data Types.

01:54:15.670 --> 01:54:17.790
Wie sagt ihr dieses Wort?

01:54:17.790 --> 01:54:19.250
CRDT.

01:54:19.250 --> 01:54:19.790
WTF?

01:54:19.790 --> 01:54:21.390
Everpad?

01:54:21.390 --> 01:54:23.670
Also ich sage,

01:54:23.670 --> 01:54:25.150
keine Ahnung,

01:54:25.150 --> 01:54:26.070
Cravities.

01:54:26.070 --> 01:54:27.230
Cravities,

01:54:27.230 --> 01:54:27.610
ja.

01:54:27.610 --> 01:54:29.130
Also,

01:54:29.130 --> 01:54:31.050
Conflict-Free Replication,

01:54:31.070 --> 01:54:33.190
Resolution-Dependent Data Types,

01:54:33.190 --> 01:54:33.470
irgendwie so.

01:54:33.470 --> 01:54:38.930
Wo du Datenstrukturen hast,

01:54:38.930 --> 01:54:40.070
die sich selbst wieder

01:54:40.070 --> 01:54:42.790
in einen synchronen Zustand bringen.

01:54:42.790 --> 01:54:44.710
Also sowas wie Etherpad

01:54:44.710 --> 01:54:45.630
oder Hedge-Doc

01:54:45.630 --> 01:54:47.310
oder Google Documents,

01:54:47.310 --> 01:54:49.790
wo zwei Leute gleichzeitig bearbeiten können

01:54:49.790 --> 01:54:51.310
und am Ende ist ein Dokument da,

01:54:51.310 --> 01:54:52.810
was bei beiden gleichzeitig.

01:54:52.810 --> 01:54:53.850
Oh ja,

01:54:53.850 --> 01:54:54.270
Google Wave.

01:54:54.270 --> 01:54:55.430
Google Wave war großartig.

01:54:55.430 --> 01:54:56.970
Live Share.

01:54:56.970 --> 01:54:58.170
Ja,

01:54:58.170 --> 01:55:00.590
und da gibt es viele Anwendungsfälle dafür

01:55:00.590 --> 01:55:00.630
und diese Anwendungsfälle,

01:55:00.630 --> 01:55:01.470
und diese Artikel

01:55:01.470 --> 01:55:03.630
ist eben eine interaktive Erklärung,

01:55:03.630 --> 01:55:06.910
wie diese Datentypen funktionieren

01:55:06.910 --> 01:55:08.770
und wie man die umsetzen kann.

01:55:08.770 --> 01:55:11.210
Und weil ich CRDTs großartig finde

01:55:11.210 --> 01:55:12.110
und jeder sollte die verwenden

01:55:12.110 --> 01:55:12.470
und überall

01:55:12.470 --> 01:55:13.570
und ich kann es aber auch nicht,

01:55:13.570 --> 01:55:17.330
hat mir das sehr weitergeholfen

01:55:17.330 --> 01:55:18.570
und ich finde das sehr großartig.

01:55:18.570 --> 01:55:19.390
Und es ist auch schön so

01:55:19.390 --> 01:55:20.550
mit eben interaktiv.

01:55:20.550 --> 01:55:21.270
Also du kannst dann,

01:55:21.270 --> 01:55:23.050
hast dann zwei Malfenster

01:55:23.050 --> 01:55:24.050
und kannst im einen malen

01:55:24.050 --> 01:55:24.850
und kannst im anderen malen

01:55:24.850 --> 01:55:25.510
und kannst auch zwischendurch

01:55:25.510 --> 01:55:26.390
die Verbindung abschalten

01:55:26.390 --> 01:55:26.810
und dann sehen,

01:55:26.810 --> 01:55:27.750
wie die sich synchronisieren

01:55:27.750 --> 01:55:29.050
und das ist sehr,

01:55:29.050 --> 01:55:29.730
sehr schön gemacht

01:55:29.730 --> 01:55:30.610
und sehr anschaulich.

01:55:30.610 --> 01:55:31.830
Das muss ich unbedingt mal spielen.

01:55:31.830 --> 01:55:32.630
Das ist sehr gut.

01:55:32.630 --> 01:55:33.950
Das empfehle ich jedem.

01:55:33.950 --> 01:55:35.090
Deshalb ist das mein Pick

01:55:35.090 --> 01:55:36.770
von dieser Episode.

01:55:36.770 --> 01:55:39.150
Ja,

01:55:39.150 --> 01:55:40.230
ich hatte ja letztes Mal

01:55:40.230 --> 01:55:42.110
etwas gepickt,

01:55:42.110 --> 01:55:43.490
was ich in der Episode davor

01:55:43.490 --> 01:55:44.710
schon mal gepickt habe.

01:55:44.710 --> 01:55:46.590
Du musst jetzt eigentlich zwei.

01:55:46.590 --> 01:55:48.070
Es war auch ein sehr leckerer Pick.

01:55:48.070 --> 01:55:49.830
Daher dachte ich mir heute,

01:55:49.830 --> 01:55:50.130
okay,

01:55:50.130 --> 01:55:50.850
mache ich mal etwas,

01:55:50.850 --> 01:55:51.630
was ich noch nicht gepickt habe

01:55:51.630 --> 01:55:52.750
und etwas,

01:55:52.750 --> 01:55:53.830
das absichtlich besonders

01:55:53.830 --> 01:55:55.370
unappetitlich und unverdrohlich

01:55:55.370 --> 01:55:55.790
daherkommt.

01:55:55.790 --> 01:55:57.890
Und das ist,

01:55:57.890 --> 01:55:59.310
ich weiß nicht,

01:55:59.310 --> 01:55:59.850
ob ihr das kennt.

01:55:59.850 --> 01:56:00.550
Man sollte,

01:56:00.590 --> 01:56:01.610
man sollte es aber trotzdem

01:56:01.610 --> 01:56:02.730
mal konsumieren.

01:56:02.730 --> 01:56:04.450
Nämlich

01:56:04.450 --> 01:56:07.150
das W-Bock.

01:56:07.150 --> 01:56:08.310
Oh,

01:56:08.310 --> 01:56:09.710
das Software Engineering

01:56:09.710 --> 01:56:10.670
Body of Knowledge.

01:56:10.670 --> 01:56:11.070
Genau.

01:56:11.070 --> 01:56:12.110
Haben wir doch alle

01:56:12.110 --> 01:56:12.910
schon mal konsumiert,

01:56:12.910 --> 01:56:13.630
sonst wären wir doch gar

01:56:13.630 --> 01:56:14.330
keine Software Engineer.

01:56:14.330 --> 01:56:15.690
Also,

01:56:15.690 --> 01:56:17.210
ja,

01:56:17.210 --> 01:56:17.970
ich habe es mir jetzt auch

01:56:17.970 --> 01:56:18.990
irgendwie mal,

01:56:18.990 --> 01:56:20.190
es sind auch nicht viele Seiten.

01:56:20.190 --> 01:56:21.910
Ich bin eh in der Ticketschubse

01:56:21.910 --> 01:56:22.430
Code-Monkey

01:56:22.430 --> 01:56:23.170
und da gibt es ja andere noch.

01:56:23.170 --> 01:56:23.470
Ja.

01:56:23.470 --> 01:56:24.430
Es ist,

01:56:24.430 --> 01:56:25.910
es ist ein bisschen kompliziert

01:56:25.910 --> 01:56:26.350
reinzukommen.

01:56:26.350 --> 01:56:26.890
Man muss halt irgendwie

01:56:26.890 --> 01:56:27.730
so ein Formular ausfüllen

01:56:27.730 --> 01:56:28.210
und dann kann man,

01:56:28.210 --> 01:56:29.130
kriegt man einen Download-Link

01:56:29.130 --> 01:56:29.430
geschickt,

01:56:29.430 --> 01:56:30.570
aber genau,

01:56:30.570 --> 01:56:31.230
und dann kann man,

01:56:31.230 --> 01:56:32.030
da steht halt,

01:56:32.030 --> 01:56:32.970
da sind halt alle solche,

01:56:32.970 --> 01:56:33.950
was ist eigentlich,

01:56:33.950 --> 01:56:34.890
wenn man sich diese Fragen,

01:56:34.890 --> 01:56:35.550
die wir ja auch schon

01:56:35.550 --> 01:56:36.430
öfter diskutiert haben,

01:56:36.430 --> 01:56:36.930
was sind eigentlich

01:56:36.930 --> 01:56:37.690
die unterschiedlichen Arten

01:56:37.690 --> 01:56:38.790
von Tests,

01:56:38.790 --> 01:56:40.250
irgendwie Unit Integration

01:56:40.250 --> 01:56:40.850
oder sonst irgendwas,

01:56:40.850 --> 01:56:42.510
da wird das alles definiert.

01:56:42.510 --> 01:56:43.350
Und,

01:56:43.350 --> 01:56:44.690
also ob das jetzt stimmt,

01:56:44.690 --> 01:56:45.770
Da wird einfach die Wahrheit

01:56:45.770 --> 01:56:46.810
festgelegt.

01:56:46.810 --> 01:56:46.970
Genau,

01:56:46.970 --> 01:56:48.030
aber sozusagen,

01:56:48.030 --> 01:56:49.150
um diese Diskussion zu beenden,

01:56:49.150 --> 01:56:49.570
kann man immer sagen,

01:56:49.570 --> 01:56:49.710
ja,

01:56:49.710 --> 01:56:51.250
ich verwende jetzt die Definition

01:56:51.250 --> 01:56:51.750
hier aus dem Ding,

01:56:51.750 --> 01:56:53.510
sondern auch die ganzen Prozesse

01:56:53.510 --> 01:56:53.730
und so,

01:56:53.730 --> 01:56:54.590
das ist alles definiert

01:56:54.590 --> 01:56:55.650
und was sind die Requirements

01:56:55.650 --> 01:56:56.550
und wie funktioniert das

01:56:56.550 --> 01:56:58.090
und was gibt es alles für,

01:56:58.090 --> 01:56:58.630
weiß ich nicht,

01:56:58.630 --> 01:56:59.550
Dinge, die man so tun kann

01:57:00.570 --> 01:57:00.990
und welche Version.

01:57:00.990 --> 01:57:02.250
Das große Glossary ist das.

01:57:02.250 --> 01:57:03.130
Nummer drei,

01:57:03.130 --> 01:57:04.450
Version 3.0

01:57:04.450 --> 01:57:05.690
ist jetzt die aktuelle,

01:57:05.690 --> 01:57:06.590
gerade, ja.

01:57:06.590 --> 01:57:07.950
Das ist das große Glossar

01:57:07.950 --> 01:57:09.110
für alle Dinge,

01:57:09.110 --> 01:57:10.150
die Software entwickelt.

01:57:10.150 --> 01:57:10.230
Ja,

01:57:10.230 --> 01:57:11.290
die Festlegung der Wahrheit.

01:57:11.290 --> 01:57:11.790
Ja.

01:57:11.790 --> 01:57:13.450
Die einzig wahre Wahrheit TM.

01:57:13.450 --> 01:57:14.550
Die ist hier festgelegt.

01:57:14.550 --> 01:57:15.650
Na dann.

01:57:15.650 --> 01:57:17.750
Ja,

01:57:17.750 --> 01:57:18.530
sehr appetitlich auch

01:57:18.530 --> 01:57:18.870
und sehr schön.

01:57:18.870 --> 01:57:20.310
Ja,

01:57:20.310 --> 01:57:21.510
das war auch schon der Trick,

01:57:21.510 --> 01:57:21.610
oder?

01:57:21.610 --> 01:57:22.350
Wohl bekommens.

01:57:22.350 --> 01:57:25.550
Na gut.

01:57:25.550 --> 01:57:26.490
Ja,

01:57:26.490 --> 01:57:27.870
dann eine

01:57:27.870 --> 01:57:29.650
nicht so Kybernetis-Kybernetis-Folge.

01:57:29.650 --> 01:57:30.370
Aha.

01:57:30.570 --> 01:57:30.850
Oh,

01:57:30.850 --> 01:57:31.190
doch.

01:57:31.190 --> 01:57:31.610
Ja,

01:57:31.610 --> 01:57:31.910
doch.

01:57:31.910 --> 01:57:33.950
Nicht so viel dazu zu sagen.

01:57:33.950 --> 01:57:34.710
Ja,

01:57:34.710 --> 01:57:35.850
wir haben nicht so viel erklärt,

01:57:35.850 --> 01:57:36.790
wie man das benutzt,

01:57:36.790 --> 01:57:37.710
aber das müsst ihr selber rausfinden.

01:57:37.710 --> 01:57:41.670
Aber wenn ihr wirkliche Dinge wissen wollt,

01:57:41.670 --> 01:57:42.950
dann dürft ihr nicht hierher zukommen.

01:57:42.950 --> 01:57:43.470
Ja,

01:57:43.470 --> 01:57:44.530
es gibt da so ein paar einfache Sachen,

01:57:44.530 --> 01:57:45.950
den Golo hatte irgendwie noch.

01:57:45.950 --> 01:57:46.870
Vielleicht können wir das auch noch verlinken.

01:57:46.870 --> 01:57:48.730
So ein schöner YouTube-Einsteiger-Ding.

01:57:48.730 --> 01:57:48.750
Ja,

01:57:48.750 --> 01:57:49.750
vielleicht nochmal,

01:57:49.750 --> 01:57:51.390
wie du dein Minikube aufgesetzt hast

01:57:51.390 --> 01:57:52.110
und was man damit macht.

01:57:52.110 --> 01:57:52.290
Ja,

01:57:52.290 --> 01:57:52.390
genau.

01:57:52.390 --> 01:57:52.950
Also ich habe eigentlich

01:57:52.950 --> 01:57:54.850
Golos Tutorial so ein bisschen gemacht.

01:57:54.850 --> 01:57:57.890
Ist das dann dein zweiter Pick?

01:57:57.890 --> 01:57:58.630
Ist das der Pick,

01:57:58.630 --> 01:58:00.450
der Jochens letztwöchige?

01:58:00.450 --> 01:58:00.470
Ja,

01:58:00.570 --> 01:58:00.750
der Kanal,

01:58:00.750 --> 01:58:02.330
der die Woche irgendwie so Sachen macht.

01:58:02.330 --> 01:58:02.930
Na gut,

01:58:02.930 --> 01:58:04.230
es ist relativ einfach auf Deutsch,

01:58:04.230 --> 01:58:05.350
ein bisschen langsamer als wir reden

01:58:05.350 --> 01:58:06.530
und es ist ganz nett.

01:58:06.530 --> 01:58:08.410
Vielleicht sollte man das am Anfang sagen.

01:58:08.410 --> 01:58:11.090
Alles klar?

01:58:11.090 --> 01:58:11.610
Okay.

01:58:11.610 --> 01:58:12.390
Dann,

01:58:12.390 --> 01:58:12.970
ja,

01:58:12.970 --> 01:58:14.230
bleibt uns gewogen.

01:58:14.230 --> 01:58:14.930
Haltet uns ein,

01:58:14.930 --> 01:58:15.870
wann auch immer ihr hört.

01:58:15.870 --> 01:58:16.390
Mittags,

01:58:16.390 --> 01:58:16.630
morgens,

01:58:16.630 --> 01:58:16.870
abends,

01:58:16.870 --> 01:58:17.170
nachts.

01:58:17.170 --> 01:58:19.010
Einen guten Tag

01:58:19.010 --> 01:58:19.610
und gute Zeit.

01:58:19.610 --> 01:58:20.710
Bis zum nächsten Mal.

01:58:20.710 --> 01:58:21.510
Tschüss Johannes,

01:58:21.510 --> 01:58:21.890
bis bald.

01:58:21.890 --> 01:58:22.170
Ciao.

01:58:22.170 --> 01:58:22.550
Tschö.
