WEBVTT

00:00:00.000 --> 00:00:03.480
Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Paisen-Podcast, Episode 44.

00:00:04.720 --> 00:00:05.940
Heute soll es gehen um Enzebel.

00:00:07.060 --> 00:00:07.500
Hi Jochen.

00:00:07.980 --> 00:00:09.040
Herzlich willkommen Dominik.

00:00:09.820 --> 00:00:11.320
Oh meine Güte, das geht ja schon holprig los.

00:00:11.820 --> 00:00:12.280
Heute ist der Max dabei.

00:00:12.280 --> 00:00:13.580
Ein bisschen Pause gemacht und schon geht nichts mehr.

00:00:13.760 --> 00:00:15.100
Und der Max, natürlich, hallo, willkommen.

00:00:15.140 --> 00:00:16.160
Hallo, heute bin ich dabei.

00:00:17.360 --> 00:00:20.820
Ja, wir reden über Enzebel, aber erstmal natürlich wieder wie immer die News.

00:00:21.740 --> 00:00:22.660
Jochen, was hast du denn für News?

00:00:23.680 --> 00:00:28.820
Ja, was hatte ich, es ist eine ganze Menge passiert, wurden ja auch schon auf Twitter,

00:00:29.140 --> 00:00:30.500
Jetzt war es ein bisschen Sommerloch.

00:00:31.200 --> 00:00:33.540
Ja, und aber auch schon angehauen,

00:00:33.640 --> 00:00:34.860
dass wir doch mal wieder was machen sollen.

00:00:36.240 --> 00:00:37.360
Genau, machen wir jetzt auch wieder was.

00:00:37.760 --> 00:00:39.480
Insofern ist viel passiert, aber das meiste habe ich wieder vergessen.

00:00:39.640 --> 00:00:40.120
Daher egal.

00:00:41.140 --> 00:00:43.600
Eine wichtige Geschichte war das Release von Django 4.1.

00:00:43.700 --> 00:00:44.640
Das ist auch noch gar nicht so lange her.

00:00:46.400 --> 00:00:47.260
Das ist sehr nett.

00:00:47.480 --> 00:00:49.360
Also sowieso in letzter Zeit die ganzen Django-Releases

00:00:49.360 --> 00:00:50.660
finde ich sehr...

00:00:50.660 --> 00:00:52.540
Es wirkt nicht so

00:00:52.540 --> 00:00:55.540
bombastisch irgendwie,

00:00:55.540 --> 00:00:57.360
was da drin passiert, aber es sind halt

00:00:57.360 --> 00:00:59.380
solide Verbesserungen und eigentlich

00:00:59.380 --> 00:01:01.260
kommen jetzt so die ganzen netten Dinge, die halt

00:01:01.260 --> 00:01:03.260
irgendwie man machen kann, wenn man halt so ein stabiles

00:01:03.260 --> 00:01:05.360
Fundament hat und alles gut läuft und das

00:01:05.360 --> 00:01:06.140
ist halt großartig.

00:01:07.060 --> 00:01:09.120
Was diesmal dabei ist, also das was

00:01:09.120 --> 00:01:11.280
ja, das Ding ist auch auf Erkan News

00:01:11.280 --> 00:01:13.240
irgendwie auf die Start, direkt

00:01:13.240 --> 00:01:15.360
auf die Frontpage da gekommen und

00:01:15.360 --> 00:01:17.240
da haben alle irgendwie angefangen zu diskutieren über

00:01:17.240 --> 00:01:19.380
Async-Datenbank-Interface.

00:01:20.780 --> 00:01:21.420
Ja, ich

00:01:21.420 --> 00:01:23.240
würde jetzt sagen, das ist halt so ein längerer Prozess, also

00:01:23.240 --> 00:01:25.340
von irgendwie, es gibt

00:01:25.340 --> 00:01:27.120
ASGI zu

00:01:27.120 --> 00:01:28.820
irgendwie, man kann Async-Views schreiben,

00:01:29.100 --> 00:01:31.060
zu irgendwann werden wir auch komplett

00:01:31.060 --> 00:01:32.540
irgendwie alles Async haben.

00:01:33.000 --> 00:01:35.160
Das wird noch eine ganze Zeit lang dauern, also ich rechne

00:01:35.160 --> 00:01:36.960
da ehrlich gesagt nicht mit, dass das vor

00:01:36.960 --> 00:01:38.580
einem Jahr oder so möglich wird.

00:01:39.240 --> 00:01:40.880
Aber ein Jahr ist auch gar nicht so, ne?

00:01:41.240 --> 00:01:43.120
Bitte? Ein Jahr ist auch gar nicht so, ne? Ja, stimmt, stimmt.

00:01:43.180 --> 00:01:45.080
Letztes Jahr ist auch quasi gestern, das stimmt schon.

00:01:45.460 --> 00:01:46.060
Insofern, ja.

00:01:46.820 --> 00:01:48.980
Aber wenn man jetzt überlegt, wann haben wir

00:01:48.980 --> 00:01:51.000
den Artikel über... Letzten Sommer.

00:01:51.660 --> 00:01:53.100
Das war nicht letzten Sommer. Doch, das war

00:01:53.100 --> 00:01:55.280
letzten Sommer. Ne, ne, ich meine, das war 2020,

00:01:55.640 --> 00:01:57.160
oder? Das war zwei Jahre schon.

00:01:57.280 --> 00:01:58.380
Ich meine, das ist zwei Jahre her.

00:01:58.880 --> 00:02:01.100
Oh, ja, okay.

00:02:01.520 --> 00:02:02.200
Ups. Ja.

00:02:03.380 --> 00:02:04.460
Letzten Sommer war was anderes.

00:02:04.780 --> 00:02:06.480
Wenn ich überlege, letzten Sommer war

00:02:06.480 --> 00:02:08.720
DjangoCon EU 2021,

00:02:09.100 --> 00:02:10.920
damit hatte ich da, also das muss

00:02:10.920 --> 00:02:12.980
zwei Jahre her gewesen sein. Sozusagen von da

00:02:12.980 --> 00:02:14.840
bis jetzt hat es halt zwei Jahre gedauert

00:02:14.840 --> 00:02:16.640
und also wir sind halt noch lange nicht da.

00:02:16.720 --> 00:02:18.200
Daher, es wird noch eine ganze Zeit dauern.

00:02:18.880 --> 00:02:20.840
Aber jetzt ist zumindest halt

00:02:20.840 --> 00:02:22.840
das Interface irgendwie fix und das

00:02:22.840 --> 00:02:24.560
bedeutet, wenn man jetzt sowas sagt wie

00:02:24.560 --> 00:02:26.580
Wait-Query-Side-Filter irgendwas

00:02:26.580 --> 00:02:28.460
oder so. Dann, wenn irgendwann

00:02:28.460 --> 00:02:30.520
die ganzen anderen Dinge, die auch alle dann async werden müssen

00:02:30.520 --> 00:02:31.780
und wo das dann funktionieren muss, alles

00:02:31.780 --> 00:02:34.500
funktioniert, dann kriegt man einfach so

00:02:34.500 --> 00:02:36.280
schnellere

00:02:36.280 --> 00:02:38.540
Datenbankergebnisse, ohne dass man

00:02:38.540 --> 00:02:40.540
was dafür tun muss. Und das ist natürlich sehr praktisch. Also insofern

00:02:40.540 --> 00:02:42.480
jetzt kann man das halt schon so verwenden,

00:02:42.560 --> 00:02:44.500
als wäre es da, aber es ist halt noch nicht da, weil

00:02:44.500 --> 00:02:46.340
es gibt noch keine Unterstützung

00:02:46.340 --> 00:02:48.460
für Psycho-PG3 oder

00:02:48.460 --> 00:02:49.740
für Async-PG oder sowas daher.

00:02:50.780 --> 00:02:52.120
Man kann, glaube ich, irgendwie Dinge machen

00:02:52.120 --> 00:02:54.380
über ein Threadpool oder so, wenn man wirklich

00:02:54.380 --> 00:02:56.100
will, dann kann man auch so ein bisschen Async machen.

00:02:57.060 --> 00:02:58.360
Aber das ist halt noch nicht so wirklich

00:02:58.360 --> 00:02:59.800
das richtige Ding.

00:03:00.780 --> 00:03:02.300
Aber das war eine Geschichte.

00:03:03.140 --> 00:03:04.360
Dann aber eigentlich die

00:03:04.360 --> 00:03:06.220
interessanteren Features, weil die kann man halt schon wirklich benutzen

00:03:06.220 --> 00:03:07.060
und die bringen einem was,

00:03:08.120 --> 00:03:10.740
sind sowas wie Model Constraints.

00:03:11.080 --> 00:03:11.500
Also wenn man

00:03:11.500 --> 00:03:14.360
in einem Model festlegt, dass man irgendwie

00:03:14.360 --> 00:03:16.640
bestimmte Check Constraints in der Datenbank

00:03:16.640 --> 00:03:18.260
haben will. Also irgendwas darf nicht größer als so

00:03:18.260 --> 00:03:20.360
und sowas sein oder der Wert

00:03:20.360 --> 00:03:22.260
muss zwischen dem und dem liegen oder darf nichts anderes

00:03:22.260 --> 00:03:24.140
sein als das oder so. Irgendwas rauben wir mal

00:03:24.140 --> 00:03:25.640
für Constraints da. Kleine Validierung, ja.

00:03:25.840 --> 00:03:28.040
Dann war es halt früher so, da musste man

00:03:28.040 --> 00:03:30.160
das halt in den Model-Formen nochmal mit

00:03:30.160 --> 00:03:31.100
nochmal validieren,

00:03:31.780 --> 00:03:33.940
damit das wirklich funktioniert.

00:03:34.060 --> 00:03:35.880
Ansonsten hat das Formen gesagt,

00:03:36.060 --> 00:03:38.100
alles okay und dann, wenn das

00:03:38.100 --> 00:03:40.200
wenn der View oder was auch immer

00:03:40.200 --> 00:03:42.020
oder das Formen versucht, das in den Datenbank zu schreiben,

00:03:42.100 --> 00:03:43.120
gibt es einen Integrity-Error.

00:03:43.820 --> 00:03:46.120
Was natürlich ein bisschen kacke ist. Und jetzt ist es halt

00:03:46.120 --> 00:03:48.060
so, dass man tatsächlich vom Formen auch

00:03:48.060 --> 00:03:50.100
gesagt bekommt, nee, das geht so nicht, weil da ist

00:03:50.100 --> 00:03:51.740
ein Constraint auf dem Model.

00:03:52.260 --> 00:03:53.940
Das ist ja letztlich super angenehm,

00:03:54.020 --> 00:03:55.660
weil vorher muss man selber checken

00:03:55.660 --> 00:03:57.740
und meistens hat die Datenbank dann angefangen.

00:03:57.980 --> 00:03:58.880
Mit Status Quotes vielleicht sogar.

00:03:59.700 --> 00:04:01.660
Ja, und dann eigentlich die, also

00:04:01.660 --> 00:04:03.460
ehrlich gesagt, aus meiner Perspektive die coolste

00:04:03.460 --> 00:04:05.600
Neuerung, ich hab's mir jetzt noch nicht so richtig,

00:04:05.680 --> 00:04:07.640
aber es klang schon alles sehr viel, sprechen das, was ich

00:04:07.640 --> 00:04:08.780
gelesen habe, klang auch sehr, sehr gut.

00:04:09.700 --> 00:04:11.500
Das coolste Feature ist halt,

00:04:11.640 --> 00:04:13.580
also es hat sich viel an den Forms getan, auch in Django 4.0

00:04:13.580 --> 00:04:15.760
hat sich schon einiges an den Formularen getan,

00:04:15.880 --> 00:04:17.620
dass man halt an Formulare auch

00:04:17.620 --> 00:04:19.440
dran schreiben kann. Also dieses Formular

00:04:19.440 --> 00:04:21.220
wird gerendert über irgendwie

00:04:21.220 --> 00:04:22.760
ein Template.

00:04:23.320 --> 00:04:25.480
Und jetzt ist es halt komplett so, dass man auch

00:04:25.480 --> 00:04:27.420
global einstellen kann,

00:04:28.080 --> 00:04:29.640
quasi, welches

00:04:29.640 --> 00:04:31.400
Template verwendet wird, um Formen zu rennern,

00:04:31.440 --> 00:04:33.500
sodass man es gar nicht mehr unbedingt in jedem Formen einstellen

00:04:33.500 --> 00:04:35.520
muss. Und ja, da gibt es

00:04:35.520 --> 00:04:37.460
jede Menge, also es ist

00:04:37.460 --> 00:04:39.440
deutlich flexibler geworden, wie man Formulare

00:04:39.440 --> 00:04:41.380
rennern kann. Und damit, also das habe ich

00:04:41.380 --> 00:04:43.460
noch nicht persönlich überprüft, aber ich fände es schön, wenn es so wäre,

00:04:43.560 --> 00:04:45.400
weil ich habe Anfang des Jahres so ein bisschen was

00:04:45.400 --> 00:04:47.540
mit Crispy Forms gemacht und so.

00:04:47.800 --> 00:04:48.920
Ja, das war immer ein bisschen anstrengend.

00:04:50.040 --> 00:04:51.320
Ja, ich habe es früher

00:04:51.320 --> 00:04:53.200
immer nur so ein bisschen verwendet und so, und dann war es eigentlich

00:04:53.200 --> 00:04:55.120
okay. Und dann habe ich da irgendwann mal so richtig

00:04:55.120 --> 00:04:57.040
tief reingeguckt, weil ich dachte so, okay.

00:04:57.800 --> 00:04:58.980
Weil es darum ging, das mit

00:04:58.980 --> 00:05:01.120
Django HDMX, also mit HDMX

00:05:01.120 --> 00:05:03.080
zusammen zu benutzen. Und dann hätte ich gern

00:05:03.080 --> 00:05:05.100
halt nur, ich ändere ein

00:05:05.100 --> 00:05:06.560
Feld, dann geht das,

00:05:07.020 --> 00:05:09.180
gehen die Formulardaten an

00:05:09.180 --> 00:05:11.140
einen View. Und dann möchte ich

00:05:11.140 --> 00:05:13.260
eigentlich quasi nur das Feld zurückbekommen

00:05:13.260 --> 00:05:14.780
und die Fehlermeldung, wenn da irgendwas

00:05:14.780 --> 00:05:17.200
nicht validiert zum Beispiel. Aber das

00:05:17.200 --> 00:05:19.020
heißt, ich muss halt irgendwie ein Feld

00:05:19.020 --> 00:05:20.640
plus eine Fehlermeldung rendern.

00:05:21.400 --> 00:05:22.580
In nested forms oder sowas.

00:05:22.820 --> 00:05:24.380
in sehr komplizierten Formularen

00:05:24.380 --> 00:05:27.060
und allein nur das zurückgeben

00:05:27.060 --> 00:05:28.800
und um das hinzukriegen,

00:05:28.860 --> 00:05:30.540
muss ich sehr, sehr tief in Crispy Forms reingucken,

00:05:30.600 --> 00:05:31.780
wie das dann eigentlich funktioniert und so

00:05:31.780 --> 00:05:33.220
und wie die ganzen Templates-Packs funktionieren

00:05:33.220 --> 00:05:35.640
und ja, das war halt, da dachte ich mir,

00:05:35.680 --> 00:05:37.260
oh mein Gott, das muss weg, das kann nicht so bleiben,

00:05:37.380 --> 00:05:38.140
das ist alles schrecklich.

00:05:39.380 --> 00:05:41.220
Wie heißt das? Form-Tweaks?

00:05:42.060 --> 00:05:43.180
Ah, Django Form-Tweaks, ja.

00:05:43.200 --> 00:05:44.860
Genau, das macht es ein bisschen schöner,

00:05:45.020 --> 00:05:46.880
aber nimmt das Problem auch nicht so ganz weg.

00:05:48.700 --> 00:05:49.720
Letztlich habe ich dann auch,

00:05:49.840 --> 00:05:51.460
eigentlich habe ich auch so ein Riesentemplate,

00:05:51.640 --> 00:05:52.780
was alles durchrendert,

00:05:52.820 --> 00:05:54.600
also alles durchloopt

00:05:54.600 --> 00:05:56.580
und dann letztlich

00:05:56.580 --> 00:05:58.440
dann die EFAP-Fragen macht,

00:05:58.560 --> 00:05:59.920
falls irgendwas irgendwo

00:05:59.920 --> 00:06:02.440
schiefläuft. Aber das ist jetzt auch

00:06:02.440 --> 00:06:04.580
einfacher, dadurch, dass man angeben kann, okay, ich will

00:06:04.580 --> 00:06:06.580
jetzt dieses Template und man muss dann nicht mehr

00:06:06.580 --> 00:06:08.480
sagen, okay, ich include

00:06:08.480 --> 00:06:10.520
das Form. Ja, aber wie löst du da

00:06:10.520 --> 00:06:12.600
das Problem, wenn du jetzt zum Beispiel quasi

00:06:12.600 --> 00:06:14.420
HTMLX verwendest und sagst,

00:06:14.720 --> 00:06:16.520
okay, wenn da jemand draufklickt,

00:06:16.620 --> 00:06:18.460
dann wird das, eigentlich möchte ich nur

00:06:18.460 --> 00:06:20.420
einen kleinen Teil austauschen, das geht dann ja wahrscheinlich nicht so einfach,

00:06:20.540 --> 00:06:22.020
wenn du das Formular in einem großen

00:06:22.020 --> 00:06:23.700
Template erinnerst?

00:06:25.980 --> 00:06:28.500
Ja, du sagst ja, wohin das

00:06:28.500 --> 00:06:30.120
soll, letztlich.

00:06:31.000 --> 00:06:31.360
Und

00:06:31.360 --> 00:06:34.520
da über den Response

00:06:34.520 --> 00:06:35.480
kannst du dann letztlich

00:06:35.480 --> 00:06:38.380
das ändern.

00:06:39.000 --> 00:06:40.240
Also in den Dom dann direkt reingehen

00:06:40.240 --> 00:06:41.280
und das dann an die Stelle packen.

00:06:42.040 --> 00:06:43.940
Tatsächlich muss ich sagen, wenn ich dann

00:06:43.940 --> 00:06:46.240
in so ein spezielleres Form gehe, was halt nicht so

00:06:46.240 --> 00:06:48.280
0815 ist, dann

00:06:48.280 --> 00:06:49.500
schreibe ich die auch komplett

00:06:49.500 --> 00:06:51.320
von der Pike auf.

00:06:52.020 --> 00:06:54.400
ich dann die meiste Kontrolle habe, weil mir da Django

00:06:54.400 --> 00:06:56.180
einfach nicht so genug entgegenkommt.

00:06:56.200 --> 00:06:58.320
Ja, ja, ja. Ich verstehe das durchaus.

00:06:58.460 --> 00:07:00.280
Aber zum Beispiel den Fall, den wir

00:07:00.280 --> 00:07:01.860
da hatten, der war halt,

00:07:02.220 --> 00:07:04.380
dass es ganz viele unterschiedliche Formulare

00:07:04.380 --> 00:07:06.180
gab, aber viele der Formularteile

00:07:06.180 --> 00:07:08.320
waren halt gleich. Sodass man das eigentlich

00:07:08.320 --> 00:07:10.220
so machen möchte, dass man sagen möchte, okay, dieser Teil

00:07:10.220 --> 00:07:12.060
des Formulars, das ist so immer gleich

00:07:12.060 --> 00:07:14.160
und die Logik, da ist eine Menge Logik hinter und so, den möchte

00:07:14.160 --> 00:07:16.100
ich jetzt in unterschiedlichen Formularen irgendwie verwenden

00:07:16.100 --> 00:07:18.220
können. Und aber auch nur diesen

00:07:18.220 --> 00:07:19.860
Teil rendern und nicht das ganze Formular.

00:07:20.840 --> 00:07:22.600
Und wenn da jemand was eingibt

00:07:22.600 --> 00:07:24.580
und so. Also so quasi mehr in die

00:07:24.580 --> 00:07:26.020
Component-Ebene rein. Ja.

00:07:27.020 --> 00:07:28.720
Dann vielleicht ein eigenes Feld schreiben.

00:07:28.980 --> 00:07:30.320
Und dann kann man sich das ja auch wieder

00:07:30.320 --> 00:07:32.520
holen. Ja, das haben wir dann auch

00:07:32.520 --> 00:07:34.440
gemacht. Ja, ja, klar. Genau, das wäre

00:07:34.440 --> 00:07:35.360
dann auch mein Ansatz.

00:07:36.280 --> 00:07:38.620
Ja, aber es war alles nicht so ganz...

00:07:38.620 --> 00:07:40.120
Also das wird jetzt auf jeden Fall schön mit Dango 4.

00:07:40.260 --> 00:07:42.120
Genau, also angeblich braucht man das nicht mehr.

00:07:42.280 --> 00:07:44.280
Angeblich braucht man Crispy Forms unter Umständen nicht mehr

00:07:44.280 --> 00:07:46.340
und die ganzen Template-Packs nicht mehr. Und das kann man

00:07:46.340 --> 00:07:48.300
jetzt alles selber machen. Und das klingt sehr gut,

00:07:48.440 --> 00:07:50.460
weil das ist echt so ein...

00:07:50.460 --> 00:07:52.240
Ja, da kann es schon leicht

00:07:52.240 --> 00:07:52.920
schmerzhaft werden.

00:07:54.100 --> 00:07:55.340
Ja, genau. More News?

00:07:57.740 --> 00:07:58.220
Ansonsten

00:07:58.220 --> 00:07:59.700
irgendwie, ja,

00:07:59.760 --> 00:08:02.000
Pydentic 2 kommt jetzt,

00:08:02.000 --> 00:08:03.960
also, beziehungsweise ist es noch nicht

00:08:03.960 --> 00:08:05.740
released, aber das wird jetzt so allmählich

00:08:05.740 --> 00:08:07.020
Richtung Release

00:08:07.020 --> 00:08:09.840
geht das. Und also

00:08:09.840 --> 00:08:11.960
du meintest ja auch schon mal so, genau,

00:08:12.320 --> 00:08:14.020
Pydentic Core. Genau, Pydentic Core.

00:08:14.500 --> 00:08:16.040
Rust-Implementierung und Rust, dass das

00:08:16.040 --> 00:08:17.540
schnell wird. Ja.

00:08:18.660 --> 00:08:19.420
Ja, ich,

00:08:20.000 --> 00:08:21.860
Das ist ja, genau, also das ist halt

00:08:21.860 --> 00:08:23.840
halt das Problem, also Pandentica hat auch so ein paar Probleme,

00:08:24.060 --> 00:08:25.380
die in ganzen

00:08:25.380 --> 00:08:28.040
Internals sind halt eher so ein bisschen

00:08:28.040 --> 00:08:28.580
ja,

00:08:29.560 --> 00:08:31.000
vielleicht nicht mehr dem

00:08:31.000 --> 00:08:33.600
Verbreitungsgrad, wie das halt verwendet wird und so

00:08:33.600 --> 00:08:35.840
angemessen und es ist halt auch

00:08:35.840 --> 00:08:37.800
langsam, es ist sogar deutlich langsamer, als wenn man jetzt einfach

00:08:37.800 --> 00:08:39.680
nur... Data Classes nimmt. Ja,

00:08:39.920 --> 00:08:42.340
oder halt Data Classes

00:08:42.340 --> 00:08:43.480
sind auch nochmal deutlich langsamer als

00:08:43.480 --> 00:08:45.400
ganz normale Klassen, ja.

00:08:46.000 --> 00:08:47.640
Ja, okay, oder Atis oder so, glaube ich, das kannst du

00:08:47.640 --> 00:08:48.060
sagen. Ja.

00:08:49.780 --> 00:08:51.740
und ja, das ist natürlich

00:08:51.740 --> 00:08:53.440
irgendwie ein bisschen doof und

00:08:53.440 --> 00:08:54.020
genau,

00:08:55.280 --> 00:08:57.260
deswegen, das ist jetzt halt

00:08:57.260 --> 00:08:59.720
in Rust neu implementiert, da waren auch so ein paar Sachen

00:08:59.720 --> 00:09:01.880
dabei, habe ich jetzt letztens auch glaube ich einen Podcast

00:09:01.880 --> 00:09:03.560
gehört, Talk Python to Me, letzte oder

00:09:03.560 --> 00:09:05.060
vorletzte Episode, weiß ich nicht genau,

00:09:05.620 --> 00:09:07.120
mit dem Autor von

00:09:07.120 --> 00:09:09.440
Pydentic, Samuel Cohn,

00:09:09.640 --> 00:09:10.500
hast du, ja,

00:09:10.980 --> 00:09:13.780
und da sagte er so,

00:09:13.780 --> 00:09:15.780
da waren ein paar, weil ich normalerweise

00:09:15.780 --> 00:09:17.760
dann immer denke, so das erste, was man macht, wenn man es halt schon schnell

00:09:17.760 --> 00:09:19.100
haben will, warum nimmt man nicht einfach Saiten?

00:09:19.780 --> 00:09:21.880
und da hat er relativ ausführlich

00:09:21.880 --> 00:09:23.840
darüber gesprochen, warum das jetzt für ihn nicht so

00:09:23.840 --> 00:09:25.800
der gangbare Weg war und das fand ich ganz interessant,

00:09:25.900 --> 00:09:27.660
weil er halt halt so, ja, also Zeiten

00:09:27.660 --> 00:09:29.740
und so, das ist zwar schön, das geht zwar auch,

00:09:29.840 --> 00:09:31.380
aber einmal ist halt so C

00:09:31.380 --> 00:09:32.900
und es wird halt schon nach C kopiert

00:09:32.900 --> 00:09:34.220
und dann

00:09:34.220 --> 00:09:37.720
führt das halt dazu, dass die

00:09:37.720 --> 00:09:39.640
Binarys riesig werden, weil da halt

00:09:39.640 --> 00:09:41.740
irgendwie doch jede Menge

00:09:41.740 --> 00:09:43.540
genau C hinterher kommt.

00:09:45.140 --> 00:09:45.540
Und

00:09:45.540 --> 00:09:47.500
das ist bei Rust wohl nicht,

00:09:47.500 --> 00:09:48.880
da gibt es irgendwie dieses

00:09:48.880 --> 00:09:51.200
Pyos3-Ding da, mit dem

00:09:51.200 --> 00:09:53.440
man Rust-Geschichten

00:09:53.440 --> 00:09:54.900
einbinden kann und das

00:09:54.900 --> 00:09:56.660
macht halt...

00:09:56.660 --> 00:09:59.200
Und die Binaries werden

00:09:59.200 --> 00:10:01.240
halt deutlich kleiner und das ist natürlich schön,

00:10:01.400 --> 00:10:03.640
weil dann, ja, das war nicht so...

00:10:03.640 --> 00:10:05.420
Und es ist halt, genau...

00:10:05.420 --> 00:10:07.360
Man kann halt alles wegputzen, was nicht gebraucht wird oder so,

00:10:07.460 --> 00:10:09.160
glaube ich. Ja, und die

00:10:09.160 --> 00:10:10.920
ganze Parsing-Logik ist jetzt bei

00:10:10.920 --> 00:10:12.880
Paladin Decor komplett in Rust und

00:10:12.880 --> 00:10:14.840
es ist halt auch gar nicht so, dass...

00:10:14.840 --> 00:10:17.200
Bei Zeiten würde man halt sagen, okay, einige Teile

00:10:17.200 --> 00:10:18.400
macht man halt dann einen C oder

00:10:18.400 --> 00:10:20.740
schreibt man einen Zeiten, die dann nach C kompiliert wird und dann wieder

00:10:20.740 --> 00:10:23.240
und da ist es so, das passiert halt alles

00:10:23.240 --> 00:10:24.900
in Rust und am Schluss

00:10:24.900 --> 00:10:26.720
werden halt Python-Objekte erzeugt, aber

00:10:26.720 --> 00:10:28.520
man geht gar nicht den Umweg

00:10:28.520 --> 00:10:31.200
sozusagen, da doppelt irgendwie

00:10:31.200 --> 00:10:32.360
Sachen machen zu müssen.

00:10:33.260 --> 00:10:35.060
Also ja, war auf jeden Fall sehr interessant und

00:10:35.060 --> 00:10:36.900
da bin ich mal gespannt, wie das so wird, weil

00:10:36.900 --> 00:10:38.560
ja, das ist auch immer sowas,

00:10:39.860 --> 00:10:40.500
ja, wenn dann

00:10:40.500 --> 00:10:42.940
Leute dann aus der Google-Ecke sagen oder so,

00:10:43.020 --> 00:10:45.420
ja, wenn man mehrere, viele Datenbankzeilen

00:10:45.420 --> 00:10:47.380
aus der Datenbank holt, dann ist er bei Python immer langsam.

00:10:47.820 --> 00:10:49.340
Und ja, also wenn man Pydentik verwendet oder

00:10:49.340 --> 00:10:51.220
irgendwie sonst wie ein ORM

00:10:51.220 --> 00:10:53.200
und dann Objekte daraus erzeugt,

00:10:53.260 --> 00:10:54.700
also bei Pydentik ist es noch schlimmer als bei

00:10:54.700 --> 00:10:57.280
anderen ORMs, aber dann kann das

00:10:57.280 --> 00:10:58.900
halt schon sehr langsam werden. Aber ich meine,

00:10:59.320 --> 00:11:00.640
das ist halt die Frage. Wenn man

00:11:00.640 --> 00:11:03.280
möchte, dass es schnell ist und Millionen Zahlen aus der Datenbank

00:11:03.280 --> 00:11:05.140
holt, dann darf man halt nicht aus jeder Zahl ein Objekt

00:11:05.140 --> 00:11:06.860
machen. Das ist halt dann nicht gut.

00:11:06.880 --> 00:11:07.460
Und sonst zu langsam.

00:11:08.460 --> 00:11:10.360
Ja, hast du noch weitere News?

00:11:11.100 --> 00:11:12.720
Nee. Ich war auf der Europython.

00:11:13.220 --> 00:11:14.940
Ja. Ja, das war natürlich ganz interessant.

00:11:15.420 --> 00:11:17.100
Also total tolle Veranstaltung.

00:11:17.200 --> 00:11:19.120
Da kann ich nur empfehlen, da teilzunehmen,

00:11:19.200 --> 00:11:20.420
wenn man da die Möglichkeit so hat.

00:11:21.320 --> 00:11:22.760
Das war in Dublin. Dublin ist natürlich auch

00:11:22.760 --> 00:11:25.100
sehenswert. Da gibt es leckere

00:11:25.100 --> 00:11:25.520
Getränke.

00:11:27.020 --> 00:11:29.020
Aber aus der Python-Bestseitigkeit wäre das natürlich auch schön,

00:11:29.100 --> 00:11:30.920
mal so ein bisschen die Leute zu hören

00:11:30.920 --> 00:11:31.560
und verschiedene Sachen.

00:11:32.520 --> 00:11:34.800
Vielleicht erzähle ich mal so ein bisschen, was ich ganz besonders interessant fand.

00:11:35.620 --> 00:11:36.580
Und zwar hat der Patrick,

00:11:36.640 --> 00:11:37.480
Patrick Arminio,

00:11:38.320 --> 00:11:40.300
bei Strawberry einen netten Workshop gemacht.

00:11:40.300 --> 00:11:42.240
Das war sehr schön und interessant zu hören.

00:11:42.840 --> 00:11:44.220
Das war eine GraphQL-Schnittstelle,

00:11:44.380 --> 00:11:46.120
die man einbauen kann. Das gibt es auch Strawberry

00:11:46.120 --> 00:11:48.220
Django. Da kann man das halt direkt

00:11:48.220 --> 00:11:50.180
als GraphQL-View quasi

00:11:50.180 --> 00:11:52.280
benutzen. Sehr interessante Art

00:11:52.280 --> 00:11:54.180
und Weise mit der Datenbank-Untrückgene kann man relativ

00:11:54.180 --> 00:11:56.360
gut definieren, welche Queries möglich sind

00:11:56.360 --> 00:11:58.100
auf die Datenbank und hat dann einen

00:11:58.100 --> 00:12:00.020
Endpunkt, das Expose, den man dann halt

00:12:00.020 --> 00:12:01.140
erfragen kann, um mal so ein bisschen

00:12:01.140 --> 00:12:04.100
den Nutzer dieser API

00:12:04.100 --> 00:12:05.980
direkt entscheiden zu lassen, was er denn haben will und muss dann halt nicht

00:12:05.980 --> 00:12:08.400
die ganze Quad-Interface irgendwie implementieren.

00:12:08.400 --> 00:12:10.240
Bei GraphQL habe ich immer so die Frage,

00:12:10.380 --> 00:12:12.260
also ich muss ja das ganze Schema

00:12:12.260 --> 00:12:14.300
schreiben und irgendwie habe

00:12:14.300 --> 00:12:15.900
ich immer dann am Ende das Gefühl, ja, die

00:12:15.900 --> 00:12:18.320
Django OM gibt mir das

00:12:18.320 --> 00:12:20.420
aber eigentlich gratis, was ich dem rausgeben will.

00:12:22.240 --> 00:12:22.600
Ja.

00:12:23.420 --> 00:12:24.420
Ja, es ist so ein bisschen

00:12:24.420 --> 00:12:25.560
mismatched zwischen,

00:12:26.420 --> 00:12:28.060
man hat halt eigentlich das nochmal,

00:12:28.580 --> 00:12:30.360
weil man irgendwie dem

00:12:30.360 --> 00:12:32.120
Frontend halt so eine Art Datenbankinterface

00:12:32.120 --> 00:12:34.240
zur Verfügung stellt. Es ist schon

00:12:34.240 --> 00:12:36.120
so ein bisschen, ja, ich weiß auch nicht, also ich bin in letzter Zeit,

00:12:36.180 --> 00:12:38.780
also ich hab auch mal eine Zeit lang irgendwie intensiv

00:12:38.780 --> 00:12:40.360
GraphQL gemacht, meistens

00:12:40.360 --> 00:12:41.660
dann halt Django und Graphene,

00:12:42.620 --> 00:12:44.260
was dann halt, ja, das wird dann auch

00:12:44.260 --> 00:12:46.100
manchmal so unerklärlich langsam und manchmal hat man so

00:12:46.100 --> 00:12:48.180
Probleme, das rauszukriegen

00:12:48.180 --> 00:12:50.080
dann, warum da, und ja,

00:12:50.620 --> 00:12:52.540
das ist, glaube ich, hat auch diverse Designprobleme,

00:12:52.580 --> 00:12:54.060
auch, ich glaube, der Autor von Graphene meinte dann

00:12:54.060 --> 00:12:55.980
irgendwann, ach, ihr müsst das nochmal alles komplett neu schreiben,

00:12:56.200 --> 00:12:57.920
und keine Ahnung. An den Punkt kommt man eigentlich immer.

00:12:58.120 --> 00:12:58.600
Ja, natürlich.

00:13:00.920 --> 00:13:02.260
Und ich weiß auch nicht,

00:13:02.420 --> 00:13:03.860
ich weiß ehrlich gesagt nicht, ob

00:13:03.860 --> 00:13:06.120
GraphQL überhaupt noch so eine, ich weiß es nicht,

00:13:06.120 --> 00:13:07.280
ich habe letztens auch

00:13:07.280 --> 00:13:10.280
kritische Stimmen gehört, in die Richtung.

00:13:10.580 --> 00:13:11.680
Ja, Armin

00:13:11.680 --> 00:13:14.120
Runacher, jetzt letztens auf Twitter, schrieb er dann so,

00:13:14.260 --> 00:13:15.620
irgendwie, also, ach,

00:13:15.940 --> 00:13:17.760
das war, glaube ich, oder war das der HTMX-Typ?

00:13:17.860 --> 00:13:18.840
Ich bin mir nicht mehr sicher.

00:13:19.860 --> 00:13:21.880
Der dann schrieb, naja, bedenke,

00:13:21.980 --> 00:13:23.120
dass du, ach so, genau,

00:13:23.420 --> 00:13:25.540
ich glaube, Amin Omar, also diese

00:13:25.540 --> 00:13:27.840
GraphQL-Geschichte ist so unfassbar komplex und das wird

00:13:27.840 --> 00:13:30.000
alles so, oh, wie ist

00:13:30.000 --> 00:13:31.720
jemand jemals auf diese Idee gekommen,

00:13:31.780 --> 00:13:33.140
das so zu machen? Und

00:13:33.140 --> 00:13:35.820
darauf hat dann der

00:13:35.820 --> 00:13:37.680
HTMX-Autor irgendwie geantwortet und meinte so, ja,

00:13:37.680 --> 00:13:39.120
also bedenke immer, wenn du

00:13:39.120 --> 00:13:41.780
so einen generischen Datenbank-Endpunkt

00:13:41.780 --> 00:13:43.720
quasi deinem Frontend zur Verfügung

00:13:43.720 --> 00:13:45.560
stellst. Du stellst den nicht nur deinem Freund

00:13:45.560 --> 00:13:47.880
zur Verfügung, sondern auch allen anderen, inklusive

00:13:47.880 --> 00:13:49.520
Leuten, die dich angreifen wollen. Ja, also du kannst

00:13:49.520 --> 00:13:51.640
auf jeden Fall schon dusten damit. Das ist natürlich

00:13:51.640 --> 00:13:53.280
extrem schwierig zu verhindern, dass

00:13:53.280 --> 00:13:54.520
das nicht geht.

00:13:56.520 --> 00:13:57.560
Also. Ja, ja.

00:13:58.580 --> 00:13:59.760
Ja, also auf jeden Fall trotzdem

00:13:59.760 --> 00:14:01.500
der Workshop war sehr interessant. Ja, aber es

00:14:01.500 --> 00:14:03.800
sollte gut sein. Genau, das ist so ein bisschen

00:14:03.800 --> 00:14:05.640
ähnlich von FastAPI, also ungefähr

00:14:05.640 --> 00:14:07.320
vom Prinzip her viel mit modernen

00:14:07.320 --> 00:14:08.000
Type-Ins und so.

00:14:09.500 --> 00:14:11.600
Ja, dann gab es noch einen schönen Talk, das war auch

00:14:11.600 --> 00:14:12.700
direkt am Anfang über

00:14:12.700 --> 00:14:15.860
einen Blog-Eintrag von Peter Norweg

00:14:15.860 --> 00:14:17.780
und zwar hat das Luciano Romano

00:14:17.780 --> 00:14:20.140
das gemacht und so über Lisk-Screen-Parser

00:14:20.140 --> 00:14:21.680
in Python, relativ kurz,

00:14:21.760 --> 00:14:23.660
das gab so ein, weiß nicht wie lange das ist,

00:14:24.460 --> 00:14:25.820
gelogen 70 Zeilen oder sowas

00:14:25.820 --> 00:14:27.800
in Python, kompletter Lisk-Screen-Parser, was halt

00:14:27.800 --> 00:14:29.780
irgendwie ganz cool ist, weil man da so ein bisschen versteht, wie so ein

00:14:29.780 --> 00:14:31.700
Parser funktioniert und was so ein Ast ist

00:14:31.700 --> 00:14:33.880
und weiß nicht, so ein Lisk-Screen-Parser ist ja relativ ähnlich

00:14:33.880 --> 00:14:35.800
zu JavaScript, glaube ich, oder so, wie man dann Tugends

00:14:35.800 --> 00:14:37.280
baut und Funktionen baut irgendwie und

00:14:37.280 --> 00:14:39.500
fand ich ganz interessant, das mal so zu sehen,

00:14:39.620 --> 00:14:41.040
auch mit Typefins und so versehen.

00:14:42.180 --> 00:14:44.180
Ja, generell, wo

00:14:44.180 --> 00:14:46.080
Python halt überall verwandt wird und verwendet wird.

00:14:46.300 --> 00:14:48.080
Also James Webb Space Telescope

00:14:48.080 --> 00:14:50.340
von der NASA, da war auch jemand da,

00:14:50.380 --> 00:14:52.000
der dann sagte so, hey, wie denn die Bilder in Python

00:14:52.000 --> 00:14:53.680
zur Erde geschickt werden und so. Das ist natürlich, dann

00:14:53.680 --> 00:14:56.260
freut man sich immer, dass es so berühmte Anwendungsfälle gibt.

00:14:58.720 --> 00:14:59.680
Die Lynn hat

00:14:59.680 --> 00:15:02.280
einen sehr schönen Talk gemacht über Everyday RPs

00:15:02.280 --> 00:15:03.880
von Spotify. Das ist eine

00:15:03.880 --> 00:15:04.860
Entwicklerin, die da

00:15:04.860 --> 00:15:07.720
einfach so einen netten Talk gemacht hat. Ich glaube,

00:15:07.840 --> 00:15:09.820
so wie wir das auch machen, aber sie hat eine sehr hübsche Folie.

00:15:10.380 --> 00:15:11.220
Können wir auch mal verlinken.

00:15:12.180 --> 00:15:13.900
Genau. Da kann man sich

00:15:13.900 --> 00:15:15.760
nochmal so angucken, wie man so APIs

00:15:15.760 --> 00:15:17.880
designt, glaube ich, das fand ich ganz interessant.

00:15:18.160 --> 00:15:18.540
Ah, ja.

00:15:20.000 --> 00:15:21.260
Auch super, das war einer der,

00:15:21.720 --> 00:15:23.460
für mich fand ich, das war so didaktisch besten Talks,

00:15:23.460 --> 00:15:24.820
das war von Niall O'Connor, irgendwie über

00:15:24.820 --> 00:15:28.480
Fibonacci-Retrace-Levels, Asset-Price-Prediction-Reverse

00:15:28.480 --> 00:15:29.920
von der Bank of America.

00:15:30.460 --> 00:15:31.820
Ja, der ist auch so rumgespringen,

00:15:31.920 --> 00:15:33.880
hat die ganze Zeit über Resistances

00:15:33.880 --> 00:15:35.040
gesprochen und da ist eigentlich immer

00:15:35.040 --> 00:15:37.340
die Folie gewechselt, irgendwie jetzt

00:15:37.340 --> 00:15:39.220
ein weiter, ein weiter, in so einem Run-We-Are-All-Dead

00:15:39.220 --> 00:15:41.080
und dann klick, klick, klick, eine Folie nach dem anderen.

00:15:41.580 --> 00:15:42.940
Das war super, ich fand es toll.

00:15:43.140 --> 00:15:44.700
Muss man sich eigentlich wenigstens mal angucken.

00:15:46.000 --> 00:15:47.860
Ich muss auch mal irgendwann so ein Trading-Bot bauen, keine Ahnung.

00:15:49.200 --> 00:15:53.300
Was ich auch ganz cool war, war das Team von Huggingface war da.

00:15:54.020 --> 00:15:55.560
Die haben ja dieses DALI gemacht.

00:15:55.960 --> 00:15:59.820
Das heißt, da kann man ja irgendwie durch Texteingaben Bilder generieren lassen von so einer KI.

00:16:00.900 --> 00:16:02.680
Oh, da habe ich jetzt auch, da habe ich meine Verifikation bekommen.

00:16:02.680 --> 00:16:05.460
Ich kann jetzt per DALI Bilder generieren.

00:16:05.640 --> 00:16:06.200
Ja, cool, genau.

00:16:06.580 --> 00:16:10.700
Ja, und das Coole ist, es gibt da einen Python-Wrapper drum, um Huggingface, der nennt sich Gradio.

00:16:11.380 --> 00:16:13.420
Den kann man einfach installieren und dann kann man gerade sagen

00:16:13.420 --> 00:16:15.500
Gradual Use, den Namen

00:16:15.500 --> 00:16:17.420
dieses Machine Learning Modells und kann dann

00:16:17.420 --> 00:16:19.440
direkt diese vortrainierten Modelle nehmen und die auf seine eigenen Daten

00:16:19.440 --> 00:16:21.380
schmeißen und die auch annotieren und die Features

00:16:21.380 --> 00:16:23.560
irgendwie anpassen. Das fand ich sehr nice, so zum

00:16:23.560 --> 00:16:25.500
ausprobieren und so ganz schnell

00:16:25.500 --> 00:16:27.360
Machine Learning innerhalb von kurzen Teilen bauen.

00:16:27.540 --> 00:16:29.740
Das war sehr cool, sehr nice.

00:16:31.200 --> 00:16:31.380
Ja,

00:16:31.600 --> 00:16:33.220
da gab es noch so ein paar politische Talks über AI,

00:16:33.320 --> 00:16:35.540
Dystopia und sowas, was man alles nicht mit Killer-Robotern

00:16:35.540 --> 00:16:37.220
machen kann und so, wenn man sich das nochmal

00:16:37.220 --> 00:16:39.280
angucken möchte, so die Argumentationen, die dahinter stecken.

00:16:41.280 --> 00:16:43.700
dann darüber, wie man 3.11

00:16:43.700 --> 00:16:45.180
jetzt schneller gemacht hat, hat

00:16:45.180 --> 00:16:46.240
Max Schendler gesagt.

00:16:46.560 --> 00:16:48.880
Das war auch sehr schön, also ein bisschen

00:16:48.880 --> 00:16:51.060
C-Python wieder. Und da in dem Fall auch

00:16:51.060 --> 00:16:53.180
Sam Gross von Facebook hat

00:16:53.180 --> 00:16:55.260
was dazu gesagt, wie er Nogil macht.

00:16:55.920 --> 00:16:57.020
Und wie das aussieht, dass man halt

00:16:57.020 --> 00:16:58.540
in Python nicht mehr Nogil benutzen möchte.

00:17:01.300 --> 00:17:01.660
Robin

00:17:01.660 --> 00:17:03.180
habe ich gesehen, das ist ein neues Framework.

00:17:04.140 --> 00:17:05.660
Ein asynchrones Python-Web-Framework,

00:17:05.820 --> 00:17:07.040
das mit einer Rust-Runtime läuft.

00:17:07.100 --> 00:17:09.180
Dann kannst du halt sowas wie UV-Con sparen

00:17:09.180 --> 00:17:11.040
vorneweg und hast halt direkt diese

00:17:11.040 --> 00:17:13.000
Rust-One-Time und es ist relativ, sag ich schnell,

00:17:13.080 --> 00:17:14.020
wenn du relativ gute

00:17:14.020 --> 00:17:17.100
Anforderungen hast. Ja, das ist auf jeden Fall eine interessante Idee.

00:17:17.280 --> 00:17:18.320
Also ich meine, ich würde jetzt sagen,

00:17:19.200 --> 00:17:21.200
also ob einem das so wahnsinnig viel hilft,

00:17:21.560 --> 00:17:23.020
wenn man das jetzt in Rust, also das

00:17:23.020 --> 00:17:24.900
Einzige, also ich meine, UV-Corn finde ich ja eigentlich schon ganz gut,

00:17:24.980 --> 00:17:26.560
ist relativ schnell und so,

00:17:27.040 --> 00:17:29.060
aber also zum Beispiel, wenn ich

00:17:29.060 --> 00:17:31.140
Files ausliefere, also meine Benchmarks sagen so,

00:17:31.180 --> 00:17:32.980
UV-Corn ist deutlich schneller, äh, deutlich langsamer

00:17:32.980 --> 00:17:34.800
als sowas wie Nginx und so und ich weiß nicht, warum.

00:17:35.200 --> 00:17:36.880
Ich habe keine Ahnung, wahrscheinlich müsst ihr ja mal tiefer reingucken,

00:17:36.940 --> 00:17:38.800
was das eigentlich, warum das ist. Also bei dem Roboing

00:17:38.800 --> 00:17:40.840
gibt es auf jeden Fall auch diese, so ein paar

00:17:40.840 --> 00:17:42.740
Benchmarks. Ich weiß halt immer nicht, du bist ja immer bei Benchmarks immer ein bisschen

00:17:42.740 --> 00:17:44.520
kritisch, wie gut die sind oder wie neutral die sind.

00:17:44.540 --> 00:17:46.680
Ja, ja, es ist schwierig. Also, sagen wir mal so, es ist einfach schwierig, Benchmarks

00:17:46.680 --> 00:17:48.840
so zu machen, dass sie halt etwas sagen,

00:17:49.500 --> 00:17:50.760
dir Informationen darüber geben, was du

00:17:50.760 --> 00:17:52.460
eigentlich wissen willst und nicht, dass du irgendwie

00:17:52.460 --> 00:17:54.500
dein Benchmark-Tool gebenchmarked hast oder deine

00:17:54.500 --> 00:17:56.420
CPU gebenchmarked hast oder den Speicherbus

00:17:56.420 --> 00:17:58.340
gebildet hast. Es ist halt irgendwie, es kann

00:17:58.340 --> 00:17:59.920
vielfältig schief gehen. Genau.

00:18:00.480 --> 00:18:01.940
Ja, also jedenfalls, das war super interessant.

00:18:02.360 --> 00:18:04.520
Achso, genau, ich hatte mal auch schon dieses Tempolastalk, da geht es halt

00:18:04.520 --> 00:18:06.540
um Reference-Crouching auch, mit dem Nogel, dass man halt

00:18:06.540 --> 00:18:07.500
dass er irgendwie das ersetzen kann.

00:18:09.220 --> 00:18:09.840
Ja, dann

00:18:09.840 --> 00:18:12.400
gab es noch ein Talk

00:18:12.400 --> 00:18:14.280
über Jot. Fand ich ganz interessant. Da wusste ich noch nicht

00:18:14.280 --> 00:18:15.780
alles drüber. Da haben die Jessica erzählt.

00:18:16.520 --> 00:18:17.140
So ein bisschen nochmal

00:18:17.140 --> 00:18:20.080
so die Details darüber,

00:18:20.260 --> 00:18:22.100
was da für ein Payout drin ist und so weiter. Das war interessant.

00:18:23.100 --> 00:18:24.280
Und noch der Luciano Romano

00:18:24.280 --> 00:18:25.440
hat noch einen über Typing.

00:18:26.300 --> 00:18:28.160
Ja, der hat ja jetzt, also überhaupt,

00:18:28.500 --> 00:18:30.260
ich weiß nicht, ob der so bekannt ist,

00:18:30.400 --> 00:18:32.180
der Name, wenn man den sagt,

00:18:32.180 --> 00:18:33.580
ob der den Leuten direkt...

00:18:33.580 --> 00:18:34.700
Das ist der Autor von Fluent Python.

00:18:35.900 --> 00:18:37.840
Ganz lange Zeit schon eine Community

00:18:37.840 --> 00:18:40.040
aktiv und also ich finde

00:18:40.040 --> 00:18:42.180
Python ist halt auch so eines der besten

00:18:42.180 --> 00:18:43.640
Python-Bücher, die so draußen sind.

00:18:44.120 --> 00:18:46.020
Und davon gab es jetzt auch im Frühjahr irgendwie

00:18:46.020 --> 00:18:47.820
eine zweite Ausgabe.

00:18:48.820 --> 00:18:49.940
Und da ist eine der Neuerungen

00:18:49.940 --> 00:18:52.100
ein Kapitel über Typing und das ist halt

00:18:52.100 --> 00:18:54.100
super. Also ja, kann man

00:18:54.100 --> 00:18:56.180
Genau, das meint er so, wie du dich das vorgestellt hast.

00:18:56.300 --> 00:18:58.000
Das war bei der Talk

00:18:58.000 --> 00:18:59.740
bei Typings as Guido intended.

00:19:00.220 --> 00:19:01.940
Ah, okay. Weil das würde mich

00:19:01.940 --> 00:19:03.820
jetzt mal interessieren, weil ich habe das,

00:19:04.080 --> 00:19:05.880
also ich habe da so ein bisschen reingelesen, ich habe es noch nicht komplett gelesen,

00:19:05.900 --> 00:19:07.760
aber so ein bisschen quer gelesen und ich

00:19:07.760 --> 00:19:09.660
weiß auch sonst, was er darüber schon mal so geschrieben hat

00:19:09.660 --> 00:19:11.800
und der war ja auch schon mal Gast in diversen Podcasts

00:19:11.800 --> 00:19:13.700
und so und der ist ja auch eher

00:19:13.700 --> 00:19:15.760
so ein bisschen kritisch gegenüber dieser ganzen Type-In

00:19:15.760 --> 00:19:17.800
Geschichte. Er sagt so, meine Güte, das ist

00:19:17.800 --> 00:19:19.760
halt irgendwie ein ganz schöner Aufwand, das zu lernen

00:19:19.760 --> 00:19:21.440
und teilweise ist es ganz schön schwer.

00:19:22.320 --> 00:19:23.720
Also das Beispiel, was ich jetzt auch schon ein paar

00:19:23.720 --> 00:19:25.760
Mal gebracht habe mit Min und Max-Funktionen

00:19:25.760 --> 00:19:27.800
und den Type-Annotationen, das kommt von

00:19:27.800 --> 00:19:30.000
ihm. Ja, ich glaube, er hat gerade ein Protokoll

00:19:30.000 --> 00:19:32.040
entwickelt, wie man das so machen kann. Also Type-In.protocol

00:19:32.040 --> 00:19:33.600
macht er irgendwie, um solche Sachen zu lösen.

00:19:33.600 --> 00:19:34.360
Das war ganz spannend.

00:19:35.640 --> 00:19:37.720
Ja, super Search

00:19:37.720 --> 00:19:39.540
mit OpenSearch, war noch ganz

00:19:39.540 --> 00:19:41.460
interessant. Also OpenSearch als Elasticsearch

00:19:41.460 --> 00:19:43.580
Fork, irgendwie mit Python

00:19:43.580 --> 00:19:45.100
ein ganz schöner Talk dazu.

00:19:46.140 --> 00:19:49.640
Dublin war toll, man konnte

00:19:49.640 --> 00:19:51.220
auch an den Strand fahren, war super Wetter und

00:19:51.220 --> 00:19:53.240
nette Leute kennengelernt, Gruß an Marlene.

00:19:55.520 --> 00:19:56.460
Ja, sehr schön.

00:19:57.460 --> 00:19:59.420
Das war eine super Veranstaltung. Kann ich empfehlen, das

00:19:59.420 --> 00:20:00.060
nächstes Mal gerne wieder.

00:20:01.440 --> 00:20:02.540
Nächstes Mal schaffe ich es vielleicht auch.

00:20:03.260 --> 00:20:05.440
Gruß an Jan Hendrik auch, war auch sehr schön.

00:20:05.640 --> 00:20:06.160
Ja.

00:20:07.740 --> 00:20:09.200
Ja, habt ihr noch News?

00:20:12.040 --> 00:20:13.740
Dann sind wir vielleicht endlich beim Thema.

00:20:14.860 --> 00:20:15.040
Ja.

00:20:15.420 --> 00:20:16.940
Das Thema ist nämlich heute Ansible.

00:20:18.080 --> 00:20:19.760
Und ich würde sagen, jetzt ist auch der perfekte

00:20:19.760 --> 00:20:21.660
Zeitpunkt für Max, dass Max sich vorstellt und

00:20:21.660 --> 00:20:23.640
Hallo sagt. Ja, hallo.

00:20:23.820 --> 00:20:25.780
Ich bin Max und

00:20:25.780 --> 00:20:27.520
ja,

00:20:27.800 --> 00:20:29.580
programmiere viel in

00:20:29.580 --> 00:20:31.620
Python, mach viel mit Django,

00:20:32.940 --> 00:20:33.740
bin bei

00:20:33.740 --> 00:20:35.940
einer Compliance-Beratung. Wir kümmern uns

00:20:35.940 --> 00:20:38.160
um Datenschutz, Qualitätsmanagement,

00:20:38.680 --> 00:20:39.880
Arbeitssicherheit und

00:20:39.880 --> 00:20:41.440
eigentlich stelle ich so den Beratern

00:20:41.440 --> 00:20:43.220
die Tools zur Verfügung, damit die

00:20:43.220 --> 00:20:45.860
weniger arbeiten müssen

00:20:45.860 --> 00:20:46.980
und alles ein bisschen schöner

00:20:46.980 --> 00:20:48.740
am Ende aussieht.

00:20:50.100 --> 00:20:51.680
Und da setzen wir hauptsächlich

00:20:51.680 --> 00:20:53.500
Python ein und haben natürlich auch

00:20:53.500 --> 00:20:55.700
eine Ecke an Servern, die wir

00:20:55.700 --> 00:20:57.560
dann mit Ansible bespielen.

00:21:01.320 --> 00:21:03.700
Das heißt Ansible zur Server-Einrichtung.

00:21:03.740 --> 00:21:05.700
Richtung. Genau, also

00:21:05.700 --> 00:21:07.220
so, Ansible macht ja

00:21:07.220 --> 00:21:09.540
Konfigurationsmanagement. Kennt ihr alle

00:21:09.540 --> 00:21:11.680
Ansible? Ja, ich bin doch.

00:21:12.260 --> 00:21:14.000
Was macht Ansible? Ja genau, Konfigurationsmanagement

00:21:14.000 --> 00:21:15.760
heißt also, du rollst

00:21:15.760 --> 00:21:17.640
irgendwas auf einem Server aus und sagst

00:21:17.640 --> 00:21:19.220
dem, was das für ein Server sein soll und dann

00:21:19.220 --> 00:21:21.540
macht Ansible die ganzen Skripts und die

00:21:21.540 --> 00:21:23.600
Konfigurationen und die Einstellungen von der Kiste.

00:21:24.380 --> 00:21:25.740
Genau, also Ansible

00:21:25.740 --> 00:21:26.240
ist

00:21:26.240 --> 00:21:29.520
deklarativ, das heißt, ich sage dem

00:21:29.520 --> 00:21:31.420
Ansible nur, so soll das am Ende

00:21:31.420 --> 00:21:33.440
aussehen und dann kümmert sich

00:21:33.440 --> 00:21:34.680
das um

00:21:34.680 --> 00:21:37.080
alles Weitere.

00:21:38.220 --> 00:21:38.760
Ja.

00:21:39.540 --> 00:21:41.400
Und das ist bei Anse,

00:21:41.400 --> 00:21:43.100
also es gibt da natürlich viele verschiedene Tools,

00:21:43.220 --> 00:21:45.160
die das halt machen. Da gibt es natürlich auch Chef und

00:21:45.160 --> 00:21:47.180
Puppet, die man

00:21:47.180 --> 00:21:49.080
zum Beispiel nutzen kann. Salt gibt es natürlich auch.

00:21:49.140 --> 00:21:51.420
Das sind so die großen, die man dann

00:21:51.420 --> 00:21:53.180
letztlich hat.

00:21:53.860 --> 00:21:55.240
Und die Frage

00:21:55.240 --> 00:21:57.200
ist dann immer, okay, welches von diesen

00:21:57.200 --> 00:21:58.320
Tools nehme ich denn am Ende?

00:21:59.400 --> 00:22:00.040
Und ich finde,

00:22:00.880 --> 00:22:03.000
Ansible ist halt das Tool mit der

00:22:03.000 --> 00:22:04.980
niedrigsten Hürde, weil

00:22:04.980 --> 00:22:07.060
man ja am Ende halt

00:22:07.060 --> 00:22:08.720
YAML schreibt

00:22:08.720 --> 00:22:11.220
und dort halt relativ

00:22:11.220 --> 00:22:13.140
klar reinschreibt, was man denn am Ende

00:22:13.140 --> 00:22:15.020
haben möchte. Und es

00:22:15.020 --> 00:22:16.740
funktioniert halt agentless, das heißt

00:22:16.740 --> 00:22:19.340
ich muss halt vorher keinen Kontakt

00:22:19.340 --> 00:22:20.380
zu dem Server

00:22:20.380 --> 00:22:22.900
gehabt haben, also keinen Agent installieren

00:22:22.900 --> 00:22:25.280
und

00:22:25.280 --> 00:22:27.120
dem werfe ich dann einfach Befehle zu

00:22:27.120 --> 00:22:28.220
und der führt die dann aus.

00:22:31.200 --> 00:22:34.080
Ja, das ist so wie, also per SSH brauchst du natürlich Zugriff.

00:22:34.260 --> 00:22:38.020
Genau, man braucht SSH-Zugriff und man braucht Python auf der Kiste.

00:22:39.520 --> 00:22:39.940
Ja, okay.

00:22:40.140 --> 00:22:44.380
Genau, und ab da läuft es dann sehr autonom.

00:22:45.800 --> 00:22:49.620
Auf der anderen Seite gibt es natürlich auch so ein paar Trade-offs in der Richtung.

00:22:50.320 --> 00:22:54.640
Das ist nämlich dann, dass Ansible eigentlich so den State der Maschine nicht kennt.

00:22:55.160 --> 00:22:58.820
Wenn man immer, also wenn man einen Agent drauf hat, der meldet dann regelmäßig zurück und sagt dann,

00:22:59.280 --> 00:23:02.940
Ja, hör mal, hier ist übrigens gerade, ja, die Pakete sind ausgelaufen,

00:23:03.160 --> 00:23:04.120
könntest mal ein Update machen.

00:23:04.840 --> 00:23:06.860
Davon weiß Ansel Bilder nichts.

00:23:07.020 --> 00:23:09.340
Es geht einfach kaputt oder aus, wenn irgendwas nicht stimmt.

00:23:09.680 --> 00:23:12.120
Ja, also der hält da im State nicht.

00:23:12.400 --> 00:23:15.580
Also wenn du sagst, okay, ich möchte halt immer die aktuellste Version

00:23:15.580 --> 00:23:20.000
vom Apache drauf haben, dann ist das für den Moment,

00:23:20.060 --> 00:23:21.080
wo das ausgeführt wird, so.

00:23:21.460 --> 00:23:23.180
Genau, und danach ist es halt historisch, ja.

00:23:23.180 --> 00:23:25.200
Genau, danach ist es dann gewesen.

00:23:26.060 --> 00:23:27.660
Und die andere Annahme ist natürlich dann auch,

00:23:28.260 --> 00:23:31.020
dass halt niemand auf dem Server was macht,

00:23:31.960 --> 00:23:33.520
außer über Ansible.

00:23:35.200 --> 00:23:37.580
Damit man halt den State hat, den man einmal...

00:23:37.580 --> 00:23:39.460
Aber das ist so eine Konvention, die man dann haben muss.

00:23:39.600 --> 00:23:40.400
Das könnte ja auch anders sein.

00:23:40.460 --> 00:23:42.000
Es könnte ja auch sein, dass irgendein Admin irgendein Login hat

00:23:42.000 --> 00:23:42.960
und dann einfach irgendwas macht.

00:23:43.040 --> 00:23:45.480
Und das hat mit dem, was die Ansible-Wahrheit war, nichts zu tun.

00:23:45.880 --> 00:23:47.920
Genau. Und deswegen weiß ich am...

00:23:47.920 --> 00:23:50.160
Also, wenn ich das nächste Mal dann Ansible ausführe,

00:23:51.080 --> 00:23:54.040
halt nicht, wie sieht denn jetzt die Wirklichkeit auf der Maschine aus.

00:23:54.280 --> 00:23:54.900
Mhm, okay.

00:23:56.940 --> 00:23:58.020
Ja, also vielleicht wollen wir

00:23:58.020 --> 00:23:59.840
tatsächlich so ein bisschen reingehen, was Ensemble macht, wie das

00:23:59.840 --> 00:24:01.900
so macht. Ja, also ich würde sagen,

00:24:02.020 --> 00:24:03.860
generell der größte Unterschied eben zu den

00:24:03.860 --> 00:24:05.720
anderen ist halt, dass es Ancient-less ist. Das ist halt

00:24:05.720 --> 00:24:07.840
ein Riesenunterschied. Und da kommen dann halt,

00:24:07.920 --> 00:24:09.740
also einmal ist es halt ein Riesenfall. Man braucht nur SSH,

00:24:09.820 --> 00:24:11.600
das ist alles. Das hat man ja meistens. Also ich würde sagen,

00:24:11.860 --> 00:24:13.180
es passt halt gut zu dieser Geschichte.

00:24:13.960 --> 00:24:15.760
Was passiert eigentlich, wenn man jetzt halt eben

00:24:15.760 --> 00:24:17.880
so irgendwo sich einen Rechner klickt

00:24:17.880 --> 00:24:19.420
und kriegt man halt meistens

00:24:19.420 --> 00:24:21.780
ein Root-Login da.

00:24:22.160 --> 00:24:23.460
Das ist halt etwas,

00:24:23.860 --> 00:24:25.600
bis dahin ist es ja meistens schon automatisiert.

00:24:25.980 --> 00:24:27.840
so, und dann, ab dann ist halt

00:24:27.840 --> 00:24:29.940
die Frage, was macht man dann? Aber dann braucht man halt auch nicht mehr

00:24:29.940 --> 00:24:31.740
und dann kann man mit Ansible schon anfangen, während man

00:24:31.740 --> 00:24:33.880
bei anderen Sachen, dann muss man halt dann irgendwie einen Agent installieren

00:24:33.880 --> 00:24:34.400
und keine Ahnung.

00:24:35.780 --> 00:24:37.580
Ja, und ja,

00:24:37.780 --> 00:24:39.820
das ist halt der Vorteil, aber es ist halt natürlich in gewisser

00:24:39.820 --> 00:24:41.740
Weise auch Nachteil irgendwie, weil das macht halt dann

00:24:41.740 --> 00:24:43.600
bestimmte Sachen eben, wie er schon angesprochen hat, also eine

00:24:43.600 --> 00:24:45.680
Geschichte, die ich noch hinzufügen würde, ist,

00:24:45.740 --> 00:24:47.680
macht das halt auch langsam. Das ist halt dadurch,

00:24:47.760 --> 00:24:49.300
dass das alles durch S haben muss.

00:24:50.220 --> 00:24:51.720
Also wenn zum Beispiel Files kopieren,

00:24:51.820 --> 00:24:53.560
viele Files kopieren, ist halt mit Ansible

00:24:53.560 --> 00:24:55.560
oder Templates, die dann

00:24:55.560 --> 00:24:57.300
wie man da erzeugt, das ist halt schon relativ klar.

00:24:57.460 --> 00:24:59.440
Ja, weiß ich nicht. Das kommt wieder ein bisschen

00:24:59.440 --> 00:25:01.660
drauf an. Okay, gut. Interessant, ja.

00:25:01.880 --> 00:25:02.460
Ja, also weil

00:25:02.460 --> 00:25:05.560
ich nehme das vielleicht jetzt vorweg, also was

00:25:05.560 --> 00:25:07.540
bei mir immer so ein bisschen

00:25:07.540 --> 00:25:09.640
bei dieser Infrastruktur-as-a-Service-Geschichte

00:25:09.640 --> 00:25:10.780
dazukommt, ist halt dann Terraform,

00:25:11.220 --> 00:25:13.160
weil ein Terraform-Provider halt,

00:25:13.660 --> 00:25:15.020
die sind geschrieben für, weiß ich,

00:25:15.880 --> 00:25:17.460
AWS und Azure und

00:25:17.460 --> 00:25:19.300
Google Cloud und auch zum Beispiel Hetzner oder sowas.

00:25:19.380 --> 00:25:21.320
Also jeder kann seinen eigenen Provider in Go irgendwie schreiben

00:25:21.320 --> 00:25:23.540
für Terraform, für diese

00:25:23.540 --> 00:25:25.380
HashiCorp-Language, in der man dann

00:25:25.380 --> 00:25:27.540
auch in YAML Infrastruktur definieren

00:25:27.540 --> 00:25:29.360
kann. Also wie sieht die tatsächliche Hardware

00:25:29.360 --> 00:25:31.320
auf? Wie viele Kerne hat der Rechner, den du

00:25:31.320 --> 00:25:33.040
haben willst? Wie groß ist die Platte? Und

00:25:33.040 --> 00:25:35.160
wie ist die Netzwerkkonfiguration von dem Ding?

00:25:35.880 --> 00:25:37.480
Also das alles, was diese Cloud-Provider

00:25:37.480 --> 00:25:39.380
anbieten. Und dann ist jetzt die

00:25:39.380 --> 00:25:41.380
Frage, wie man das mit Ansible beispielsweise

00:25:41.380 --> 00:25:43.340
kombiniert. Ja, man hat halt dann

00:25:43.340 --> 00:25:45.340
entweder macht man

00:25:45.340 --> 00:25:47.000
per Ansible so Terraform. Da musst du

00:25:47.000 --> 00:25:49.260
manchmal nochmal erklären, wie das funktioniert. Das habe ich noch nicht ganz

00:25:49.260 --> 00:25:51.320
begriffen. Und wie ich das mache, was

00:25:51.320 --> 00:25:53.320
ich ganz nett finde, ist tatsächlich Terraform

00:25:53.320 --> 00:25:55.740
anzufangen und bei dem Apply

00:25:55.740 --> 00:25:57.980
mit die Ansible-Kommandos

00:25:57.980 --> 00:25:59.960
reinzugeben, die auf dem Server laufen

00:25:59.960 --> 00:26:01.760
sollen. Und dann bedeutet das natürlich,

00:26:02.360 --> 00:26:03.940
das ist so ein bisschen von hinten in den Wurzels Augen,

00:26:04.020 --> 00:26:06.000
das muss dann so ein Cloud-Init-Skript zum Beispiel mit angeben,

00:26:06.120 --> 00:26:07.680
was dann auch quasi

00:26:07.680 --> 00:26:09.860
Ansible selbst auf dem Rechner installiert und dann

00:26:09.860 --> 00:26:12.080
als Local-Host-Inventory läuft.

00:26:12.360 --> 00:26:14.080
Also, dass eine Host läuft, dann halt

00:26:14.080 --> 00:26:15.300
local.

00:26:15.960 --> 00:26:17.380
Ja, kann man so machen.

00:26:17.380 --> 00:26:19.260
Es ist aber sehr kompliziert, ja.

00:26:19.400 --> 00:26:21.480
Ja, also du hast halt hinterher das Problem,

00:26:21.580 --> 00:26:23.620
dass du halt für Management die IPs wieder rausreichen musst

00:26:23.620 --> 00:26:25.420
und einen SSH-Zugang brauchst, den Ensoble nutzen kann,

00:26:25.480 --> 00:26:27.540
damit es halt dann sowas wie Upgrades oder sowas

00:26:27.540 --> 00:26:29.440
auf einen Kisten ausgerollt werden kann, wenn du da

00:26:29.440 --> 00:26:31.500
mehrere Farmen mitträumen wirst.

00:26:32.100 --> 00:26:33.760
Ich weiß nicht, ob ich das kompliziert finde,

00:26:34.120 --> 00:26:35.960
aber das ist halt so andersrum,

00:26:36.060 --> 00:26:37.340
weil du hast halt immer nur so einen Localhost,

00:26:37.400 --> 00:26:39.420
den du dann provisionst, aber der sieht dann

00:26:39.420 --> 00:26:41.360
schon so aus, wie du willst. Vielleicht erklärst du

00:26:41.360 --> 00:26:43.000
nochmal kurz, wie es andersrum bei dir funktioniert.

00:26:43.120 --> 00:26:44.080
Erst Ensoble, dann Terraform.

00:26:44.860 --> 00:26:47.200
Ja, also letztlich mache ich auch

00:26:47.200 --> 00:26:49.380
also erst Terraform.

00:26:49.900 --> 00:26:50.160
Ach so.

00:26:50.820 --> 00:26:52.260
Und dann lasse ich mir das

00:26:52.260 --> 00:26:54.800
Inventory dynamisch erstellen.

00:26:54.940 --> 00:26:57.140
Ah genau, das hätte ich jetzt auch gedacht, dass das vielleicht ein guter Weg ist.

00:26:57.140 --> 00:26:58.680
Und dann, genau, also

00:26:58.680 --> 00:27:01.260
so der andere Weg, Ansible und dann Terraform

00:27:01.260 --> 00:27:02.680
heißt dann, okay, ich habe dann erstmal

00:27:02.680 --> 00:27:05.360
Ansible und lasse dann

00:27:05.360 --> 00:27:06.580
ja,

00:27:07.400 --> 00:27:09.240
da soweit dann schon mal alle Templates

00:27:09.240 --> 00:27:10.980
und soweit ausfüllen, wie ich das letztlich haben möchte

00:27:10.980 --> 00:27:12.780
und starte von da aus dann den Terraform.

00:27:13.880 --> 00:27:14.960
Kann man dann auch machen,

00:27:15.400 --> 00:27:16.000
aber ich finde

00:27:16.000 --> 00:27:18.780
der, also

00:27:18.780 --> 00:27:20.380
richtige TMWs.

00:27:20.380 --> 00:27:22.680
Vielleicht müssen wir das nochmal kurz auseinander drusseln. Also erst

00:27:22.680 --> 00:27:24.840
Ansible, lässt du dann die Terraform

00:27:24.840 --> 00:27:26.540
Templates von Ansible befüllen,

00:27:27.160 --> 00:27:28.080
dass halt quasi

00:27:28.080 --> 00:27:30.800
Terraform dann weiß,

00:27:31.520 --> 00:27:32.820
welche, also die Frage ist halt,

00:27:32.900 --> 00:27:34.840
wo läuft dann diese ersten Control-Nodes? Läuft die dann

00:27:34.840 --> 00:27:36.800
lokal und füllt dann quasi die

00:27:36.800 --> 00:27:38.800
Terraform Templates mit den Dingen, die du dir vorgestellt hast,

00:27:39.020 --> 00:27:40.540
über ein eigenes Ansible

00:27:40.540 --> 00:27:42.800
Inventory oder irgendwelche Rollen, die du dir

00:27:42.800 --> 00:27:45.000
definiert hast, aus. Und dann fängt es an,

00:27:45.000 --> 00:27:46.760
dann die Infrastruktur zu deployen und

00:27:46.760 --> 00:27:48.440
die nächste Frage wird dann wieder,

00:27:48.780 --> 00:27:50.280
wie sehen denn denn die Kisten aus?

00:27:50.360 --> 00:27:51.720
Da muss Ansible ja quasi wieder hingehen,

00:27:51.800 --> 00:27:53.760
diese Nodes, die es erstellt hat,

00:27:54.300 --> 00:27:57.040
connecten und dann da seine Rollen aufbauen.

00:27:57.360 --> 00:27:57.960
Vielleicht noch ganz kurz,

00:27:58.040 --> 00:27:59.720
eine Ansible-Rolle ist quasi genau das,

00:27:59.940 --> 00:28:00.460
was man hat.

00:28:00.540 --> 00:28:01.700
Also eine Konfiguration für irgendwas.

00:28:02.040 --> 00:28:03.820
Also Rolle, Datenbank-Server, Rolle, Web-Applikation, Rolle.

00:28:03.820 --> 00:28:04.560
Genau, das ist also die Frage.

00:28:04.900 --> 00:28:06.220
Wollen wir nochmal in die Definition gehen,

00:28:06.340 --> 00:28:11.400
damit wir das Thema Playbooks, Plays, Tasks und Rollen klar haben,

00:28:11.480 --> 00:28:13.840
weil ich finde, das ist das Verwirrendste.

00:28:13.960 --> 00:28:15.900
Also Inventory, damit kommt man ja irgendwie so klar.

00:28:17.180 --> 00:28:18.540
Vielleicht auch nochmal erklären für jemand,

00:28:18.560 --> 00:28:44.540
Also Inventory, das sind so meine Kisten, das ist eigentlich eine YAML oder Indie-Datei und da kann ich dann die IPs oder die Server reinschreiben, die ich dann erreichen möchte und die kann ich auch ein bisschen kopieren, um dann zu sagen können, okay, das sind meine Datenbank-Server, das sind meine Web-Server und die kann ich dann letztlich in einem Playbook halt ansprechen.

00:28:44.540 --> 00:28:50.340
Also ein Playbook ist quasi eine Anleitung, welche Rollen ein Server haben soll, der die und die Bestimmung erfüllt.

00:28:50.560 --> 00:29:12.880
Ja, es ist so ein bisschen die Metapher aus dem Football. Du hast dann als Coach von deinen Servern sagst, okay, wir spielen jetzt diesen Spielzug und alle Server, die Datenbank sind, gehen jetzt alle nach links. Und da ist dann das Play drin, wo dann drin steht, okay, welche einzelnen Anweisungen da erledigt werden müssen.

00:29:12.880 --> 00:29:23.300
Okay, dann in einem Play, also dann, wenn eine Rolle ausgeführt wird, in jeder Rolle stehen dann Aufgaben drin, also Tasks drin, welche alle aus diesem Föber ausgeführt werden sollen, damit das so ist, wie man sich das vorstellt.

00:29:23.980 --> 00:29:40.220
Genau, aber Play ist halt, ein Playbook kann halt Rollen benutzen, aber Play, das ist keine Rolle selber, sondern Playbook ist halt, da kann ich halt, genau, Rollen drin benutzen, aber es gibt auch Leute, die das gar nicht machen, sondern die alles immer inkluden irgendwie, es ist halt, ja.

00:29:40.220 --> 00:29:42.020
Ja, letztlich ist es eine Hilfe,

00:29:42.260 --> 00:29:44.020
dann seinen Code zu organisieren.

00:29:45.300 --> 00:29:46.200
Ja, man kann natürlich

00:29:46.200 --> 00:29:48.100
auch alles in eine große Datei schreiben.

00:29:48.120 --> 00:29:49.500
Man kann auch alles, das geht sehr gut.

00:29:49.680 --> 00:29:51.680
Ich mache tatsächlich ganz viele Rollen irgendwie.

00:29:52.940 --> 00:29:54.420
Also ich weiß nicht,

00:29:54.520 --> 00:29:55.720
also Ensemble Galaxy ist auch ganz schön,

00:29:55.780 --> 00:29:58.320
das ist halt der Cloud, ist das Cloud-Dienst?

00:29:58.740 --> 00:29:59.360
Also so ein...

00:29:59.360 --> 00:30:01.960
Ja, die Sammlung von Rollen, die kann man hochstellen.

00:30:02.080 --> 00:30:04.200
So wie PIP quasi, bloß für

00:30:04.200 --> 00:30:04.460
Ensemble.

00:30:05.220 --> 00:30:07.980
Also ich bin immer so ein bisschen picky, ich mache immer viele Sachen

00:30:07.980 --> 00:30:09.600
selber, also notamentet hier und so.

00:30:10.220 --> 00:30:16.620
Ja, genau. Also dann die Ansible Galaxy gucke ich mir dann auch zur Inspiration an.

00:30:16.620 --> 00:30:32.060
Ja, und jedenfalls, da könnte man sich halt auch solche Rollen einfach inkluden von dort. Und dann baut man halt seine Rollen und da legt man dann halt fest, welche Konfigurationsaufgaben ausgeführt werden müssen.

00:30:32.400 --> 00:30:40.760
Da kann man dann, weiß nicht, aus Gender-Templates, Konfigurationsdateien sich belegen und befüllen lassen mit Variablen, die man reinreicht von außen und so weiter.

00:30:41.280 --> 00:30:43.040
Das ist ja genau die Besonderheit bei Rollen.

00:30:43.540 --> 00:30:47.580
Da sind ja dann Variablen mit drin, Plugins mit drin, Templates mit drin, Dateien mit drin.

00:30:48.520 --> 00:30:55.520
Und das ist quasi so der Gegensatz dann zum Playbook, was das dann nicht unbedingt mit drin hat.

00:30:56.160 --> 00:31:01.260
Okay, also ich definiere mir halt immer so Playbooks, wo dann halt dann diese Rollenliste drin ist.

00:31:01.520 --> 00:31:02.860
die benenne ich dann irgendwie immer so

00:31:02.860 --> 00:31:05.760
Setup-Web-Server-with-blah

00:31:05.760 --> 00:31:07.280
oder so.

00:31:07.760 --> 00:31:09.480
Ja. Postgres zum Beispiel

00:31:09.480 --> 00:31:11.500
und Django auf einmal. Also dann wäre ja die

00:31:11.500 --> 00:31:13.560
Rolle letztlich Postgres und dann kann man

00:31:13.560 --> 00:31:15.080
sagen... Ja, dann wäre die Rolle Postgres und Django beispielsweise.

00:31:15.460 --> 00:31:17.600
Genau. Ja, und vielleicht haben die noch Dependencies,

00:31:17.780 --> 00:31:19.360
keine Ahnung, also bei mir ist zum Beispiel dann so ein

00:31:19.360 --> 00:31:21.480
Minimum-Server-Setup oder so mit drauf

00:31:21.480 --> 00:31:23.340
oder so. Genau. Und

00:31:23.340 --> 00:31:24.760
letztlich die Rollen, die

00:31:24.760 --> 00:31:26.920
soll man quasi so schreiben, dass man die

00:31:26.920 --> 00:31:29.200
wiederverwenden kann. Modular,

00:31:29.280 --> 00:31:31.280
austauschbar, egal. Genau, also Postgres ist

00:31:31.280 --> 00:31:33.310
halt überall, der Postgres und der

00:31:33.310 --> 00:31:35.490
Also ich finde das zum Beispiel schwierig,

00:31:35.750 --> 00:31:37.170
weil, was

00:31:37.170 --> 00:31:39.170
Ansible ja zum Beispiel auch ermöglicht, ist eine Unterscheidung

00:31:39.170 --> 00:31:41.170
zwischen den Betriebssystemen, die benutzt

00:31:41.170 --> 00:31:42.910
werden, also jetzt, ob ich jetzt einen

00:31:42.910 --> 00:31:45.290
Red Hat Enterprise habe oder einen debilen oder so

00:31:45.290 --> 00:31:46.350
und

00:31:46.350 --> 00:31:48.430
das finde ich ja so ein bisschen blöd, weil also ich

00:31:48.430 --> 00:31:50.990
habe keine Lust, immer meine Rollen für

00:31:50.990 --> 00:31:53.150
alle Systeme zu schreiben, die ich nicht benutze.

00:31:53.210 --> 00:31:55.210
Ja. Also so. Ja, genau.

00:31:55.670 --> 00:31:56.510
Ja. Also

00:31:56.510 --> 00:31:59.010
deswegen ist es eigentlich ganz gut,

00:31:59.110 --> 00:32:01.110
die Themen so homogen zu halten, damit man

00:32:01.110 --> 00:32:02.270
nicht so viele

00:32:02.270 --> 00:32:05.050
unterstützen muss. Aber da kann man natürlich

00:32:05.050 --> 00:32:07.190
auch nochmal mit dem Inventory arbeiten und dann

00:32:07.190 --> 00:32:09.430
beim Inventory den einzelnen

00:32:09.430 --> 00:32:11.130
Servern nochmal Variablen mitgeben

00:32:11.130 --> 00:32:12.570
und sagen, okay, der ist halt

00:32:12.570 --> 00:32:14.510
anders als die anderen.

00:32:15.130 --> 00:32:17.570
Ja, genau.

00:32:18.830 --> 00:32:19.390
Ich meine,

00:32:19.710 --> 00:32:21.130
ich verstehe schon, dass Leute diesen Fall haben.

00:32:21.210 --> 00:32:22.430
Ich habe den selber auch nicht. Bei mir sind alle

00:32:22.430 --> 00:32:24.730
Server, haben irgendwie das gleiche Betriebssystem.

00:32:25.270 --> 00:32:27.010
Welches benutzt du? Ja, Debian

00:32:27.010 --> 00:32:28.590
tatsächlich Bullseye zurzeit.

00:32:29.630 --> 00:32:30.730
Das ist nicht ArchLinux.

00:32:31.110 --> 00:32:37.130
Ja, es gibt da auch interessante Alternativen.

00:32:37.330 --> 00:32:38.930
Also womit ich ab und zu mal geliebt georgelt habe,

00:32:38.970 --> 00:32:39.490
ist halt nix.

00:32:41.610 --> 00:32:43.030
Also ich habe nix auch benutzt,

00:32:43.210 --> 00:32:44.970
aber nur als Desktop, also nicht als Server-Variante.

00:32:45.890 --> 00:32:47.890
Also gerade Python ist da sehr, sehr nervig mit,

00:32:47.950 --> 00:32:51.030
weil man halt gar nicht so wie Paketmanagement

00:32:51.030 --> 00:32:52.130
über seine Projekte verwalten kann,

00:32:52.190 --> 00:32:53.830
sondern muss halt jedes Mal seine eigenen Environments

00:32:53.830 --> 00:32:54.710
irgendwie zusammenfummeln.

00:32:55.110 --> 00:32:56.710
Und es ist halt nicht alles verfügbar

00:32:56.710 --> 00:32:59.790
und es ist einfach sehr, sehr viel Maintenance-Arbeit,

00:32:59.790 --> 00:33:00.990
wenn man da irgendwie Updates fahren will

00:33:00.990 --> 00:33:02.370
und dann nicht, dass das irgendwie...

00:33:02.370 --> 00:33:05.050
Man hat halt sehr viel Kontrolle, die man auch ausüben

00:33:05.050 --> 00:33:05.330
muss.

00:33:06.430 --> 00:33:09.270
Das ist schon irgendwie sexy, aber...

00:33:09.270 --> 00:33:10.930
Genau, das würde

00:33:10.930 --> 00:33:12.930
mich eigentlich reizen, weil mir das Konzept natürlich schon

00:33:12.930 --> 00:33:14.930
irgendwie ganz gut gefällt und so, aber auf der

00:33:14.930 --> 00:33:16.850
anderen Seite, irgendwie Debian benutze ich halt schon so lange

00:33:16.850 --> 00:33:19.070
und kenne ich halt gut und es gibt keine Überraschungen

00:33:19.070 --> 00:33:20.950
und die Frage ist, muss ich

00:33:20.950 --> 00:33:21.870
halt die Schlachten aussuchen?

00:33:22.830 --> 00:33:24.810
Dann würde ich sagen, na gut, dann nehme ich damit, dass es halt irgendwie

00:33:24.810 --> 00:33:26.190
langweiliges Debian ist

00:33:26.190 --> 00:33:28.190
und dann kann ich

00:33:28.190 --> 00:33:29.870
die interessanten...

00:33:29.870 --> 00:33:31.870
mein Innovation-Token irgendwo anders

00:33:31.870 --> 00:33:33.970
ausgeben, wo es halt vielleicht irgendwie mehr bringt.

00:33:34.590 --> 00:33:35.830
Aber es reizt mich schon, das muss ich

00:33:35.830 --> 00:33:37.930
sagen, ja, das ist, ja.

00:33:38.350 --> 00:33:39.730
Ja, also bei der Definition jetzt,

00:33:39.790 --> 00:33:41.270
ich glaube, wo waren wir denn?

00:33:41.470 --> 00:33:42.970
Infantiles, Playbooks, Hosts?

00:33:42.970 --> 00:33:44.530
Genau. Haben wir das

00:33:44.530 --> 00:33:46.950
klar genug definiert oder sind wir da auch wieder so

00:33:46.950 --> 00:33:48.590
langsam? Ja,

00:33:48.810 --> 00:33:50.730
genau. Ich wollte

00:33:50.730 --> 00:33:52.730
irgendwas sagen, ich hab's wieder vergessen. Ich glaube, ja, ich hab

00:33:52.730 --> 00:33:54.630
diesen Fall eben auch, das nervt mich auch in diesen

00:33:54.630 --> 00:33:55.810
Rollen, die man halt von

00:33:55.810 --> 00:33:58.750
der Galaxy bekommt.

00:33:58.890 --> 00:34:00.170
eben sowas wie Postgres zum Beispiel.

00:34:00.970 --> 00:34:02.890
Also, was ich dann, wenn ich diese

00:34:02.890 --> 00:34:04.750
Rolle, ich weiß nicht, ob ihr die kennt,

00:34:04.990 --> 00:34:06.770
die habe ich mal irgendwann benutzt, ich weiß nicht,

00:34:06.810 --> 00:34:08.850
gibt es immer einen, der schreibt

00:34:08.850 --> 00:34:10.610
die alle. Wie heißt der? Gerling?

00:34:10.810 --> 00:34:12.470
Genau, der hat auch ein richtig

00:34:12.470 --> 00:34:14.790
gutes Buch

00:34:14.790 --> 00:34:16.670
über Ansible und noch ein paar gute

00:34:16.670 --> 00:34:18.610
YouTube-Videos. Alle in die Shownotes?

00:34:18.790 --> 00:34:20.810
Genau, der hat auch einen Vortrag,

00:34:21.390 --> 00:34:22.810
wie man rausfindet,

00:34:23.970 --> 00:34:24.970
welche Rollen

00:34:24.970 --> 00:34:26.370
gut sind in der Ansible-Galaxy.

00:34:26.750 --> 00:34:28.670
Hat dann ein Schaubild

00:34:28.670 --> 00:34:30.570
gesagt, mit so ein bisschen Augenzwinkern.

00:34:30.970 --> 00:34:32.450
Also man guckt dann, ob er der Autor ist.

00:34:32.450 --> 00:34:33.490
Ja, tatsächlich.

00:34:34.130 --> 00:34:36.350
Und wenn nicht, dann fragt man ihn an und wartet so lange,

00:34:36.450 --> 00:34:37.030
bis die dann kommt.

00:34:38.090 --> 00:34:40.270
Ja, genau. Aber das Problem bei denen

00:34:40.270 --> 00:34:41.930
ist halt oft,

00:34:42.830 --> 00:34:44.150
weil der hat dann eben für Postgres

00:34:44.150 --> 00:34:46.270
zum Beispiel einen und die fand ich nicht, sondern ich habe seine geforkt

00:34:46.270 --> 00:34:46.670
und dann

00:34:46.670 --> 00:34:49.930
einfach

00:34:49.930 --> 00:34:52.310
das ist zwar, also den Hauptteil

00:34:52.310 --> 00:34:54.470
davon, der interessiert mich halt nicht, irgendwie die ganzen Installationen

00:34:54.470 --> 00:34:56.370
für alle möglichen Plattformen und dann der Teil,

00:34:56.750 --> 00:34:57.830
der mich interessiert für Debian,

00:34:58.290 --> 00:35:00.410
da hätte ich keine andere Version.

00:35:00.650 --> 00:35:02.470
Dann muss ich das aber irgendwie patchen, dass das dann doch geht.

00:35:03.310 --> 00:35:04.770
Ja, gut, Ansible Galaxy,

00:35:04.910 --> 00:35:06.530
das ist halt für alle

00:35:06.530 --> 00:35:08.390
Anwendungsfälle und

00:35:08.390 --> 00:35:09.110
gut.

00:35:10.570 --> 00:35:12.970
Also wie gesagt, eher so die Inspirationsquelle

00:35:12.970 --> 00:35:14.730
oder wenn man es halt wirklich mal

00:35:14.730 --> 00:35:16.530
schnell hochziehen will, um zu gucken,

00:35:17.130 --> 00:35:18.470
okay, wie sieht das so aus?

00:35:21.010 --> 00:35:22.690
Ja, okay, das ist so ein bisschen der Docker-Container

00:35:22.690 --> 00:35:24.510
für den Server oder so. Also

00:35:24.510 --> 00:35:26.610
so eine Rolle. Ich spawne jetzt meinen Server

00:35:26.610 --> 00:35:28.410
in der und der Saison, ja.

00:35:29.250 --> 00:35:30.670
Ja, in gewisser Weise, das finde ich

00:35:30.670 --> 00:35:32.490
auch, das ist vielleicht ein guter Vergleich, das halt auch so,

00:35:32.530 --> 00:35:34.730
aber ich meine, ist halt die Frage, ob man damit Rolle meint

00:35:34.730 --> 00:35:36.810
oder ein Playbook, weil ich verwende eher Playbooks

00:35:36.810 --> 00:35:38.490
tatsächlich so, wie vielleicht

00:35:38.490 --> 00:35:40.490
ein Docker-Pile. Meistens braucht halt

00:35:40.490 --> 00:35:42.650
irgendwie so ein Server mehrere Rollen, würde ich sagen, damit er das

00:35:42.650 --> 00:35:44.330
macht, was man will. Ja, ja, aber

00:35:44.330 --> 00:35:46.590
ich würde sagen, ich habe halt

00:35:46.590 --> 00:35:48.790
für diese Geschichte zum Beispiel,

00:35:49.010 --> 00:35:50.350
er soll irgendeine Funktion erfüllen,

00:35:50.570 --> 00:35:52.610
habe ich halt ein Playbook bei mir

00:35:52.610 --> 00:35:54.570
und nicht eine Rolle. Genau, ja, habe ich auch,

00:35:54.690 --> 00:35:56.250
Ja, das kombiniert halt bei mir dann so

00:35:56.250 --> 00:35:57.410
bestimmt. Genau, und

00:35:57.410 --> 00:35:59.750
tatsächlich ist das, finde ich, auch

00:35:59.750 --> 00:36:01.970
sehr ähnlich zu sowas wie Dockerfile

00:36:01.970 --> 00:36:03.890
oder, weiß ich nicht, Docker Compose

00:36:03.890 --> 00:36:05.930
oder sowas. Nur, dass es halt

00:36:05.930 --> 00:36:07.990
irgendwie, dass man die ganzen

00:36:07.990 --> 00:36:09.610
Einschränkungen nicht hat, die man bei Docker so hat.

00:36:10.210 --> 00:36:12.150
Und auch

00:36:12.150 --> 00:36:13.890
die ganzen Security-Sachen sind, finde ich, da

00:36:13.890 --> 00:36:15.990
deutlich, wenn man das so macht, deutlich klarer als jetzt bei

00:36:15.990 --> 00:36:18.190
Docker. Und, naja.

00:36:18.830 --> 00:36:19.550
Ja, nochmal so zum

00:36:19.550 --> 00:36:21.550
Abgrenzung Rolle und Playbook.

00:36:22.610 --> 00:36:23.910
Ja, Rolle ist wirklich dafür

00:36:23.910 --> 00:36:25.750
gedacht, alleine zu stehen.

00:36:26.010 --> 00:36:27.810
Also bei dem Playbook, dann sage ich

00:36:27.810 --> 00:36:28.910
okay, ich möchte halt

00:36:28.910 --> 00:36:31.770
so einen bestimmten Server auf die

00:36:31.770 --> 00:36:33.750
oder eine bestimmte Gruppe von

00:36:33.750 --> 00:36:35.930
Servern, so konfiguriert haben und

00:36:35.930 --> 00:36:37.870
eine Rolle wäre dann quasi so die

00:36:37.870 --> 00:36:39.790
Unterfunktion davon, wenn ich sage, okay

00:36:39.790 --> 00:36:41.810
Diese Konfiguration wird dann angewandt.

00:36:41.870 --> 00:36:43.570
Genau. Und

00:36:43.570 --> 00:36:45.330
ja, das Playbook,

00:36:45.510 --> 00:36:47.770
wenn man sich dann so eine

00:36:47.770 --> 00:36:49.690
größere, größeres Cluster

00:36:49.690 --> 00:36:51.490
vorstellt, enthält dann es halt

00:36:51.490 --> 00:36:53.410
mehrere Rollen. Also ein Loadbalancer,

00:36:53.830 --> 00:36:55.450
einen Web-Server, eine Datenbank.

00:36:55.470 --> 00:36:57.450
Was der Running-Back machen soll, was der Quarter-Back machen soll,

00:36:57.510 --> 00:36:59.290
wie die Define stehen soll. Richtig, genau.

00:37:00.710 --> 00:37:01.090
Ja, ja.

00:37:02.930 --> 00:37:03.650
Okay, also ich glaube,

00:37:03.750 --> 00:37:05.550
dann die grundsätzlichen Sachen haben wir definiert.

00:37:05.590 --> 00:37:07.330
Haben wir noch was vergessen? Achso, vielleicht Facts.

00:37:07.450 --> 00:37:08.150
Was ist ein Fact?

00:37:09.330 --> 00:37:11.090
Ja, das ist halt das, was Ansible

00:37:11.090 --> 00:37:13.210
irgendwie rausfindet.

00:37:13.210 --> 00:37:15.210
Also am Anfang...

00:37:15.210 --> 00:37:17.470
Ja, man macht das halt so ein Gathering-Facts.

00:37:18.370 --> 00:37:19.310
Das kann man aber auch abschalten,

00:37:19.370 --> 00:37:21.210
wenn man es nicht braucht. Dingen, wo dann halt

00:37:21.210 --> 00:37:23.050
bestimmte Variablen belegt werden, mit

00:37:23.050 --> 00:37:24.990
Informationen über das System, auf dem man grad irgendwie...

00:37:24.990 --> 00:37:26.970
Kommt natürlich daher, dass Ansible das

00:37:26.970 --> 00:37:29.010
erstmal nicht weiß. Ja, ja. So, wo

00:37:29.010 --> 00:37:31.150
bin ich denn? Und da kriegt man natürlich dann

00:37:31.150 --> 00:37:32.970
auch ein schönes Python-Directory zurück,

00:37:33.490 --> 00:37:34.810
was halt alles

00:37:34.810 --> 00:37:36.610
Erdenkliche auf diesem System

00:37:36.610 --> 00:37:39.050
herausgefunden hat. Da kann man auch mal

00:37:39.050 --> 00:37:40.530
schön reingucken. Ja.

00:37:40.770 --> 00:37:42.530
Da ist ja viel interessantes Zeug drin. Genau.

00:37:42.770 --> 00:37:44.870
Auch noch genau die Sachen vielleicht, also die ganzen Variablen, die man

00:37:44.870 --> 00:37:47.070
irgendwie reinpipet oder irgendwie, die man dann behandelt

00:37:47.070 --> 00:37:49.050
als Facts oder sowas, die halt da schon drin sind.

00:37:49.730 --> 00:37:50.770
Da kann man ja ganz viele

00:37:50.770 --> 00:37:53.030
Python-Funktionen auch drauf pipen, die halt

00:37:53.030 --> 00:37:55.190
relativ nativ sich anfühlen,

00:37:55.410 --> 00:37:56.990
wenn man das irgendwie bearbeiten möchte.

00:37:57.390 --> 00:37:58.890
Achso, du meinst, um nochmal andere Dinge,

00:37:58.970 --> 00:38:00.030
die da jetzt nicht drin waren,

00:38:00.150 --> 00:38:03.070
man kann in einem Task sagen, Set Fact

00:38:03.070 --> 00:38:04.410
und dann halt irgendwas.

00:38:04.410 --> 00:38:06.350
Genau, dann kann man dann Pipe, Strip,

00:38:06.650 --> 00:38:08.210
String, Station, was auch immer.

00:38:08.290 --> 00:38:09.990
Die Playbooks, die sind ja letztlich,

00:38:10.590 --> 00:38:12.470
läuft da halt auch ein Ginger 2 Support hinter

00:38:12.470 --> 00:38:14.810
und das heißt, ich kann alles letztlich

00:38:14.810 --> 00:38:16.810
machen, was ich in Ginger 2 machen kann

00:38:16.810 --> 00:38:18.810
mit den Facts, die vorher

00:38:18.810 --> 00:38:20.250
Ansible gesammelt hat und ich

00:38:20.250 --> 00:38:22.810
kann die letztlich wie ein Directory accessen

00:38:22.810 --> 00:38:23.990
oder beziehungsweise ist es ja eins

00:38:23.990 --> 00:38:26.150
und dann kann ich da alles

00:38:26.150 --> 00:38:28.670
machen, was Ginger 2

00:38:28.670 --> 00:38:30.490
mir letztlich erlaubt und das ist ja echt

00:38:30.490 --> 00:38:31.090
eine ganze Menge.

00:38:32.570 --> 00:38:34.370
Da vielleicht noch ein Exkurs,

00:38:34.470 --> 00:38:34.970
Ginger 2?

00:38:36.290 --> 00:38:37.390
Ja, Ginger 2,

00:38:38.210 --> 00:38:39.390
Templating Engine,

00:38:41.310 --> 00:38:41.930
letztlich

00:38:41.930 --> 00:38:43.530
so wie

00:38:43.530 --> 00:38:46.630
alle Templating Engines, die man so

00:38:46.630 --> 00:38:47.630
kennt. Django macht das ja auch.

00:38:48.110 --> 00:38:49.210
Ist auch ähnlich.

00:38:50.010 --> 00:38:52.750
Nicht genau so Ginger 2

00:38:52.750 --> 00:38:54.250
ist wahrscheinlich sogar die bessere Template-Language.

00:38:54.930 --> 00:38:56.710
Genau, es gibt auch Jinja 2 Support

00:38:56.710 --> 00:38:57.810
für Django, wenn man

00:38:57.810 --> 00:39:00.250
das dann machen möchte und

00:39:00.250 --> 00:39:02.470
bietet eigentlich auch die Möglichkeit,

00:39:03.330 --> 00:39:04.830
direkt Python in das Template

00:39:04.830 --> 00:39:06.670
zu schreiben oder halt in das Playbook dann

00:39:06.670 --> 00:39:08.550
und auch Funktionen zu definieren,

00:39:08.630 --> 00:39:09.730
die man dann später haben möchte.

00:39:11.150 --> 00:39:12.590
Wäre dann halt am Ende die Frage,

00:39:12.670 --> 00:39:14.390
ob man dann nicht lieber ein Modul schreibt,

00:39:14.530 --> 00:39:16.290
wo man dann direkt in Python arbeitet.

00:39:18.750 --> 00:39:19.490
Ja, okay.

00:39:20.950 --> 00:39:21.390
Interessant.

00:39:22.750 --> 00:39:24.430
Ich glaube, jetzt haben wir so ein bisschen definiert.

00:39:25.850 --> 00:39:28.210
Ich habe noch so jede Menge Fragen, die ich dazwischen habe,

00:39:28.310 --> 00:39:29.450
wenn man mit den ganzen Sachen umgeht.

00:39:29.930 --> 00:39:32.230
Aber jetzt vielleicht noch mal, warum wir kurz das definieren wollten,

00:39:32.450 --> 00:39:34.950
um diese Terraform-Ansible-Sache noch mal so ein bisschen zu verstehen.

00:39:37.690 --> 00:39:39.830
Was spricht jetzt zum Beispiel dagegen,

00:39:41.050 --> 00:39:43.470
sowas wie dieses lokale Ansible zu machen, deiner Meinung nach?

00:39:43.470 --> 00:39:47.530
Wenn man sagt, okay, man lädt jetzt einen Local-Host einfach

00:39:47.530 --> 00:39:48.810
und sagt ihm, welche Rollen er hat.

00:39:50.530 --> 00:39:53.170
Ja, also wirklich viel dagegen spricht nicht.

00:39:53.290 --> 00:39:55.550
Also es ist halt anders gedacht.

00:39:56.650 --> 00:39:59.830
Und dann bin ich immer doch eher dafür,

00:39:59.870 --> 00:40:02.710
die Werkzeuge so zu benutzen, wie die letztlich gedacht sind.

00:40:03.010 --> 00:40:06.090
Klar, du würdest dir halt die SSH-Verbindung dann sparen.

00:40:07.030 --> 00:40:08.350
Nee, ich brauche die halt über Terraform,

00:40:08.430 --> 00:40:09.430
muss ich die SSH-Verbindung bauen.

00:40:09.670 --> 00:40:12.710
Genau, aber nicht mehr dann die auf dem,

00:40:13.050 --> 00:40:14.910
also wenn du ja über die Local Connection gehst.

00:40:14.910 --> 00:40:15.930
Genau, ich mache dann Fire and Forget.

00:40:16.110 --> 00:40:18.310
Also ich sage dem halt quasi, renn los.

00:40:18.510 --> 00:40:19.690
Und dann macht er halt sein Ensobe-Kram.

00:40:20.530 --> 00:40:22.710
Ich habe da wenig Kontrolle drüber, ich muss halt dann auf den Server

00:40:22.710 --> 00:40:24.570
in die Logs gucken oder was auch immer, um

00:40:24.570 --> 00:40:25.930
festzustellen, wo sind die denn gerade.

00:40:28.110 --> 00:40:28.810
Genau, also

00:40:28.810 --> 00:40:30.810
da gibt es ja dann auch nicht mehr diese

00:40:30.810 --> 00:40:32.150
Rückmeldung zurück.

00:40:33.110 --> 00:40:34.630
Brauche ich vielleicht am Ende auch nicht, wenn ich dann

00:40:34.630 --> 00:40:36.790
in die Logs gucke. Ja gut, man muss halt einmal ordentlich

00:40:36.790 --> 00:40:38.710
E-Debuggen, damit er einmal sicherstellen kann, dass so ein Server

00:40:38.710 --> 00:40:39.710
das macht, was er will, aber ja.

00:40:40.450 --> 00:40:40.610
Ja.

00:40:42.730 --> 00:40:44.670
Also es ist auf jeden Fall durchaus ein gangbarer Weg.

00:40:46.710 --> 00:40:47.630
Ist dann die Frage,

00:40:48.830 --> 00:40:50.270
ob man da ein bisschen so

00:40:50.270 --> 00:40:52.030
die Idee hinter Ansible,

00:40:52.970 --> 00:40:53.190
ja.

00:40:53.890 --> 00:40:55.890
Also ich frage jetzt halt, was so ein Terraform ist, weil ich

00:40:55.890 --> 00:40:58.070
frage mich halt, wie dann halt Terraform sonst aussehen soll,

00:40:58.110 --> 00:41:00.090
weil ich weiß ja gar nicht, mit Ansible

00:41:00.090 --> 00:41:02.210
anzufangen, welcher Server habe ich denn denn jetzt?

00:41:02.390 --> 00:41:03.510
Ja, aber ich meine,

00:41:04.030 --> 00:41:05.750
gut, vielleicht macht ihr das, aber

00:41:05.750 --> 00:41:08.250
ich wundere mich mal, ich verwende gar keinen Terraform.

00:41:09.550 --> 00:41:10.090
Ich meine, ich habe jetzt

00:41:10.090 --> 00:41:10.970
auch nicht irgendwie

00:41:10.970 --> 00:41:14.150
jobmäßig irgendwas, große Cluster zu konfigurieren

00:41:14.150 --> 00:41:16.030
und so, wenn ich das hätte, hätte ich das vielleicht dann

00:41:16.030 --> 00:41:17.950
doch, aber so für meinen

00:41:17.950 --> 00:41:19.990
privaten oder so semi-privaten

00:41:19.990 --> 00:41:22.410
Jörg hat gerade zugegeben, dass er sich die einzelnen

00:41:22.410 --> 00:41:23.870
Cloud-Helfer einfach zusammenklickt.

00:41:24.010 --> 00:41:26.550
Ja, ich benutze halt das Web-Advisor und ich rufe jemanden an,

00:41:26.610 --> 00:41:27.210
der macht das dann.

00:41:28.910 --> 00:41:30.590
Nee, aber ich kenne, es sind so

00:41:30.590 --> 00:41:32.030
wenige, ja, so Privat-Helfer.

00:41:32.190 --> 00:41:33.590
Handverlesene Server.

00:41:33.810 --> 00:41:36.970
So viele habe ich dadurch, dass ich die nicht mehr kennen würde.

00:41:37.110 --> 00:41:38.790
Da kenne ich jeden Einzelnen mit Namen

00:41:38.790 --> 00:41:40.430
sozusagen. Und die kann ich dann auch

00:41:40.430 --> 00:41:41.370
in den Ventury reinschreiben.

00:41:41.410 --> 00:41:43.770
Ja, aber das ist ja eigentlich auch erst Terraform.

00:41:44.230 --> 00:41:46.090
Also, weil das macht ja genau das, was du da klicken würdest.

00:41:46.530 --> 00:41:48.250
Und dann Ensemble. Also nur mit dem Unterschied,

00:41:48.370 --> 00:41:50.230
dass ich jetzt halt einmal hingehe und

00:41:50.230 --> 00:41:52.550
sonst in Terraform beispielsweise einmal eine generelle

00:41:52.550 --> 00:41:54.190
SSH-Verbindung vorkonfiguriere

00:41:54.190 --> 00:41:56.210
und dann den Output sammle und die

00:41:56.210 --> 00:41:58.470
IPs dann ins Inventory reinschreibe,

00:41:58.610 --> 00:41:59.630
um die dann mit den Rollen zu versehen.

00:42:00.350 --> 00:42:01.990
Was halt dann so der direkte

00:42:01.990 --> 00:42:03.630
Endzippelweg ist, wie es vorgesehen ist.

00:42:04.210 --> 00:42:06.130
Was ich halt bei mir machen würde, ist halt,

00:42:06.170 --> 00:42:06.910
ich sage halt direkt

00:42:06.910 --> 00:42:10.050
beim Deployment von Terraform, was

00:42:10.050 --> 00:42:12.050
halt werden soll, und ich müsste mir

00:42:12.050 --> 00:42:13.430
dann halt auch aus dem Output den

00:42:13.430 --> 00:42:15.830
SSH, den ich mir dann selber, also ich

00:42:15.830 --> 00:42:17.870
mache dann keinen SSH-Zuruf mehr, sondern halt

00:42:17.870 --> 00:42:19.830
mit Keys, was ordentlich, dass es irgendwie einen User

00:42:19.830 --> 00:42:21.790
gibt, der das dann darf und der

00:42:21.790 --> 00:42:23.770
Nee, ja Moment, das wird

00:42:23.770 --> 00:42:25.350
interessant. Du machst, du

00:42:25.350 --> 00:42:27.270
connectest dich,

00:42:28.350 --> 00:42:29.890
wenn du Ansible benutzt,

00:42:30.010 --> 00:42:31.210
auf einen User? Nein.

00:42:31.970 --> 00:42:33.410
Auf dem Rechner? Nein, Moment.

00:42:34.210 --> 00:42:35.610
Ich gehe hin, ich baue

00:42:35.610 --> 00:42:37.790
eine Kiste, beispielsweise bei Hetzner

00:42:37.790 --> 00:42:39.730
oder bei Azure oder so was und

00:42:39.730 --> 00:42:41.490
sag dem über so ein Cloud-Init-Skript

00:42:41.490 --> 00:42:43.990
bitte installiere

00:42:43.990 --> 00:42:44.750
Ansible lokal.

00:42:45.470 --> 00:42:47.750
Aber dann kannst du auch alles über das Cloud-Init-Skript machen.

00:42:47.870 --> 00:43:03.850
Ja, also mache ich im Prinzip schon. Aber ich möchte ja gerne diese Flexibilität der Rollen haben, die ich dann über das Terraform-Skript reingebe. Das heißt, ich gebe quasi eigentlich nur den Pfad zum Playbook mit den Variablen, das kommt über Terraform, also die Extravariablen und das Playbook, das ausgeführt werden soll, kommt rein.

00:43:03.850 --> 00:43:05.790
und ich klone quasi lokal

00:43:05.790 --> 00:43:07.510
das Ansible-Server-Repo

00:43:07.510 --> 00:43:09.930
und dann lasse ich da lokal

00:43:09.930 --> 00:43:11.890
mit Localhost das

00:43:11.890 --> 00:43:13.890
Playbook laufen mit den entsprechenden Variablen.

00:43:14.390 --> 00:43:16.190
Was aber auch das Geschwindigkeitsproblem,

00:43:16.250 --> 00:43:17.870
was Jochen hatte, löst, weil das halt alles lokal

00:43:17.870 --> 00:43:19.830
auf der Maschine läuft. Ja gut, es kann gut sein, dass

00:43:19.830 --> 00:43:21.830
das dann schneller ist, ja. Genau, das läuft halt dann schnell einfach durch

00:43:21.830 --> 00:43:23.870
und konfiguriert die Maschine lokal halt einfach

00:43:23.870 --> 00:43:25.050
so, wie sie sein soll.

00:43:26.450 --> 00:43:27.730
Was ich dann natürlich machen muss,

00:43:28.130 --> 00:43:29.750
ist, also was ich auch mache, ist, ich konfiguriere

00:43:29.750 --> 00:43:31.590
zum Beispiel meinen Admin-User, ja, mit den

00:43:31.590 --> 00:43:33.730
entsprechenden Keys und tralala. Den könnte

00:43:33.730 --> 00:43:34.890
ich ja dann wieder rausgeben, ja?

00:43:35.570 --> 00:43:37.570
Ich brauche halt den Key, der Zugriff darauf hat, ich brauche

00:43:37.570 --> 00:43:39.630
den Nutzer-Account, der

00:43:39.630 --> 00:43:41.670
das darf und ich brauche die IP vom Server.

00:43:42.110 --> 00:43:43.570
Die kann ich mir aus den Terraform-Outputs hier wieder

00:43:43.570 --> 00:43:45.490
einsammeln und mir dann quasi so

00:43:45.490 --> 00:43:47.390
ein Service-Ansible

00:43:47.390 --> 00:43:49.110
noch da reinschreiben.

00:43:50.070 --> 00:43:51.670
Das sind aber dann trotzdem zwei Repos. Das eine

00:43:51.670 --> 00:43:53.570
Repo ist das Terraform-Repo mit diesem Service-Ansible, wo

00:43:53.570 --> 00:43:55.630
dann quasi ich mit Updates fahren kann oder

00:43:55.630 --> 00:43:57.550
sowas oder ich überprüfe bitte den State für alle

00:43:57.550 --> 00:43:59.450
Web-Applikationen, upgradee Django auf die

00:43:59.450 --> 00:44:00.410
neueste Variante oder so.

00:44:02.450 --> 00:44:03.370
Und auf der anderen Seite

00:44:03.370 --> 00:44:05.290
das Enzibel-Setup läuft halt

00:44:05.290 --> 00:44:06.750
über das Enzibel-Repo, wo halt dann

00:44:06.750 --> 00:44:08.970
die ganzen Standard-Rollen

00:44:08.970 --> 00:44:11.050
drin sind. Ah, okay.

00:44:12.030 --> 00:44:13.130
Ja, interessant. Also

00:44:13.130 --> 00:44:14.990
das ist irgendwie ganz anders, als ich das

00:44:14.990 --> 00:44:17.270
erwähnt habe. Ja, nee,

00:44:17.310 --> 00:44:19.330
witzig. Also ich muss sagen, es funktioniert

00:44:19.330 --> 00:44:21.190
ganz gut. Es wütet sich auch so ein bisschen von hinten

00:44:21.190 --> 00:44:22.790
durch die Brust. Ich habe mehrere Blog-Einträge

00:44:22.790 --> 00:44:24.890
durchgelesen, mit so für und wieder.

00:44:25.370 --> 00:44:27.010
Das war am Anfang so ein bisschen halt gefummelt,

00:44:27.070 --> 00:44:28.730
das so hinzubekommen, dass das so funktioniert.

00:44:29.310 --> 00:44:30.450
Aber das funktioniert halt gut.

00:44:31.510 --> 00:44:32.430
Ja, also

00:44:32.430 --> 00:44:35.030
mein einziger Einwand wäre dann

00:44:35.030 --> 00:44:37.070
zu sagen, okay, hast du

00:44:37.070 --> 00:44:38.490
halt dann sehr stark verknüpft?

00:44:39.910 --> 00:44:40.990
Ja, habe ich das?

00:44:43.850 --> 00:44:45.230
Ja, also schon. Also ich meine,

00:44:46.110 --> 00:44:47.150
das will ich ja auch. Also ich will

00:44:47.150 --> 00:44:48.850
ja quasi schon sagen, was für Rollen das haben soll.

00:44:48.930 --> 00:44:50.050
Nicht nur die Hardware festlegen.

00:44:50.990 --> 00:44:51.310
Ja.

00:44:53.190 --> 00:44:55.130
Weil das ist ja auch genau das. Also ich will ja nicht nur irgendeine

00:44:55.130 --> 00:44:56.950
Hardware haben und dann sagen, okay, vielleicht das mal, das mal,

00:44:56.950 --> 00:44:58.570
das mal, das. Sondern ich habe eigentlich, wenn ich eine Hardware habe,

00:44:58.610 --> 00:44:59.890
hat die auf jeden Fall schon direkt einen Zweck.

00:45:01.350 --> 00:45:02.990
Und das läuft halt dann so, dass ich quasi

00:45:02.990 --> 00:45:06.470
Terraform-Ordner

00:45:06.470 --> 00:45:08.070
habe für jedes einzelne Projekt.

00:45:08.210 --> 00:45:10.230
Also auch für so bestimmte Rollen ist ein Terraform-Ordner

00:45:10.230 --> 00:45:12.090
ein Tango-Server, ein Terraform-Ordner ein Bucket,

00:45:12.170 --> 00:45:14.190
ein Terraform-Ordner ein Datenbank-Server, irgendwie so.

00:45:14.990 --> 00:45:15.970
Und da werden die Sachen halt dann,

00:45:16.410 --> 00:45:17.990
kann man die auch so schnell skalieren, weil die Variablen

00:45:17.990 --> 00:45:20.030
stehen halt dann direkt mit drin und das war halt okay,

00:45:20.370 --> 00:45:21.810
Datenbank-Server ist ein bisschen schneller oder so

00:45:21.810 --> 00:45:24.250
und hat ein bisschen andere Netzwerkkonfigurationen oder sowas.

00:45:25.210 --> 00:45:25.790
Ja, gut.

00:45:26.270 --> 00:45:27.430
Das klingt irgendwie, ja.

00:45:27.470 --> 00:45:30.310
Genau, also erinnert mich auch so ein bisschen an Vagrant.

00:45:30.970 --> 00:45:32.710
was man vor Docker gemacht hat.

00:45:32.790 --> 00:45:34.550
Da konnte man ja auch die Ansible-Playbooks reingeben

00:45:34.550 --> 00:45:36.990
und dann hat er einem dann den Vagrant so hochgezogen,

00:45:37.090 --> 00:45:38.210
wie man das letztlich im Playbook stand.

00:45:39.230 --> 00:45:39.510
Ja, ja.

00:45:41.050 --> 00:45:42.090
Ich erinnere mich da auch noch dran.

00:45:42.790 --> 00:45:44.870
Wann war das? 2012?

00:45:45.050 --> 00:45:46.030
2013 habe ich das mal gemacht.

00:45:46.630 --> 00:45:47.910
Das war ziemlich schrecklich, ehrlich gesagt.

00:45:49.730 --> 00:45:51.010
Ja, aber da gab es noch kein Docker.

00:45:51.190 --> 00:45:52.090
Da gab es noch kein Docker, genau.

00:45:52.370 --> 00:45:54.950
Deswegen muss man da ein bisschen...

00:45:54.950 --> 00:45:55.630
Ja, ja, ja.

00:45:57.070 --> 00:45:57.590
Anderer Punkt.

00:45:58.350 --> 00:46:00.030
Entschuldigung, ich wollte dich nicht unterbrechen, aber...

00:46:00.030 --> 00:46:04.250
Ich zum Beispiel, ich mag es auch meinen

00:46:04.250 --> 00:46:06.510
debilen Desktop

00:46:06.510 --> 00:46:08.350
per Ansible auszurollen.

00:46:08.970 --> 00:46:09.730
Ja. Okay.

00:46:10.350 --> 00:46:11.930
Also kann ich absolut verstehen,

00:46:12.430 --> 00:46:14.430
nur weil ich hatte auch so eine Diskussion

00:46:14.430 --> 00:46:16.410
online. Für Linux gibt es kein

00:46:16.410 --> 00:46:17.310
Endpoint-Management.

00:46:18.550 --> 00:46:20.390
Und da muss man sich einfach mal überlegen,

00:46:20.490 --> 00:46:22.630
ja, was ist denn der Endpunkt?

00:46:23.030 --> 00:46:24.330
Also was ist der Unterschied zwischen

00:46:24.330 --> 00:46:26.530
Server und Laptop bei Linux?

00:46:27.010 --> 00:46:28.570
Dass ein X11 läuft

00:46:28.570 --> 00:46:30.470
oder Valent und den Rest kann man ja

00:46:30.470 --> 00:46:31.470
genauso benutzen am Ende.

00:46:32.330 --> 00:46:34.470
Also von daher eine wunderschöne Sache, das mit

00:46:34.470 --> 00:46:36.310
Ansible zu machen. Ja, also die Alternative wäre nichts

00:46:36.310 --> 00:46:36.730
gewesen.

00:46:38.670 --> 00:46:40.630
Aber da

00:46:40.630 --> 00:46:42.150
mich nichts genervt hat an so ein paar Punkten,

00:46:42.250 --> 00:46:43.990
dann habe ich dann gesagt, okay, dann mache ich es mit Ansible, weil

00:46:43.990 --> 00:46:46.370
ich möchte auf jeden Fall eine reproduzierbare Maschine

00:46:46.370 --> 00:46:48.330
haben, weil mich nervt das jedes Mal selber

00:46:48.330 --> 00:46:49.670
rumkonfigurieren zu müssen und so.

00:46:50.210 --> 00:46:52.350
Und das ist halt nicht nur irgendwie dort falsch, sondern das

00:46:52.350 --> 00:46:54.370
ist halt noch mehr. Und deswegen

00:46:54.370 --> 00:46:56.230
wollte ich das halt bei Ansible steuern. Da muss man halt dann immer

00:46:56.230 --> 00:46:58.350
fliegen, muss halt immer dann ein Repo haben, was

00:46:58.350 --> 00:47:00.190
halt für seinen Desktop ist, muss der halt da immer dran

00:47:00.190 --> 00:47:02.450
rumpummeln. Wenn man die Konfiguration hat, die updaten,

00:47:02.570 --> 00:47:04.410
aber dann kann man halt, egal wo man ist, einfach seine Sachen

00:47:04.410 --> 00:47:05.670
reproduzieren.

00:47:06.630 --> 00:47:07.630
Und wenn man auch irgendwie seine

00:47:07.630 --> 00:47:10.470
sonstige Sachen irgendwie in der Cloud hat,

00:47:10.530 --> 00:47:12.270
dann kann man, egal wo man ist, einfach mit seinem System, wie man es

00:47:12.270 --> 00:47:14.010
gewohnt ist, genauso arbeiten. Das finde ich irgendwie schon nett.

00:47:14.810 --> 00:47:16.290
Ja, aber das

00:47:16.290 --> 00:47:18.010
gibt es ja auch so die Bewegung, das dann

00:47:18.010 --> 00:47:20.230
letztlich wieder über Docker zu machen. Dann auch zu

00:47:20.230 --> 00:47:22.270
sagen, okay, wir können ja auch grafische Anwendungen in Docker

00:47:22.270 --> 00:47:22.790
laufen lassen.

00:47:25.010 --> 00:47:25.330
Ja.

00:47:26.510 --> 00:47:27.870
Ja, ja, kann man auch.

00:47:28.030 --> 00:47:29.450
Doch, es hat so einen Zwischenlayer irgendwie noch.

00:47:30.770 --> 00:47:32.470
Ich weiß nicht, ob es so ein Personalismus-Rename gibt.

00:47:32.610 --> 00:47:33.990
Also ich meine, die Rechner, die wir nutzen, sind ja meistens relativ

00:47:33.990 --> 00:47:34.950
strong, aber

00:47:34.950 --> 00:47:36.950
ja.

00:47:37.970 --> 00:47:40.050
Ja, es gibt schon irgendwie so ein bisschen Einschränkungen, aber es gibt

00:47:40.050 --> 00:47:42.290
inzwischen sehr, sehr häufig, dass man halt auch

00:47:42.290 --> 00:47:44.210
auf vielen Projektseiten sieht. Also ich meine gerade,

00:47:44.490 --> 00:47:46.090
ich kann es auch verstehen, wenn es halt irgendwas ist,

00:47:46.410 --> 00:47:48.450
was schwer zu installieren ist.

00:47:48.510 --> 00:47:49.370
Und da gibt es ja durchaus Software.

00:47:50.070 --> 00:47:52.170
Dann sagt man sich, okay, nimm doch hier einfach diesen Docker-Code

00:47:52.170 --> 00:47:53.270
und dann geht's.

00:47:54.610 --> 00:47:56.130
Bevor du jetzt irgendwie sowas wie zum Beispiel

00:47:56.130 --> 00:47:58.770
es gibt halt manche Software

00:47:58.770 --> 00:47:59.930
so mit Abhängigkeiten zu

00:47:59.930 --> 00:48:02.810
Qt und so, wo man

00:48:02.810 --> 00:48:04.470
dann halt erstmal anderthalb Stunden kompilieren muss.

00:48:05.090 --> 00:48:06.810
Ja, also genau. Ich glaube, das Kompilieren ist das, was lange

00:48:06.810 --> 00:48:08.670
dauert und Updates sind halt immer ein bisschen nervig.

00:48:08.870 --> 00:48:10.630
Wenn man halt irgendwie so Breaking Changes irgendwo hat,

00:48:10.690 --> 00:48:11.610
dann muss man alles wieder umbauen.

00:48:12.910 --> 00:48:13.190
Naja.

00:48:15.950 --> 00:48:16.670
Früher hat man auch

00:48:16.670 --> 00:48:18.610
dann mehr Ansible-Playbooks

00:48:18.610 --> 00:48:20.710
gesehen, wenn es dann um schwierige Installationen

00:48:20.710 --> 00:48:20.830
ging.

00:48:22.830 --> 00:48:24.470
Leider ist es so ein bisschen auf dem

00:48:24.470 --> 00:48:25.850
absteigenden Ast.

00:48:26.130 --> 00:48:28.490
Was nimmt man denn jetzt? Nur Docker dann?

00:48:28.770 --> 00:48:30.810
Ja, oft findet man halt die Docker-Container

00:48:30.810 --> 00:48:32.690
und dann sagt man hier, also wenn du das einfach

00:48:32.690 --> 00:48:34.830
dem Run sagst, dann läuft der

00:48:34.830 --> 00:48:36.130
und dann kannst du

00:48:36.130 --> 00:48:37.170
mitnehmen.

00:48:38.110 --> 00:48:40.510
Ja, das finde ich auch faszinierend, weil, also ich sehe

00:48:40.510 --> 00:48:42.490
diesen Trend durchaus auch, aber

00:48:42.490 --> 00:48:44.030
ich finde ehrlich gesagt so von dem,

00:48:44.570 --> 00:48:46.210
wie fühlt es sich von der Benutzung her an?

00:48:46.970 --> 00:48:48.710
Docker, es wird eher immer

00:48:48.710 --> 00:48:50.930
schlimmer, hätte ich gesagt, aus meiner Perspektive.

00:48:50.930 --> 00:48:52.250
Ich habe es auch zwischendurch ganz gerne genutzt, aber

00:48:52.250 --> 00:48:54.130
ich weiß nicht, irgendwas finde ich nervig.

00:48:54.830 --> 00:48:57.350
ja. Das ist immer so gekapselt

00:48:57.350 --> 00:48:59.310
auch irgendwie. Also ich habe nicht so den direkten

00:48:59.310 --> 00:49:00.630
Zugriff. Also sag mal so,

00:49:01.210 --> 00:49:03.310
es nimmt einem schon irgendwie Probleme ab,

00:49:03.530 --> 00:49:05.050
aber es hat halt nicht,

00:49:05.250 --> 00:49:06.950
auch nicht so ganz die Flexibilität, wie jetzt

00:49:06.950 --> 00:49:08.190
die man mit Ansible hat.

00:49:09.090 --> 00:49:10.710
Also gerade, was man bei Docker dann doch irgendwie

00:49:10.710 --> 00:49:13.170
öfter mal, was einem dann passiert, so zum Beispiel

00:49:13.170 --> 00:49:15.270
irgendwie so, irgendwie das Filesystem ist halt

00:49:15.270 --> 00:49:17.130
voll. So, man weiß halt nicht genau, warum.

00:49:17.730 --> 00:49:19.290
Und dann guckt man halt und denkt, ach ja, deswegen,

00:49:19.430 --> 00:49:21.290
ach, und dann, uh, was liegt denn

00:49:21.290 --> 00:49:22.970
hier noch alles rum? Ich habe jetzt

00:49:22.970 --> 00:49:24.970
diesen Container 30 Mal hier.

00:49:25.130 --> 00:49:27.390
Genau, solche Sachen. Oh, Docker-Compost-Down

00:49:27.390 --> 00:49:29.470
vergessen, ups. An der Stelle ist die Abstraktion

00:49:29.470 --> 00:49:31.270
halt schon sehr leaky. Oder man muss halt

00:49:31.270 --> 00:49:33.190
sich gut mit Docker auskennen. Oder was ich

00:49:33.190 --> 00:49:34.830
dann halt oft sehe, wie Leute dann so

00:49:34.830 --> 00:49:37.610
wirklich in größeren, großen Firmen,

00:49:37.610 --> 00:49:39.090
wo dann Leute da sitzen

00:49:39.090 --> 00:49:41.230
und irgendwie, wo dann

00:49:41.230 --> 00:49:43.130
das halt alles vereinheitlicht ist, wo alle

00:49:43.130 --> 00:49:44.930
Entwickler irgendwie Docker verwenden und dann so

00:49:44.930 --> 00:49:47.370
ah ja, okay, ich muss hier ein neues Paket

00:49:47.370 --> 00:49:49.330
für das Docker-Image. Und dann warten die

00:49:49.330 --> 00:49:51.070
halt da irgendwie stoisch eine halbe Stunde,

00:49:51.210 --> 00:49:53.130
bis das irgendwie alles kopiert ist

00:49:53.130 --> 00:49:54.950
und die Dinger sind halt, die Images, dann denken sie so,

00:49:54.950 --> 00:49:57.070
hä, das dauert eine halbe Stunde,

00:49:57.210 --> 00:49:59.090
bis die Images da, hä,

00:49:59.470 --> 00:50:00.990
was macht ihr denn da? Und dann so, ja,

00:50:01.070 --> 00:50:02.710
das ist doch normal, das ist doch immer so.

00:50:03.030 --> 00:50:04.590
Guck mal rein und so, dann nehmen sie dann halt

00:50:04.590 --> 00:50:06.330
Alpine irgendwie,

00:50:06.870 --> 00:50:08.570
Linux, ja, und dann

00:50:08.570 --> 00:50:10.750
installieren sie aber NumPy, ja, und dann

00:50:10.750 --> 00:50:12.890
zieht das erstmal in GCC nach und dann wird erstmal

00:50:12.890 --> 00:50:14.810
die komplette Compiler-Toolchain

00:50:14.810 --> 00:50:16.810
irgendwie kompiliert und dann, ja,

00:50:16.990 --> 00:50:19.110
und dann ist kein Wunder, warum das so lange dauert,

00:50:19.570 --> 00:50:21.070
aber es ist halt irgendwie

00:50:21.070 --> 00:50:23.070
so, ja, und die Images werden riesig,

00:50:23.150 --> 00:50:24.810
ja, und dann nehmen sie Alpine, damit die klein werden,

00:50:24.890 --> 00:50:26.430
und dann werden die irgendwie anderthalb Gigabyte groß.

00:50:27.010 --> 00:50:28.310
Und, ja, und dann denke ich so,

00:50:28.430 --> 00:50:30.070
also irgendwie,

00:50:30.370 --> 00:50:32.190
ihr haltet das falsch rum.

00:50:33.050 --> 00:50:34.050
Das ist, ja, genau.

00:50:35.410 --> 00:50:37.030
Das ist irgendwie, das, ja.

00:50:37.710 --> 00:50:37.970
Und, aber,

00:50:38.190 --> 00:50:40.330
ich habe das Gefühl,

00:50:40.450 --> 00:50:42.650
es hindert die Leute, also, wenn ich denke,

00:50:42.650 --> 00:50:44.610
das ist eigentlich ein ziemliches Katastrophenszenario,

00:50:44.790 --> 00:50:46.290
ja, und eigentlich müsste man sagen, also, wenn

00:50:46.290 --> 00:50:48.570
die, also, es müsste den Leuten doch irgendwie

00:50:48.570 --> 00:50:50.690
auffallen, dass das jetzt alles furchtbar ist, oder?

00:50:51.070 --> 00:50:52.730
Aber das ist nicht so. Die Leute

00:50:52.730 --> 00:50:54.690
halten das für normal und das ist dann jetzt halt so

00:50:54.690 --> 00:50:55.930
und dann, es verbreitet sich trotzdem.

00:50:56.250 --> 00:50:57.710
Und das finde ich immer faszinierend.

00:50:57.890 --> 00:50:59.750
Sind wir noch bei Docker oder schon bei JavaScript?

00:51:00.270 --> 00:51:04.550
Ja, bei JavaScript und

00:51:04.550 --> 00:51:06.390
irgendwie, ja, NPM und

00:51:06.390 --> 00:51:08.390
diesen ganzen, ja, das ist teilweise so ähnlich, ja.

00:51:09.550 --> 00:51:10.370
Es gibt doch jetzt bei

00:51:10.370 --> 00:51:12.210
SAPN ganz viele andere Sachen, Dino und Ban.

00:51:12.670 --> 00:51:14.270
Ja, aber das ist auch alles ziemlich furchtbar.

00:51:14.850 --> 00:51:16.690
Ich meine, gut, vielleicht

00:51:16.690 --> 00:51:18.370
liegt es irgendwann so, ja,

00:51:18.710 --> 00:51:19.710
wird das da auch mal wieder.

00:51:19.710 --> 00:51:23.450
Man überlebt sich halt irgendwann in die

00:51:23.450 --> 00:51:24.610
Komplexität und

00:51:24.610 --> 00:51:27.470
dann macht das auch Spaß und keiner weiß

00:51:27.470 --> 00:51:29.370
mehr, wie es geht und dann hat man auch mal so

00:51:29.370 --> 00:51:30.930
eine Expertenrolle. Das ist auch schön.

00:51:30.930 --> 00:51:32.510
Genau, also wenn keiner mehr weiß, wie es geht,

00:51:32.630 --> 00:51:34.710
dann ist das halt ziemlich angenehmer.

00:51:35.150 --> 00:51:37.050
Job Security ist auch ganz wichtig.

00:51:38.770 --> 00:51:42.030
Aber ja, und

00:51:42.030 --> 00:51:44.590
ich weiß nicht, also ich finde,

00:51:45.170 --> 00:51:46.930
so im direkten Vergleich, wenn ich jetzt

00:51:46.930 --> 00:51:48.910
irgendwie, das habe ich früher gemacht, zum Beispiel

00:51:48.910 --> 00:51:51.270
pythonpodcast.de, wenn man sich das

00:51:51.270 --> 00:51:52.950
anguckt, das ist tatsächlich, das ist ein

00:51:52.950 --> 00:51:54.990
Cookie-Cutter-Template für Django

00:51:54.990 --> 00:51:57.190
und dann ist da auch ein

00:51:57.190 --> 00:51:59.250
Docker-Container oder mehrere Docker-Container, weil da ist halt auch

00:51:59.250 --> 00:52:01.050
Datenbank und so und das läuft alles auf Docker-Container

00:52:01.050 --> 00:52:03.190
und ist halt irgendwie

00:52:03.190 --> 00:52:03.530
deployed.

00:52:04.690 --> 00:52:07.150
Als ich angefangen habe, Sachen zu lernen, hat

00:52:07.150 --> 00:52:09.190
Jochen mir gesagt, das ist so, wie man das macht und dann stand

00:52:09.190 --> 00:52:11.070
ich erstmal für diese Komplexität. Ja, sorry, ich kam ja von

00:52:11.070 --> 00:52:13.250
Vagrant und da sah das aus, als wäre

00:52:13.250 --> 00:52:15.230
das Fortschritt. Also ich musste erstmal ein paar Mal

00:52:15.230 --> 00:52:17.070
gegenhauen und hab mich erstmal gefragt, was ist das denn jetzt?

00:52:17.130 --> 00:52:19.110
wie geht denn das jetzt? Muss ich jetzt eingeben?

00:52:19.210 --> 00:52:21.270
Muss ich mir irgendwie tausendlange Kommandozeilen,

00:52:21.370 --> 00:52:23.350
Listen schreiben, um zu verstehen, was machen?

00:52:23.910 --> 00:52:25.130
Und dann überhaupt ein Introspekt.

00:52:25.250 --> 00:52:26.010
Das war schon echt

00:52:26.010 --> 00:52:28.390
ein Komplexitätsmonster, muss ich sagen.

00:52:29.190 --> 00:52:31.130
Ja, also es tut mir leid.

00:52:31.270 --> 00:52:32.010
Aber so ist es halt.

00:52:33.590 --> 00:52:35.030
Ja, aber das läuft noch alles

00:52:35.030 --> 00:52:35.670
auf Docker und so.

00:52:39.230 --> 00:52:41.010
Es ist aber nicht, also wenn ich das jetzt

00:52:41.010 --> 00:52:43.010
vergleiche, auch den Betrieb davon mit

00:52:43.010 --> 00:52:44.990
irgendwie, ich mache jetzt schon seit einiger Zeit,

00:52:45.030 --> 00:52:46.670
ich habe es noch nicht geschafft, das eine auf das andere umzuziehen,

00:52:46.990 --> 00:52:48.710
also sozusagen die alte Infrastruktur läuft immer noch

00:52:48.710 --> 00:52:50.910
und ich habe den direkten Vergleich noch und letztens hatte ich da

00:52:50.910 --> 00:52:52.930
das Problem, dass da irgendwas, es ging nicht mehr

00:52:52.930 --> 00:52:54.310
und irgendwas war vollgelaufen und ich wusste,

00:52:54.590 --> 00:52:56.750
oh mein Gott, ich muss in diese Docker-Container reingucken,

00:52:56.870 --> 00:52:58.730
oh je, habe ich eigentlich ein Backup, habe ich wirklich

00:52:58.730 --> 00:53:01.090
ein Backup, hoffentlich

00:53:01.090 --> 00:53:01.910
mache ich jetzt nichts kaputt

00:53:01.910 --> 00:53:05.030
und ich vergleiche das jetzt so

00:53:05.030 --> 00:53:06.990
mit dem, was ich jetzt mache und das ist halt

00:53:06.990 --> 00:53:08.850
irgendwie die Dinge einfach direkt via Ansible

00:53:08.850 --> 00:53:11.010
zu installieren und ich habe halt für jeden Service

00:53:11.010 --> 00:53:12.630
halt einen eigenen User und

00:53:12.630 --> 00:53:14.850
der hat halt ein eigenes Virtual-End da nochmal

00:53:14.850 --> 00:53:15.630
drin und

00:53:15.630 --> 00:53:18.690
das wird einfach alles so hochgezogen

00:53:18.690 --> 00:53:20.830
und hat dann auch ein schreibbares Dateisystem

00:53:20.830 --> 00:53:22.630
und so. Man kann auch so eine Backup-Holle installieren,

00:53:22.770 --> 00:53:24.630
dann überläuft das Vernünftiges, man weiß

00:53:24.630 --> 00:53:26.030
dann auch, wo die sind, das ist alles ordentlich.

00:53:26.810 --> 00:53:28.730
Aber man kann auch überall reingucken,

00:53:28.950 --> 00:53:30.270
man kann da einfach als Root mal so

00:53:30.270 --> 00:53:32.710
über alle drüber gucken und gucken, was da so

00:53:32.710 --> 00:53:34.490
los ist. Das ist deutlich

00:53:34.490 --> 00:53:36.610
angenehmer und so viel länger sind die Playbooks

00:53:36.610 --> 00:53:38.770
nicht als die Docker-Files mit dem ganzen

00:53:38.770 --> 00:53:40.630
drumherum Start-Stop-Zeugs, das man

00:53:40.630 --> 00:53:42.350
da sonst so hat. Ja, vor allem, wenn die einmal gut sind, dann

00:53:42.350 --> 00:53:44.290
ist das eigentlich angemacht. Und das ist halt viel transparenter

00:53:44.290 --> 00:53:46.410
als... Ja, man muss halt

00:53:46.410 --> 00:53:48.530
gucken, welche Vorteile

00:53:48.530 --> 00:53:50.390
bietet einem letztlich der Docker-Container und

00:53:50.390 --> 00:53:51.650
nutze ich die überhaupt?

00:53:52.430 --> 00:53:54.410
Oder manchmal ist es auch

00:53:54.410 --> 00:53:56.290
ganz schön, einfach nur einen richtig großen

00:53:56.290 --> 00:53:58.250
Server zu haben und da

00:53:58.250 --> 00:54:00.370
laufen halt die Sachen dann alle

00:54:00.370 --> 00:54:02.450
sehr lokal drauf.

00:54:03.630 --> 00:54:04.570
In einem user space

00:54:04.570 --> 00:54:06.410
oder so. Ja, weil die sowieso

00:54:06.410 --> 00:54:07.830
alle uniform sind und man

00:54:07.830 --> 00:54:10.390
halt nicht, sagen wir

00:54:10.390 --> 00:54:12.250
jetzt mal, 10 Container braucht, um

00:54:12.250 --> 00:54:14.270
jede App zu kapseln. Ja, also

00:54:14.270 --> 00:54:16.110
Ich meine, ich kann es natürlich in gewisser Weise verstehen, auch da wieder,

00:54:16.190 --> 00:54:18.050
wenn man halt irgendwas hat, was sehr schwer zu kompilieren ist,

00:54:18.110 --> 00:54:19.870
oder wie gibt es da,

00:54:20.210 --> 00:54:21.590
ich weiß nicht, ob das bei XKCD

00:54:21.590 --> 00:54:24.130
oder sonst wie irgendwo

00:54:24.130 --> 00:54:25.950
ein Comic war, wo ein Entwickler

00:54:25.950 --> 00:54:28.470
irgendwie da sitzt

00:54:28.470 --> 00:54:30.090
und so leise vor sich hinweilt und sagt so,

00:54:30.130 --> 00:54:32.050
aber auf meiner Maschine läuft es, und jemand

00:54:32.050 --> 00:54:33.890
klopft ihm auf die Schulter und sagt, okay, dann

00:54:33.890 --> 00:54:34.950
shippen wir eben deine Maschine.

00:54:38.490 --> 00:54:40.410
Das ist natürlich so, ja, wenn du

00:54:40.410 --> 00:54:42.490
sonst einfach nicht deployed kriegst, außer du shippst

00:54:42.490 --> 00:54:44.010
das, was der Entwickler da hat, dann ist locker

00:54:44.010 --> 00:54:46.370
möglicherweise sehr gut. Und wenn du dann viele von solchen

00:54:46.370 --> 00:54:48.130
Sachen auf einer Maschine laufen lassen willst, dann

00:54:48.130 --> 00:54:50.170
führt vielleicht um den Docker auch kein Weg drumherum.

00:54:50.490 --> 00:54:52.290
Aber das ist ja letztlich auch

00:54:52.290 --> 00:54:54.470
der Kritikpunkt an Python, dass man quasi

00:54:54.470 --> 00:54:56.390
immer die Entwicklermaschine shippen muss, damit

00:54:56.390 --> 00:54:58.450
es überhaupt läuft. Ja, das ist

00:54:58.450 --> 00:55:00.030
natürlich auch bei Python so ein Problem.

00:55:01.730 --> 00:55:02.130
Wobei...

00:55:02.130 --> 00:55:03.830
Also ich finde Poetry löst das, wenn Poetry läuft.

00:55:04.490 --> 00:55:06.450
Ja. Ja, Poetry läuft

00:55:06.450 --> 00:55:08.450
so. Also da war meine Erfahrung, das läuft

00:55:08.450 --> 00:55:09.830
so drei Monate, vier Monate.

00:55:09.990 --> 00:55:12.570
Auf einmal wird irgendwas irgendwo kaputt

00:55:12.570 --> 00:55:14.010
und dann Cash reparieren,

00:55:14.270 --> 00:55:16.070
neue Versionen irgendwie installieren,

00:55:16.170 --> 00:55:18.470
Pre. Fällt jetzt alles auseinander,

00:55:18.610 --> 00:55:20.510
genau. Ja, ich stelle momentan

00:55:20.510 --> 00:55:22.470
auch alle Sachen, wenn ich alte

00:55:22.470 --> 00:55:24.250
Projekte habe und ich sehe dann, ah, dafür bin ich noch poachy,

00:55:24.310 --> 00:55:26.310
ich stelle es meistens nochmal auf PIP-Tools. Aber PIP-Tools

00:55:26.310 --> 00:55:27.010
ist furchtbar.

00:55:28.410 --> 00:55:30.270
Wird auch verfügbar von PIP-Tools,

00:55:30.370 --> 00:55:31.330
weil letztlich ist es nur PIP.

00:55:31.730 --> 00:55:34.430
Ja, genau. Und wenn jemand PIP brechen

00:55:34.430 --> 00:55:36.470
sollte, dann fällt es auf und dann machen andere

00:55:36.470 --> 00:55:38.330
Ärger dafür, dass so viel Ärger, dass das dann

00:55:38.330 --> 00:55:39.950
wieder funktioniert schnell. Also

00:55:39.950 --> 00:55:42.370
genau, es ist letztlich nur PIP

00:55:42.370 --> 00:55:44.430
Und man kann sich da ja Tools drumherum schreiben,

00:55:44.530 --> 00:55:45.810
die das halt angenehm zu benutzen machen.

00:55:46.250 --> 00:55:47.050
Ja, ja.

00:55:48.690 --> 00:55:52.430
Oh, ich hab jetzt, das hab ich dann nochmal

00:55:52.430 --> 00:55:53.730
versucht, weil du meintest, das kann auch

00:55:53.730 --> 00:55:56.610
Pipetools können, das ist dann nicht so richtig.

00:55:56.610 --> 00:55:57.470
Nein. Ja, genau.

00:55:58.050 --> 00:56:00.310
Ja, das ist so. Und ich brauch Pipetools.

00:56:00.470 --> 00:56:02.070
Also ich find die super, das ist eine gute Idee.

00:56:02.490 --> 00:56:02.850
Ja.

00:56:04.250 --> 00:56:05.030
Weil diese ganzen

00:56:05.030 --> 00:56:08.350
TXT-Files mit irgendwie, ah ne, bäh.

00:56:08.770 --> 00:56:10.630
Ja. Ich will die ganze Konfiguration

00:56:10.630 --> 00:56:12.050
in Pipetools haben, ich will die

00:56:12.050 --> 00:56:13.350
Pakete da drin haben.

00:56:14.210 --> 00:56:15.150
Und also, ja.

00:56:15.770 --> 00:56:17.250
Was man auch machen könnte, man kann ja einfach

00:56:17.250 --> 00:56:19.390
einen Tommelparser nehmen und dann

00:56:19.390 --> 00:56:20.990
die Dinger automatisch generieren aus einer

00:56:20.990 --> 00:56:23.350
Pip-Projektion. Ja, aber das ist auch wieder sehr eklig.

00:56:23.850 --> 00:56:25.550
Ja, gut, naja. Ehrlich gesagt, ja.

00:56:25.950 --> 00:56:26.290
Ja, okay.

00:56:27.330 --> 00:56:29.190
Aber ja, ich stelle das jetzt alles um und ich finde

00:56:29.190 --> 00:56:31.090
auch vom Deployment-Aspekt her ist

00:56:31.090 --> 00:56:32.830
Pip-Tools deutlich angenehmer als Poetry, weil

00:56:32.830 --> 00:56:35.090
Poetry ist auch beim Deployment

00:56:35.090 --> 00:56:37.070
ganz schön hakelig. Ja, aber das habe ich jetzt gelöst.

00:56:37.450 --> 00:56:39.090
Tatsächlich. Ja, wie installierst du denn Poetry?

00:56:39.350 --> 00:56:40.890
Also ich installiere

00:56:40.890 --> 00:56:43.030
PyEnv, das Python,

00:56:43.430 --> 00:56:44.830
was ich muss sagen. Okay. Dann

00:56:44.830 --> 00:56:47.190
PipX. Aha, oh, oh, oh,

00:56:47.310 --> 00:56:49.230
okay. Ja, und PipX

00:56:49.230 --> 00:56:50.970
und Portree, das funktioniert gut. Und dann habe ich das Portree

00:56:50.970 --> 00:56:52.910
drauf, was funktioniert. Ach, du installierst dann Portree per

00:56:52.910 --> 00:56:54.830
PipX. Genau. Das ist aber nicht die empfohlene

00:56:54.830 --> 00:56:56.930
Art, glaube ich. Ja, das ist egal, das ist furchtbar. Die empfohlene

00:56:56.930 --> 00:56:58.790
Art ist furchtbar, das zu tun. Ja, das ist nämlich ein

00:56:58.790 --> 00:57:00.850
Shell-Skript runterladen und ausführen. Ja, genau, das ist komisch.

00:57:00.970 --> 00:57:02.870
Und deswegen per PipX, aber das funktioniert

00:57:02.870 --> 00:57:04.830
dann super. Und dann habe ich dann per PipX, kann ich dann

00:57:04.830 --> 00:57:06.290
Portree benutzen, um halt meine

00:57:06.290 --> 00:57:09.250
Environments zu installieren und ein Kurz-Config-Setting

00:57:09.250 --> 00:57:11.030
für Poetry und dann... Aber das ist schon

00:57:11.030 --> 00:57:12.750
ein ganz schöner auch irgendwie...

00:57:12.750 --> 00:57:13.410
Es ist ein Playbook.

00:57:14.710 --> 00:57:17.030
Ja, das ist... Aber ja, das ist

00:57:17.030 --> 00:57:18.650
funktioniert gut. Und wie kommst du an den...

00:57:18.650 --> 00:57:20.990
Erzeugst du deine Virtual-Infs auch über Poetry?

00:57:21.370 --> 00:57:22.910
Ja. Wie kommst du an

00:57:22.910 --> 00:57:24.830
deinen Interpreter, wenn du jetzt mal sowas wie

00:57:24.830 --> 00:57:26.910
Manage Migrate ausführen willst oder so

00:57:26.910 --> 00:57:28.770
im General-Kontext? Du kannst den ja

00:57:28.770 --> 00:57:30.730
einfach dann lokal zum Beispiel nehmen.

00:57:31.790 --> 00:57:33.110
Ja, aber Poetry

00:57:33.110 --> 00:57:34.890
macht halt so komische Verzeichnisse

00:57:34.890 --> 00:57:36.750
mit einem Hash drin, die irgendwie immer anders sind.

00:57:36.810 --> 00:57:38.290
Das ist egal. Nee, das ist nicht immer anders. Das

00:57:38.290 --> 00:57:40.790
reproduzierbar. Ich habe mir eine Funktion getrieben, die mit den Namen

00:57:40.790 --> 00:57:42.650
von den Wänden kommt. Ja, das habe ich nämlich auch gemacht, genau.

00:57:42.730 --> 00:57:43.850
Ich sehe dann ein Muster.

00:57:44.730 --> 00:57:46.810
Genau das habe ich nämlich auch gemacht, aber das ist halt

00:57:46.810 --> 00:57:48.650
dann so, da gucke ich dann jetzt immer so drauf und denke mir so,

00:57:49.210 --> 00:57:50.770
warum nehme ich da an der Stelle nicht einfach

00:57:50.770 --> 00:57:52.590
einen Virtual Env so und dann weiß ich vorher,

00:57:52.750 --> 00:57:54.670
wo der Pfad ist. Ja, was halt geht ist, du kannst halt

00:57:54.670 --> 00:57:56.690
die Virtual Envs in Project Paths dann machen.

00:57:56.770 --> 00:57:58.690
Das mache ich bei Deployments dann, weil dann ist

00:57:58.690 --> 00:58:00.710
das Problem erledigt. Weil dann hast du es halt einfach

00:58:00.710 --> 00:58:02.810
lokal drin liegen. Und dann kannst du halt den Pfad

00:58:02.810 --> 00:58:04.850
kannst du ja auch angeben, dann macht der halt nicht irgendwo

00:58:04.850 --> 00:58:06.430
unter Envs mit einem Hash, sondern dann

00:58:06.430 --> 00:58:08.110
Lässt das rein und das würde ich empfehlen.

00:58:08.450 --> 00:58:10.550
Aber das ist auch genau der Punkt. Also benutzen

00:58:10.550 --> 00:58:12.350
wir Docker, weil wir eben daherkamen,

00:58:12.750 --> 00:58:14.450
auf Produktionsmaschinen? Ich würde fast sagen, nein,

00:58:14.550 --> 00:58:16.570
weil das hat auch zu viel Hardwarefrist und man möchte

00:58:16.570 --> 00:58:18.170
ja relativ viel...

00:58:18.170 --> 00:58:20.390
Netzwerkprobleme hat man oft, wenn man das

00:58:20.390 --> 00:58:21.850
in Docker macht. Das ist auch sehr nervig.

00:58:22.510 --> 00:58:24.310
Und deswegen würde ich die Sachen in Produktion direkt

00:58:24.310 --> 00:58:26.370
auf die Maschinen deployen. Aber in

00:58:26.370 --> 00:58:28.470
Dev, würde ich sagen, will man

00:58:28.470 --> 00:58:30.090
vielleicht Docker-Container benutzen zum Entwickeln,

00:58:30.330 --> 00:58:32.290
weil man halt oft Entwickler hat, die auf unterschiedlichen

00:58:32.290 --> 00:58:34.350
Maschinen arbeiten, um die Konsistenz zu sichern.

00:58:34.730 --> 00:58:36.350
Also das wäre der einfachste Grund, weil die Leute halt

00:58:36.350 --> 00:58:38.310
keine Lust haben, irgendwie gleiche Sachen zu

00:58:38.310 --> 00:58:39.990
benutzen. Und da... Es gibt ja auch Entwickler, die

00:58:39.990 --> 00:58:42.190
Windows benutzen. Ja, oder müssen. Und da

00:58:42.190 --> 00:58:44.270
kommt man dann mit Docker schon mal ein bisschen

00:58:44.270 --> 00:58:46.390
weiter. Also ich muss das auch

00:58:46.390 --> 00:58:47.810
auf der Arbeit viel. Und da ist halt,

00:58:48.210 --> 00:58:50.490
habe ich halt auch entforst, dass wir Docker-Container

00:58:50.490 --> 00:58:52.110
nehmen, weil halt viele Sachen dann auf Linux nur

00:58:52.110 --> 00:58:54.130
kompilieren richtig. Und auf Windows,

00:58:54.230 --> 00:58:56.190
dass immer von hinten durch die Brust ins Auge ist oder dann irgendwelche

00:58:56.190 --> 00:58:58.290
C-Libraries nachinstallieren muss. Was man auch

00:58:58.290 --> 00:59:00.430
manchmal meistens hinkriegt, bis auf ein paar Ausnahmen.

00:59:00.850 --> 00:59:02.350
Aber das ist manchmal sehr, sehr, sehr nervig.

00:59:02.410 --> 00:59:04.250
Und wenn man das mit Leuten macht, die sich da nicht gut

00:59:04.250 --> 00:59:06.270
mit auskennen, dann fährt man immer gegen irgendwann. Und deswegen

00:59:06.270 --> 00:59:08.390
entwickeln im Docker, befreit

00:59:08.390 --> 00:59:10.210
einen einfach von diesem Schmerz,

00:59:10.270 --> 00:59:12.410
weil das ist relativ klar, was da passieren wird.

00:59:12.410 --> 00:59:14.410
Wobei ich ja, also wie gesagt, mit diesem

00:59:14.410 --> 00:59:16.450
Windows-Subsystem von Linux und dann einfach

00:59:16.450 --> 00:59:18.250
da ein Debian draufhaben oder so, damit kommen

00:59:18.250 --> 00:59:20.090
wir ja auch schon relativ weit. Nur was ich jetzt letztens

00:59:20.090 --> 00:59:22.210
immer wieder doch häufiger gesehen habe, ist, dass

00:59:22.210 --> 00:59:23.810
halt, wenn dann Leute dann eine IDE

00:59:23.810 --> 00:59:25.590
verwenden, die dann wieder unter Windows läuft,

00:59:26.110 --> 00:59:28.130
dass dann irgendwie in dem Filesystem manchmal Probleme gibt

00:59:28.130 --> 00:59:29.850
oder jedenfalls Leute mal so, hä, und dann kommen hier

00:59:29.850 --> 00:59:32.090
komische Fehler. Oh, irgendwie ist das, was

00:59:32.090 --> 00:59:34.110
da in dem Linux-Filesystem ist, nicht das

00:59:34.110 --> 00:59:35.830
gleiche. Das muss man halt konfigurieren. Genau, und die

00:59:35.830 --> 00:59:37.770
Pfade werden halt gemountet, also zum Beispiel in

00:59:37.770 --> 00:59:39.750
Windows-Gestalt so ein Pfad wie C, Doppelpunkt, Backslash,

00:59:39.830 --> 00:59:41.710
bla bla bla, das wird halt unter Mount C

00:59:41.710 --> 00:59:43.650
irgendwie abgelegt und dann muss man halt die Pfade tatsächlich

00:59:43.650 --> 00:59:45.630
gucken, das muss man eigentlich über ein Vinyl-Variable machen,

00:59:46.230 --> 00:59:47.750
die werden zum Beispiel von VS Code nicht

00:59:47.750 --> 00:59:49.810
immer direkt unterstützt, sondern nur in bestimmten Fällen

00:59:49.810 --> 00:59:51.610
und dann muss man eigentlich relativ laden und

00:59:51.610 --> 00:59:52.870
muss halt dann zum Beispiel VS Code

00:59:52.870 --> 00:59:54.930
dann das Verzeichnis mounten und so.

00:59:55.590 --> 00:59:56.870
VSL hat noch ein paar andere Probleme,

00:59:57.390 --> 00:59:59.590
zum Beispiel ist es dann oft, wenn man Windows hat,

00:59:59.650 --> 01:00:01.630
weil dann irgendwelche Leute mit Active Directory Zugriff

01:00:01.630 --> 01:00:03.630
das einfach sperren, da hat man zwei VSL drauf,

01:00:03.630 --> 01:00:05.550
aber ohne Updates oder so, da kann man es halt nicht

01:00:05.550 --> 01:00:07.470
richtig benutzen. Und die Frage ist, warum man

01:00:07.470 --> 01:00:08.830
Windows benutzen will, wenn man WSL benutzt.

01:00:09.230 --> 01:00:10.510
Also aus der, ich sag mal,

01:00:11.030 --> 01:00:13.510
Maschinendeployment-Methode. Also der Grund, warum ich

01:00:13.510 --> 01:00:15.710
das in letzter Zeit immer gesehen habe, ist halt,

01:00:15.770 --> 01:00:16.930
weil Leute sagen, ja, ja, weil halt

01:00:16.930 --> 01:00:19.730
der Rest der Firma quasi in der Windows-Welt

01:00:19.730 --> 01:00:21.330
hängt und man mit dem kooperieren können möchte.

01:00:21.330 --> 01:00:23.470
Genau, aber so mache ich das bei mir privat auch,

01:00:23.530 --> 01:00:25.570
wenn ich Windows benutze, dann mache ich das auch mit WSL2

01:00:25.570 --> 01:00:27.630
oder so, das ist super. Aber jetzt in der Firma

01:00:27.630 --> 01:00:29.510
beispielsweise, wenn ich jetzt ein Windows

01:00:29.510 --> 01:00:31.570
Management-System habe oder ein Team habe,

01:00:31.650 --> 01:00:33.450
was halt über Active Directory die Zugriffe

01:00:33.450 --> 01:00:35.570
kontrolliert und ausräumen will, da macht es

01:00:35.570 --> 01:00:37.590
relativ wenig Sinn, wenn ich den Leuten dann WSL freischalte,

01:00:37.670 --> 01:00:39.470
weil dann von hinten die nämlich

01:00:39.470 --> 01:00:41.350
wieder rauskommen. Und das will ich ja eigentlich gar nicht.

01:00:42.070 --> 01:00:43.430
Ja. Das ist so ein bisschen blöd.

01:00:44.030 --> 01:00:45.530
Und da gibt es noch nicht so die

01:00:45.530 --> 01:00:47.530
gute Lösung für oder wenig gut

01:00:47.530 --> 01:00:49.630
konfigurierte Teams, würde ich jetzt sagen.

01:00:49.710 --> 01:00:51.410
Oder ist das gar nicht so einfach, das ordentlich zu

01:00:51.410 --> 01:00:53.410
konfigurieren? Dass das halt genau

01:00:53.410 --> 01:00:55.610
diese ganzen Scherze dann nicht ermöglicht

01:00:55.610 --> 01:00:57.610
oder halt ein bisschen besser macht, das so ein bisschen.

01:00:57.990 --> 01:00:59.090
Ja, dann wäre die Frage,

01:00:59.310 --> 01:01:01.490
vielleicht ist es dann besser, wenn die nicht auf der lokalen Maschine

01:01:01.490 --> 01:01:02.410
arbeiten.

01:01:03.450 --> 01:01:05.190
Sondern mit einer IDE

01:01:05.190 --> 01:01:07.150
dann irgendwo hinkonnekten

01:01:07.150 --> 01:01:08.190
und darauf arbeiten.

01:01:09.810 --> 01:01:11.510
Ja, also letztlich...

01:01:11.510 --> 01:01:12.450
Und dann fehlt das WLAN aus.

01:01:14.070 --> 01:01:15.410
Da kann man nichts mehr machen.

01:01:15.650 --> 01:01:17.930
Da weiß man gar nicht mehr, wo die Dokumentation ist.

01:01:19.050 --> 01:01:20.230
Irgendwo muss man halt schärmen.

01:01:20.230 --> 01:01:21.470
Das fand ich sehr witzig.

01:01:21.510 --> 01:01:23.750
Da habe ich letztens einen Podcast

01:01:23.750 --> 01:01:26.230
gehört mit einer

01:01:27.610 --> 01:01:28.570
der Engineering-Chefin

01:01:28.570 --> 01:01:29.470
und ich glaube es ist nicht das CTO,

01:01:29.650 --> 01:01:30.790
sondern irgendwas darunter, aber auch

01:01:30.790 --> 01:01:33.010
Chefin von 500 Entwicklern bei GitHub.

01:01:33.450 --> 01:01:36.150
die meinte, GitHub ist

01:01:36.150 --> 01:01:36.990
intern

01:01:36.990 --> 01:01:39.690
auf Codespaces umgezogen.

01:01:40.930 --> 01:01:41.810
Also quasi komplett

01:01:41.810 --> 01:01:43.770
in der Cloud.

01:01:44.290 --> 01:01:45.670
Also wie ist Code und Codespace?

01:01:45.670 --> 01:01:46.650
Also sozusagen

01:01:46.650 --> 01:01:49.070
deren komplette Entwicklungsumgebung sind halt immer

01:01:49.070 --> 01:01:51.410
auf irgendeiner Maschine

01:01:51.410 --> 01:01:52.150
bei Azure.

01:01:53.410 --> 01:01:55.330
Machen sie halt deswegen, weil sie bei Azure nicht zahlen müssen,

01:01:55.430 --> 01:01:56.110
weil sie gehören zu Microsoft.

01:01:56.370 --> 01:02:00.190
Ja, ist natürlich praktisch.

01:02:00.890 --> 01:02:01.590
Es könnte

01:02:01.590 --> 01:02:03.630
natürlich ihren Move

01:02:03.630 --> 01:02:04.510
dahin ein wenig

01:02:04.510 --> 01:02:07.670
genatscht haben, sozusagen,

01:02:07.870 --> 01:02:08.790
dass das passiert.

01:02:09.210 --> 01:02:11.170
Einmal noch eine kurze Warnung an der Stelle.

01:02:11.610 --> 01:02:13.370
Die Azure Linux Web Apps

01:02:13.370 --> 01:02:15.490
laufen auf einem Windows

01:02:15.490 --> 01:02:18.310
unten runter,

01:02:18.410 --> 01:02:19.630
das ist so ein bisschen blöd. Das ist mir noch ein paar

01:02:19.630 --> 01:02:21.290
Mal aufgefallen, als ich irgendwelche Tracebacks bekommen habe, wo ich dachte,

01:02:21.410 --> 01:02:21.730
ups.

01:02:23.290 --> 01:02:25.310
Ja, ich weiß auch nicht, ob das so,

01:02:25.410 --> 01:02:27.530
also ich wäre da nicht so

01:02:27.530 --> 01:02:29.290
early dabei, das zu adopten,

01:02:29.290 --> 01:02:31.270
quasi so rein in der Cloud zu kommen, aber ich kann es,

01:02:31.370 --> 01:02:48.310
Also ich kann es in gewisser Weise verstehen, weil man löst damit halt auch dieses Problem, was Docker ansonsten vielleicht dann lösen würde und halt unterschmerzen, weil ehrlich gesagt, Docker Desktop, also gut, ich kann jetzt nur von Mac sprechen, kann sein, dass es unter Windows besser ist, aber auf Mac ist Docker Desktop klein, dieses Docker Desktop ist halt so ein unfassbarer Schrott.

01:02:48.970 --> 01:02:50.630
Ja, da wird das auch, ja.

01:02:51.490 --> 01:02:55.190
Also wie oft mir das gestorben ist und zwar auf eine Art, dass ich das nicht mehr reparieren konnte.

01:02:56.690 --> 01:02:58.370
Ja, der Updates gehen nicht oder so.

01:02:58.370 --> 01:03:00.530
Ja, Updates gehen nicht oder, also ich hatte das

01:03:00.530 --> 01:03:02.550
mehrfach, dass mir doch jemand gesagt hat,

01:03:02.550 --> 01:03:04.150
The Spinery ist kaputt.

01:03:04.430 --> 01:03:05.630
So nach dem Update-Versuch.

01:03:06.110 --> 01:03:08.470
Ich musste ganz hart einfach das wegschmeißen

01:03:08.470 --> 01:03:10.130
und dann nochmal wegschmeißen, aus der

01:03:10.130 --> 01:03:12.550
Windows-Registry rauslöschen, also quasi

01:03:12.550 --> 01:03:14.670
die ganzen Profiles irgendwo aufsammeln und rausfinden,

01:03:14.770 --> 01:03:16.630
wo die sind, wegschmeißen, neu machen,

01:03:16.710 --> 01:03:17.690
damit es funktioniert. Furchtbar.

01:03:18.090 --> 01:03:20.410
Ja, und langsam und komisch

01:03:20.410 --> 01:03:22.170
und ich verstehe nicht so richtig,

01:03:22.170 --> 01:03:24.570
warum dieses Ding so...

01:03:24.570 --> 01:03:26.170
Und wenn man davon wegkommt,

01:03:26.310 --> 01:03:28.010
dadurch, dass man das in der Cloud macht, ja, das könnte man

01:03:28.010 --> 01:03:30.150
mir vorstellen, dass es für viele Leute vielleicht durchaus...

01:03:30.150 --> 01:03:31.430
Ja, okay. Ja, wahrscheinlich.

01:03:31.950 --> 01:03:32.470
Gute Idee.

01:03:33.770 --> 01:03:35.450
Da zwingt man die Leute dazu, VS Code zu benutzen.

01:03:36.090 --> 01:03:38.150
Ja, also PyCharm bietet das jetzt auch.

01:03:38.310 --> 01:03:38.450
Ja.

01:03:39.070 --> 01:03:40.410
Dass man in der Cloud arbeiten kann.

01:03:40.550 --> 01:03:42.270
In derselben oder sind das dann zwei unterschiedliche?

01:03:42.390 --> 01:03:44.910
Also muss man sich entscheiden oder kann man die parallel benutzen?

01:03:45.630 --> 01:03:47.650
Ich glaube, das sind unterschiedliche.

01:03:47.770 --> 01:03:49.290
PyCharm bietet nämlich da, glaube ich,

01:03:49.670 --> 01:03:51.770
also es gibt dann wieder so ein Angebot,

01:03:52.630 --> 01:03:55.870
dass man da so Dev Spaces zusammen hat.

01:03:56.410 --> 01:03:57.950
Bist du PyCharm oder VS Code?

01:03:58.890 --> 01:03:59.290
PyCharm.

01:03:59.450 --> 01:03:59.630
Okay.

01:03:59.630 --> 01:04:12.830
Also PyCharm für Python und VS Code ist eigentlich ein schöner Texteditor, also wenn man das Microsoft-Zeug wegnimmt und VS Codium nimmt, dann ist das ein schöner Editor und dann kann man halt, ja, viele Sachen damit machen.

01:04:13.370 --> 01:04:14.910
Okay, ich muss auch so, also ich mag es ja gerne.

01:04:15.330 --> 01:04:29.090
Ja, aber also letztlich so dieses vollintegrierte IDE, da ist man ja bei PyCharm einfach, ja, komplett, komplett ohne irgendwas konfigurieren zu müssen, man macht es an und dann ist man drin.

01:04:29.630 --> 01:04:31.970
würde ich auch sagen, ja, okay, vielleicht

01:04:31.970 --> 01:04:33.970
mit Konfiguration, aber, also ich habe jetzt, also Kollege,

01:04:34.130 --> 01:04:36.170
wir haben ja mit diesem Battle noch nichts gefunden,

01:04:36.290 --> 01:04:38.090
was ich nicht andersrum so oder so

01:04:38.090 --> 01:04:39.990
lösen könnte. Ja, das ist ein Muster, ne?

01:04:40.090 --> 01:04:41.310
Das ist dann...

01:04:41.310 --> 01:04:44.070
Ja, ja.

01:04:45.310 --> 01:04:46.050
Ja, also man kann

01:04:46.050 --> 01:04:48.030
das durchaus, also ich habe beides jetzt auch schon ausgiebig

01:04:48.030 --> 01:04:50.010
verwendet, man kann durchaus beides verwenden, denke ich, aber

01:04:50.010 --> 01:04:51.950
ich finde auch PyCharm ist halt, wenn man Python macht,

01:04:52.070 --> 01:04:53.990
ist es schon, es hat auch noch so ein paar nette

01:04:53.990 --> 01:04:55.610
Funktionen, also zum Beispiel ein Ding, das mich mir, ah,

01:04:55.870 --> 01:04:58.050
vielleicht habe ich was, ob du das

01:04:58.050 --> 01:05:00.310
mit VSCode hingekriegt hat, weil ich habe es bisher noch nicht

01:05:00.310 --> 01:05:02.030
hingekriegt, bei

01:05:02.030 --> 01:05:04.290
auf PyTest Fixtures klicken und dann im Code

01:05:04.290 --> 01:05:06.510
der Fixture landen. Das macht PyCharm

01:05:06.510 --> 01:05:07.010
einfach so.

01:05:08.430 --> 01:05:10.370
Auf die Fixtures? Ja, weil

01:05:10.370 --> 01:05:11.930
das ist tatsächlich ein Use Case, den ich häufig habe,

01:05:12.050 --> 01:05:13.530
weil VSCode dann so klingelt und ich denke,

01:05:13.650 --> 01:05:15.690
klickt das denn jetzt nicht richtig?

01:05:15.830 --> 01:05:18.470
Das funktioniert irgendwie nicht. Und dann so, ach nee, VSCode kann das nicht.

01:05:18.770 --> 01:05:20.350
Fand ich auch immer, das fand ich auch immer

01:05:20.350 --> 01:05:22.250
sehr angenehm bei PyCharm, dass man

01:05:22.250 --> 01:05:23.790
halt so schnell springen kann.

01:05:24.190 --> 01:05:26.270
Ja gut, das Ganze, also VSCode, Fixtures, muss ich gerade

01:05:26.270 --> 01:05:27.990
überlegen, muss ich mal ausprobieren.

01:05:28.050 --> 01:05:29.890
Also vielleicht gibt es irgendein Plugin, das das kann, aber

01:05:29.890 --> 01:05:31.890
so einfach so und mit dem Microsoft

01:05:31.890 --> 01:05:33.130
Language Server und so, das geht nicht.

01:05:33.130 --> 01:05:35.850
Aber ich finde, die entwickeln relativ schnell, also es gab auch

01:05:35.850 --> 01:05:37.770
einen Microsoft-Standard auf der Europe-Python, wo die halt meinten so,

01:05:37.790 --> 01:05:39.850
oh ja, voll gut und sagt mal, was uns noch fehlt, wir bauen das halt

01:05:39.850 --> 01:05:40.470
einfach so einfach ein.

01:05:41.330 --> 01:05:43.530
Ja, da ist viel Druck hinterkommt, ja.

01:05:44.290 --> 01:05:45.390
Also zum Beispiel auch Azure war halt irgendwie,

01:05:45.490 --> 01:05:48.150
Python 3.8 noch, da habe ich auch gedacht, hey Leute, geht noch gar nicht.

01:05:48.610 --> 01:05:50.150
Aber da arbeiten sie wohl dran, da ist wohl...

01:05:50.150 --> 01:05:51.190
Ja, ja. Aber

01:05:51.190 --> 01:05:52.490
Editor Wars.

01:05:53.010 --> 01:05:55.670
Ja, wir haben es eigentlich, wir haben irgendwie so was.

01:05:57.190 --> 01:05:59.050
Also Wim ist eigentlich auch ganz

01:05:59.050 --> 01:05:59.870
gut.

01:06:01.230 --> 01:06:02.490
Gut, dass hier niemand E-Mails nimmt.

01:06:03.450 --> 01:06:03.990
Hallo, Johann.

01:06:06.070 --> 01:06:07.070
Ja, oh,

01:06:07.250 --> 01:06:08.870
das ist auch ganz, habe ich letztens,

01:06:09.090 --> 01:06:10.630
also da muss man ein bisschen Zeit mitbringen, aber

01:06:10.630 --> 01:06:12.970
vielleicht, also mich hat das, ich hatte dann

01:06:12.970 --> 01:06:14.190
so ein nostalgisches

01:06:14.190 --> 01:06:16.710
Gefühl und dann musste ich das anhören.

01:06:17.270 --> 01:06:18.310
Lex Friedman Podcast,

01:06:19.590 --> 01:06:21.310
eine der letzten Episoden

01:06:21.310 --> 01:06:22.490
ist mit

01:06:22.490 --> 01:06:24.110
John Carmack.

01:06:25.290 --> 01:06:25.690
Genau.

01:06:26.350 --> 01:06:27.870
John Comet, der John Comet, der

01:06:27.870 --> 01:06:30.390
von Quake. Ja. Ja, okay.

01:06:30.450 --> 01:06:31.930
Genau. Hätte ich so, ah, okay.

01:06:32.250 --> 01:06:34.350
Das ist fast fünfeinhalb Stunden

01:06:34.350 --> 01:06:34.890
lang, aber

01:06:34.890 --> 01:06:38.010
ich hab in letzter Zeit

01:06:38.010 --> 01:06:38.750
länger Autofahren.

01:06:39.970 --> 01:06:42.230
Ja, und genau, ich dachte so.

01:06:42.250 --> 01:06:42.830
Ein Docker-Bild.

01:06:44.150 --> 01:06:44.550
Genau.

01:06:46.390 --> 01:06:47.610
Das war sehr kurzweilig.

01:06:48.290 --> 01:06:50.010
Also seit Quake 1 brauche ich immer die Konsole

01:06:50.010 --> 01:06:51.290
auf Tilde.

01:06:51.850 --> 01:06:52.510
Ah, ja, ja.

01:06:52.510 --> 01:06:53.130
Das war mein Bein.

01:06:53.550 --> 01:06:56.230
Ja, und das war

01:06:56.230 --> 01:06:57.930
ganz interessant, weil da redete

01:06:57.930 --> 01:07:00.170
er auch so ein bisschen über, beteiligte sich an diesem

01:07:00.170 --> 01:07:02.190
Editor war so ein bisschen und

01:07:02.190 --> 01:07:04.250
der hat dann auch

01:07:04.250 --> 01:07:06.230
irgendwann mal versucht Vim zu verwenden, also ich meine

01:07:06.230 --> 01:07:08.090
eine Woche irgendwo eingeschlossen versucht

01:07:08.090 --> 01:07:09.950
das zu lernen und dann rauszukriegen, warum

01:07:09.950 --> 01:07:12.190
Leute das gut finden, aber es hat ihn nicht überzeugen

01:07:12.190 --> 01:07:13.990
können. Er ist bei so, auch so

01:07:13.990 --> 01:07:15.930
eher auf der IDE-Seite und viel

01:07:15.930 --> 01:07:17.950
Debugger verwenden und

01:07:17.950 --> 01:07:20.090
ja, er meinte, er macht das nicht

01:07:20.090 --> 01:07:22.030
so extrem wie andere, andere machen das so was wie

01:07:22.030 --> 01:07:23.730
eine uralte, nicht

01:07:23.730 --> 01:07:26.050
wie es Code, sondern tatsächlich wie Studio

01:07:26.050 --> 01:07:28.150
Versionen verwenden, so

01:07:28.150 --> 01:07:30.230
Visual Studio 6 oder sowas, was dann halt auf den

01:07:30.230 --> 01:07:32.230
Rechnern damals gerade so ging und dann auf den

01:07:32.230 --> 01:07:34.190
heutigen Rechnern ist es halt einfach sackschnell und alles ist

01:07:34.190 --> 01:07:35.430
instant sofort

01:07:35.430 --> 01:07:38.070
sofort da

01:07:38.070 --> 01:07:40.210
und ja, dann genau, schreibt

01:07:40.210 --> 01:07:42.010
er halt meistens irgendwie C-artiges

01:07:42.010 --> 01:07:44.190
C++ oder sowas und macht

01:07:44.190 --> 01:07:46.150
halt viel im Debugger und das fand ich, aber ich fand es

01:07:46.150 --> 01:07:47.810
interessant, also einfach mal so zu

01:07:47.810 --> 01:07:50.130
hören, wie er da so Sachen macht und so

01:07:50.130 --> 01:07:51.930
Und der Name ist natürlich ein Guru, ne?

01:07:51.970 --> 01:07:54.030
Doom, Quake. Ja, ja, ja, tatsächlich, also ich

01:07:54.030 --> 01:07:55.730
genau, die auch, ich, damals

01:07:55.730 --> 01:08:01.650
Damals habe ich so ein bisschen, ich meine, ich habe es nie gespielt, aber ich habe ein bisschen geguckt, was sie so im Grafikbereich machen und fand das...

01:08:01.650 --> 01:08:02.650
Er hat es nie gespielt.

01:08:03.190 --> 01:08:09.750
Ich habe es vielleicht mal gespielt, aber ich habe nie Ehrgeiz entwickelt oder mich da lange miteinander...

01:08:09.750 --> 01:08:16.110
Oh, kurze Anekdote, ich war damals quasi Clan-Based in der Liga und da waren wir relativ weit oben, also ich glaube European Top 3.

01:08:16.450 --> 01:08:16.950
Wow, okay.

01:08:17.110 --> 01:08:17.630
Das war ganz gut.

01:08:20.510 --> 01:08:23.430
Ja gut, zwei TTF. Ja, TTF hieß damals noch was anderes.

01:08:24.430 --> 01:08:39.290
Ja, und genau. Aber was da so im Grafikbereich zum Beispiel bei Qualcomm passiert ist, das war gerade zu der Zeit, wo ich da auch irgendwie so mit Informatik und Grafik, da waren schon einige abgefahrene Sachen dabei.

01:08:39.290 --> 01:08:40.990
Da dachte ich so, wow, krass, also das ist ja so irgendwie

01:08:40.990 --> 01:08:43.310
so Spieleentwickler, die machen da irgendwie so ein bisschen,

01:08:43.730 --> 01:08:44.570
das war schon so echt,

01:08:45.250 --> 01:08:46.630
okay, das sind,

01:08:47.150 --> 01:08:49.210
die haben da, die machen da echt, also die implementieren

01:08:49.210 --> 01:08:51.090
da wirklich so ganz, ganz aktuelle

01:08:51.090 --> 01:08:53.350
Forschungsgeschichten direkt

01:08:53.350 --> 01:08:55.230
und machen das halt besser als

01:08:55.230 --> 01:08:57.070
alle anderen und so. Wahnsinn.

01:08:58.250 --> 01:08:59.150
Insofern, ja, also

01:08:59.150 --> 01:09:01.250
hat mich schon interessiert, was der, wie der dann so

01:09:01.250 --> 01:09:03.370
arbeitet und so. Ehrlich gesagt, was ich so ein bisschen

01:09:03.370 --> 01:09:04.630
frustrierend fand, ist, dass

01:09:04.630 --> 01:09:07.050
eines der Geheimnisse hinter seiner Produktivität

01:09:07.050 --> 01:09:09.090
wohl einfach ist, wahnsinnig

01:09:09.090 --> 01:09:09.610
viel arbeiten.

01:09:11.310 --> 01:09:13.070
Hätte mir eine andere Antwort gewünscht,

01:09:13.450 --> 01:09:14.730
eine andere Lösung für dieses Problem.

01:09:14.950 --> 01:09:17.050
Ich wäre gern auch sehr produktiv, aber das mit dem

01:09:17.050 --> 01:09:19.090
Arbeiten, das gefällt mir nicht, das muss irgendwie anders auch gehen.

01:09:19.130 --> 01:09:19.930
Ja, finde ich auch dafür.

01:09:21.070 --> 01:09:23.070
Ja, aber das ist halt so, einer meinte so, ja, das ist

01:09:23.070 --> 01:09:25.030
halt einer, der hat einfach wahnsinnig viel

01:09:25.030 --> 01:09:26.930
gearbeitet. Es gibt auch Leute, die können einfach schnell ertippen, die haben

01:09:26.930 --> 01:09:28.770
dann sowas wie 500 oder 600 Anschläge, die Mut.

01:09:29.030 --> 01:09:29.630
Ja, ja.

01:09:30.530 --> 01:09:32.470
Meistens ist es ja nicht, wie schnell ich den Code da

01:09:32.470 --> 01:09:34.270
in die Datei bekomme, sondern

01:09:34.270 --> 01:09:36.630
wie schnell ich darüber nachdenke.

01:09:37.030 --> 01:09:38.950
Ja, ja, genau. Und das, ja,

01:09:39.090 --> 01:09:40.090
Brain-Machine-Interface.

01:09:40.150 --> 01:09:42.090
Er meinte das auch so, er redet dann so ganz locker

01:09:42.090 --> 01:09:44.190
flockig, meinte so, ja, also er hat ja immer Stress

01:09:44.190 --> 01:09:46.110
im Internet, wenn dann Leute meinen so, na, aber mehr

01:09:46.110 --> 01:09:47.830
als acht Stunden, dann ist man ja nicht mehr so produktiv. Und er meinte,

01:09:48.230 --> 01:09:50.110
ja, das ist schon so, man ist dann nach acht Stunden nicht mehr so

01:09:50.110 --> 01:09:52.390
produktiv. Aber man ist halt noch so ein bisschen produktiv.

01:09:52.810 --> 01:09:54.170
Also nicht mehr so produktiv wie in den ersten

01:09:54.170 --> 01:09:56.410
acht Stunden, aber man kann ja noch ein paar Stunden weiterarbeiten

01:09:56.410 --> 01:09:58.190
und ist dann halt nicht mehr so produktiv. Aber das ist ja dann immer

01:09:58.190 --> 01:10:00.330
noch mehr als voll. Ja, das ist

01:10:00.330 --> 01:10:02.190
richtig. Wenn es nicht am nächsten Tag

01:10:02.190 --> 01:10:03.430
dann irgendwie sich, also

01:10:03.430 --> 01:10:06.530
bei mir ist das so, am nächsten Tag reduziert sich dann meine Produktivität

01:10:06.530 --> 01:10:07.710
auch deutlich. Also bei mir ist das anders.

01:10:07.910 --> 01:10:09.910
Ja, ja, ja. Und er meinte auch, er ist ein bisschen

01:10:09.910 --> 01:10:11.790
neidisch auf Leute, die dann halt nur vier Stunden

01:10:11.790 --> 01:10:13.950
schlafen müssen und am nächsten Tag wieder topfit sind und das lange durchhalten

01:10:13.950 --> 01:10:15.810
können. Und das kann er auch nicht. Sondern er meinte, so nach

01:10:15.810 --> 01:10:17.510
zwölf Stunden Programmieren ist halt bei ihm auch irgendwie

01:10:17.510 --> 01:10:19.630
Ende. Aber das kann er tatsächlich

01:10:19.630 --> 01:10:21.970
sustainable durchhalten. Dann meinte er so, zwölf Stunden am Tag

01:10:21.970 --> 01:10:23.810
programmieren kann ich sustainable machen.

01:10:23.910 --> 01:10:25.910
Habe ich seit ein paar Jahrzehnten gemacht.

01:10:25.990 --> 01:10:27.990
Das geht. Ich kriege dann auch keinen Burnout

01:10:27.990 --> 01:10:29.590
oder so. Das geht einfach immer so weiter.

01:10:30.930 --> 01:10:31.250
Okay.

01:10:32.330 --> 01:10:33.890
Das ist mir ein bisschen zu hart, ehrlich gesagt.

01:10:34.230 --> 01:10:35.970
Aber gut. Also schon nachvollziehbar

01:10:35.970 --> 01:10:37.950
so, wenn man so richtig Bock hat, dann hört

01:10:37.950 --> 01:10:39.930
man auch nicht mehr auf. Ja, aber das kann es ja nicht

01:10:39.930 --> 01:10:41.470
länger als zwei, drei Monate durchziehen.

01:10:42.190 --> 01:10:43.630
Denn irgendwann brauchst du halt wieder ein bisschen

01:10:43.630 --> 01:10:45.970
Luft und...

01:10:46.530 --> 01:10:47.910
Ich höre...

01:10:47.910 --> 01:10:48.390
Ja,

01:10:48.710 --> 01:10:51.890
seine Einstellung war dazu, dass ich diesen ganzen

01:10:51.890 --> 01:10:53.710
Quatsch brauche ich nicht. Ich brauche nur Diet Coke und Pizza

01:10:53.710 --> 01:10:55.690
und dann reicht es. Genau,

01:10:55.850 --> 01:10:57.790
das Sozialleben leidet dann zwar, aber

01:10:57.790 --> 01:10:59.730
ich weiß nicht, wenn man sich so richtig

01:10:59.730 --> 01:11:01.890
dann zurückzieht und dann... Die adlige Vampirblässe.

01:11:02.410 --> 01:11:02.570
Ja.

01:11:03.890 --> 01:11:05.950
Erinnert mich so ein bisschen an die Anfangszeiten,

01:11:05.970 --> 01:11:07.970
wo ich dann programmiert habe und rausgefunden

01:11:07.970 --> 01:11:09.350
habe, wie alles funktioniert, auch mit Django.

01:11:10.310 --> 01:11:10.490
Und

01:11:10.490 --> 01:11:13.930
ja, da habe ich eigentlich jede freie

01:11:13.930 --> 01:11:14.290
Minute

01:11:14.290 --> 01:11:17.530
an Django geschrieben und das gemacht.

01:11:18.110 --> 01:11:19.470
Das waren coole Zeiten, aber

01:11:19.470 --> 01:11:21.610
mittlerweile geht das auch nicht mehr.

01:11:21.830 --> 01:11:24.030
Long time ago, Galaxy Far Far Away.

01:11:24.910 --> 01:11:25.930
Ja. Aber ich frage

01:11:25.930 --> 01:11:27.790
mich, ob das bei, also das ist auch etwas,

01:11:27.850 --> 01:11:29.090
was ich von vielen Leuten höre,

01:11:29.330 --> 01:11:31.510
dass sie halt eine Phase hatten, wo sie das sehr intensiv,

01:11:31.570 --> 01:11:33.630
also das muss ich, also ich habe auch eine Phase,

01:11:33.630 --> 01:11:35.610
so phasenweise irgendwie Dinge

01:11:35.610 --> 01:11:37.230
sehr intensiv gemacht und ich weiß nicht, ob

01:11:37.230 --> 01:11:38.590
vielleicht das notwendig ist.

01:11:39.530 --> 01:11:40.410
Pubertätsende oder sowas.

01:11:41.330 --> 01:11:42.270
Auch danach noch.

01:11:43.770 --> 01:11:44.510
Bis wann geht das?

01:11:45.170 --> 01:11:47.390
Das ist so eine Feedback-Loop. Je länger du das machst,

01:11:47.510 --> 01:11:49.230
desto länger machst du das, desto länger machst du das.

01:11:49.310 --> 01:11:51.130
Und wenn du da aus dieser Loop nicht rauskommst,

01:11:51.870 --> 01:11:52.030
dann

01:11:52.030 --> 01:11:54.530
wo ist das Limit?

01:11:57.170 --> 01:11:57.750
Ja, keine Ahnung.

01:11:57.930 --> 01:11:58.910
Ich warte noch auf das Beispiel.

01:11:59.050 --> 01:12:01.150
Ich hoffe mal, irgendjemand kommt da mal und sagt so, ich mache das immer so

01:12:01.150 --> 01:12:03.050
zwei Stunden am Tag und ist trotzdem irgendwie sehr produktiv

01:12:03.050 --> 01:12:04.870
dabei geworden und kriegt irgendwie Dinge hin.

01:12:05.010 --> 01:12:08.150
Das wäre nett, weil das wäre echt, ich wünsche mir das.

01:12:08.230 --> 01:12:09.970
Ich habe am Anfang auch bei den Peißen-Zillern

01:12:09.970 --> 01:12:10.770
auch 70 Stunden investiert.

01:12:11.090 --> 01:12:11.790
Ja, ja, eben.

01:12:12.110 --> 01:12:13.590
Also irgendwie, ich höre das von vielen.

01:12:13.770 --> 01:12:15.750
Ja, also diese Rechnung halt ist halt tatsächlich irgendwie,

01:12:15.890 --> 01:12:17.810
wenn man, wir tun jetzt mal so,

01:12:17.870 --> 01:12:19.710
als schaffen maximal Produktivität in der Zeit,

01:12:19.790 --> 01:12:20.510
in der man da ist irgendwie.

01:12:20.770 --> 01:12:22.890
Und wenn man irgendwie jetzt 5 Stunden die Woche was macht

01:12:22.890 --> 01:12:23.690
oder 70 Stunden die Woche

01:12:23.690 --> 01:12:25.110
und dann macht man das 2 Jahre lang

01:12:25.110 --> 01:12:26.130
und man ist genauso gut,

01:12:26.690 --> 01:12:29.610
dann ist derjenige im Verhältnis zu demjenigen,

01:12:29.670 --> 01:12:30.450
der es 5 Stunden die Woche macht,

01:12:30.530 --> 01:12:32.090
einfach um 28 Jahre weiter.

01:12:32.470 --> 01:12:34.030
Ja, ich glaube, man kann es nicht so naiv rechnen.

01:12:34.050 --> 01:12:35.410
Ja, also, natürlich,

01:12:35.590 --> 01:12:38.130
aber der Punkt ist ja, glaube ich,

01:12:38.130 --> 01:12:40.130
relativ klar. Also, man kann das im Leben

01:12:40.130 --> 01:12:42.110
nicht aufholen, wenn man das

01:12:42.110 --> 01:12:43.350
versucht,

01:12:43.630 --> 01:12:44.990
so nebenbei.

01:12:45.370 --> 01:12:48.070
Ja, also, der eine Effekt ist halt,

01:12:48.110 --> 01:12:50.050
dass man natürlich irgendwie nicht die ganze Zeit so

01:12:50.050 --> 01:12:52.050
gut dazulernen kann, wenn man das so lange

01:12:52.050 --> 01:12:54.050
macht, sondern dann halt irgendwann weniger lernt

01:12:54.050 --> 01:12:56.090
und auch nicht so produktiv ist. Auf der anderen Seite ist es

01:12:56.090 --> 01:12:57.810
so, wenn man sehr langsam lernt, dann

01:12:57.810 --> 01:13:00.250
ist zwar

01:13:00.250 --> 01:13:02.010
die Zeit, die man investiert, besser investiert, aber

01:13:02.010 --> 01:13:03.450
das Problem ist, man vergisst dann ja auch wieder Sachen.

01:13:03.930 --> 01:13:11.050
Ja, also wir hatten uns schon mal dagegen drum gestritten, um so eine Sache, die ich persönlich sehr effektiv finde.

01:13:11.150 --> 01:13:14.210
Und zwar ist das, wenn irgendwas nicht funktioniert, da so lange gegenzuhauen, bis es kaputt geht.

01:13:14.370 --> 01:13:14.970
Ja, genau.

01:13:15.130 --> 01:13:16.150
Wo du sagst, das ist Quatsch.

01:13:16.250 --> 01:13:18.590
Also lieber weggehen und unter der Dusche fährt es dann ein.

01:13:18.670 --> 01:13:20.190
Also was natürlich auch stimmt bei bestimmten Sachen.

01:13:20.550 --> 01:13:26.370
Aber ich finde halt auch durch dieses Gegenhauen von allen Seiten und das irgendwann kaputt machen, lernt man halt intensiver.

01:13:26.370 --> 01:13:30.370
Und man merkt sich die Sachen mehr, weil man so lange gegengehauen hat, bis es kaputt gegangen ist, dass man gemerkt hat,

01:13:31.390 --> 01:13:33.390
wo man halt gegenhauen kann, es passiert nichts und wo man halt

01:13:33.390 --> 01:13:35.570
vielleicht doch was umfällt, dass man beim nächsten Mal auf jeden Fall

01:13:35.570 --> 01:13:37.170
schneller dahin kommt, wo man gegenhauen muss zum Beispiel.

01:13:37.870 --> 01:13:39.390
Und wenn man das halt dann nur

01:13:39.390 --> 01:13:41.510
die Einflusslösung hat, dann hat man diese ganzen Schläge von der

01:13:41.510 --> 01:13:42.830
Seite oder sowas verpasst.

01:13:43.550 --> 01:13:45.030
Also ich fand das schon immer super. Ja, kann sein. Vielleicht sind auch

01:13:45.030 --> 01:13:46.310
unterschiedliche Leute einfach unterschiedlicher.

01:13:46.750 --> 01:13:49.570
Oder es sind unterschiedliche Themen oder sowas, wo das halt hilft oder nicht hilft.

01:13:49.650 --> 01:13:51.810
Ich weiß nicht. Also ein bisschen Guru-Meditation.

01:13:52.570 --> 01:13:52.710
Ja.

01:13:54.910 --> 01:13:55.430
Ja, ja.

01:13:56.010 --> 01:13:57.510
Ja, ist aber auch, ich habe auch das

01:13:57.510 --> 01:13:59.390
Gefühl, dass ich das früher tatsächlich nicht konnte, irgendwie

01:13:59.390 --> 01:14:01.450
mehrere Projekte gleichzeitig. Also das mache ich jetzt

01:14:01.450 --> 01:14:03.550
halt gern. Ich mache irgendwie, wenn es irgendwo nicht weitergeht,

01:14:03.610 --> 01:14:05.330
dann mache ich halt was anderes und

01:14:05.330 --> 01:14:07.590
dann bis da dann nichts mehr weitergeht

01:14:07.590 --> 01:14:08.930
und dann wieder was anderes und

01:14:08.930 --> 01:14:11.430
ich habe das Gefühl, das geht jetzt eigentlich ganz gut

01:14:11.430 --> 01:14:13.470
und früher hätte ich das überhaupt nicht machen können.

01:14:13.650 --> 01:14:15.130
Früher hätte mich das total rausgebracht.

01:14:15.630 --> 01:14:17.450
Also ich weiß auch nicht.

01:14:17.610 --> 01:14:19.150
Ja, vielleicht ändert man sich halt über die Zeit auch.

01:14:19.290 --> 01:14:20.430
Ich weiß es eigentlich keine Ahnung.

01:14:21.310 --> 01:14:23.050
Ja, seltsam. Ja, irgendwie

01:14:23.050 --> 01:14:25.050
der heilige Gral an der Stelle noch nicht gefunden.

01:14:25.470 --> 01:14:25.870
Schade, schade.

01:14:27.910 --> 01:14:29.270
Wir sind übrigens in der Ente-Befolge.

01:14:29.390 --> 01:14:30.450
Ja, genau, genau, Ansible.

01:14:32.590 --> 01:14:32.870
Ja.

01:14:33.270 --> 01:14:34.930
Also ich habe hier noch so ein paar Sachen stehen, und zwar,

01:14:35.330 --> 01:14:37.150
also einmal, was macht man mit den Outputs, wo bekommt man die her,

01:14:37.210 --> 01:14:38.630
wie sammelt man die ein, das ist so ein bisschen technisch schlecht,

01:14:38.710 --> 01:14:41.470
testen, würde ich gerne noch mal drüber sprechen,

01:14:41.690 --> 01:14:43.010
wie macht man das, braucht man das?

01:14:43.750 --> 01:14:45.050
Ja, vielleicht die ganzen Commandos, Buildings,

01:14:45.090 --> 01:14:46.630
was gibt es denn überhaupt so, was kann man denn damit machen,

01:14:46.830 --> 01:14:48.790
dass man so ein bisschen mal vielleicht weiß, was ist denn schon drin,

01:14:48.930 --> 01:14:50.610
wofür muss man denn so Community-Module nehmen oder so.

01:14:51.710 --> 01:14:51.990
Und

01:14:51.990 --> 01:14:55.030
wie machen wir das mit so Secrets oder so,

01:14:55.030 --> 01:14:56.570
wo staut man die, wie staut man die,

01:14:56.910 --> 01:14:58.350
kann man die auch irgendwie committen,

01:14:58.490 --> 01:14:59.670
Machen wir das mit Source-Control? Irgendwie so.

01:15:00.470 --> 01:15:02.470
Vielleicht nochmal so als kleine Mini-Struktur

01:15:02.470 --> 01:15:04.370
vorweg für den nächsten

01:15:04.370 --> 01:15:06.350
Teil der nächsten Chapter-Mark.

01:15:07.450 --> 01:15:07.850
Hint, hint.

01:15:08.870 --> 01:15:10.630
Genau, wo sollen wir einsteigen?

01:15:12.210 --> 01:15:13.030
Fangen wir oben an.

01:15:13.150 --> 01:15:14.490
Also vielleicht nochmal mit dem

01:15:14.490 --> 01:15:15.710
Output. Man hat jetzt Zeugs

01:15:15.710 --> 01:15:18.470
und man braucht den Output davon, weil man

01:15:18.470 --> 01:15:20.390
irgendwie, ja man hat jetzt

01:15:20.390 --> 01:15:21.390
keine Ahnung, seine Datenbank

01:15:21.390 --> 01:15:24.550
exposed und wusste vorher noch nicht, welche Server-IP

01:15:24.550 --> 01:15:26.250
gab es denn da und die muss dann

01:15:26.250 --> 01:15:28.130
der Server drückschicken oder so.

01:15:28.330 --> 01:15:30.230
Genau, da kann ich dann in der Task

01:15:30.230 --> 01:15:32.190
selbst eine Variable registrieren

01:15:32.190 --> 01:15:34.370
mit dem Output und die kann ich dann halt

01:15:34.370 --> 01:15:35.610
über das ganze Play

01:15:35.610 --> 01:15:37.130
letztlich

01:15:37.130 --> 01:15:38.790
benutzen.

01:15:39.530 --> 01:15:41.250
Okay, ansonsten muss man die dann irgendwo hinschicken.

01:15:41.950 --> 01:15:44.210
Man kann die natürlich dann auch in eine Datei schreiben

01:15:44.210 --> 01:15:45.770
oder so. Ja, die Frage ist genau das.

01:15:45.890 --> 01:15:48.250
Man muss die vielleicht auf der Control-Note irgendwo ablegen,

01:15:48.350 --> 01:15:49.830
weil vielleicht braucht man die beim nächsten Run

01:15:49.830 --> 01:15:51.550
beispielsweise zu

01:15:51.550 --> 01:15:53.350
ähm

01:15:53.350 --> 01:15:55.850
wie klicke ich das? Also man möchte jetzt

01:15:55.850 --> 01:15:57.770
sowas machen wie Updates

01:15:57.770 --> 01:15:59.970
und man hat jetzt nicht den Luxus,

01:16:00.030 --> 01:16:01.730
dass man einfach sagen kann, okay, ich reiße den jetzt ab und baue

01:16:01.730 --> 01:16:03.750
den mit der neuesten Version neu auf, sondern man

01:16:03.750 --> 01:16:05.870
möchte vielleicht den updaten. Und das

01:16:05.870 --> 01:16:07.030
Problem ist ja, wenn man irgendwie was,

01:16:07.850 --> 01:16:09.950
so ein Staging-System vielleicht daneben haben will, um zu gucken, ob das läuft,

01:16:10.010 --> 01:16:11.790
wenn man einen Test fahren muss, weil das eine kritische Infrastruktur ist,

01:16:12.270 --> 01:16:14.110
dann muss man vielleicht auf der alten Version aufbauen

01:16:14.110 --> 01:16:15.630
und dann updaten.

01:16:16.630 --> 01:16:17.490
Weil sonst

01:16:17.490 --> 01:16:19.430
das nicht dasselbe ist wie

01:16:19.430 --> 01:16:21.570
das Produktionssystem, was man ja nur updaten muss.

01:16:22.250 --> 01:16:23.830
Du meinst, du willst das Update

01:16:23.830 --> 01:16:25.750
testen sozusagen? Genau. Achso.

01:16:26.490 --> 01:16:37.870
Also da würde ich letztlich dann sagen, okay, ich habe dann mein Inventory und dann habe ich da definiert, welche Server da in der Staging-Umgebung sind und dann lasse ich das Playbook.

01:16:38.370 --> 01:16:48.750
Aber du musst ja erst auf die historische Version laufen und dann das Update fahren. Und dafür muss ich mir wahrscheinlich die letzte Version irgendwo merken oder sowas.

01:16:49.350 --> 01:17:02.590
Ja, das ist natürlich auch nochmal so die Geschichte deklarativ, wenn ich jetzt sage, ganz einfach im Package Manager, YAM oder ABT und da kann ich dann halt sagen, welchen State soll das Paket haben.

01:17:02.590 --> 01:17:10.730
Nein, beispielsweise ich habe eine Software, die ich selber geschrieben habe, dann muss ich mir die Version zu mal merken, weil jetzt nicht über App kommt, sondern beispielsweise über ein GitHub-Report oder ein GitHub-Tag oder sowas.

01:17:11.090 --> 01:17:12.350
Ja, da kann ich natürlich dann

01:17:12.350 --> 01:17:14.330
sagen, okay, welches Tag möchte ich denn überhaupt

01:17:14.330 --> 01:17:16.250
auschecken? Oder möchte ich einfach die

01:17:16.250 --> 01:17:18.230
Latest auschecken? Dann habe ich halt immer die Latest,

01:17:18.330 --> 01:17:20.170
egal. Genau, aber wenn ich jetzt genau dieses

01:17:20.170 --> 01:17:22.050
Update-File habe, dann muss ich ja mir merken, welche

01:17:22.050 --> 01:17:24.030
Version in Produktion läuft.

01:17:24.570 --> 01:17:24.890
Beispielsweise.

01:17:26.150 --> 01:17:28.170
Damit ich erstmal das auschecken kann, um dann das Update auf

01:17:28.170 --> 01:17:30.250
die Latest zu fahren, um dann sicher

01:17:30.250 --> 01:17:32.290
zu stellen, dass ich das testen kann, um dann die Latest

01:17:32.290 --> 01:17:34.190
auf Produktion auszurollen. Dann muss ich mir wieder

01:17:34.190 --> 01:17:36.190
merken, was war denn jetzt Latest, was läuft denn jetzt da? Und das muss

01:17:36.190 --> 01:17:36.810
ich irgendwo hinschreiben.

01:17:39.030 --> 01:17:40.190
Und dafür brauche ich irgendwie so eine...

01:17:40.190 --> 01:17:41.690
Also das klingt mir ehrlich gesagt

01:17:41.690 --> 01:17:42.670
so ein bisschen kompliziert, also

01:17:42.670 --> 01:17:45.210
ich weiß nicht, ob es das Problem löst, aber

01:17:45.210 --> 01:17:47.070
willst du wirklich

01:17:47.070 --> 01:17:49.430
deine Ansible-Geschichten testen, weil ich würde jetzt

01:17:49.430 --> 01:17:51.350
sagen, es geht nicht so gut, also man kann

01:17:51.350 --> 01:17:53.230
das natürlich machen, aber ich weiß nicht, ist das eine schlaue Idee?

01:17:53.650 --> 01:17:55.250
Also wäre es nicht besser, also ich würde eher dazu

01:17:55.250 --> 01:17:57.150
tendieren, die ganzen Tests in die

01:17:57.150 --> 01:17:59.210
Applikationen zu verlagern und zu sagen, wenn die Tests

01:17:59.210 --> 01:18:00.570
in meiner Applikation grün sind,

01:18:01.210 --> 01:18:02.610
dann gehe ich davon aus, dass die funktioniert.

01:18:03.590 --> 01:18:05.290
Und ob das mit

01:18:05.290 --> 01:18:07.110
einer neuen Version funktioniert oder nicht, das kann ich auch

01:18:07.110 --> 01:18:07.690
lokal testen.

01:18:07.850 --> 01:18:09.830
Da wäre letztlich so die Frage,

01:18:10.490 --> 01:18:12.190
wie funktioniert

01:18:12.190 --> 01:18:13.230
mein Update-Mechanismus?

01:18:14.870 --> 01:18:16.290
Also warum willst du

01:18:16.290 --> 01:18:18.170
das auf Produktion testen und nicht lokal?

01:18:20.030 --> 01:18:20.310
Ja, weil

01:18:20.310 --> 01:18:22.190
vielleicht die Infrastruktur kaputt geht beim

01:18:22.190 --> 01:18:24.070
Bauen oder sowas. Wenn ich Änderungen an der

01:18:24.070 --> 01:18:26.170
Infrastruktur habe, keine Ahnung, es kommt ein neues Netzwerk dazu oder so,

01:18:26.570 --> 01:18:28.130
dann hilft es mir jetzt nicht, wenn die

01:18:28.130 --> 01:18:29.890
Anwendung selber irgendwie grün ist und läuft,

01:18:29.890 --> 01:18:31.870
wenn da irgendwie bei der Netzwerkkonfiguration

01:18:31.870 --> 01:18:33.170
irgendwas kaputt geht. Also quasi, ja,

01:18:33.230 --> 01:18:35.690
Integrationstest. So ungefähr, ja.

01:18:36.350 --> 01:18:57.210
Und das kann ja sein, dass halt beim Staging-System da, wenn ich das einfach vom Scratch baue, dann funktioniert diese Netzwerkkonfiguration, aber beim Update, weil da irgendwelche Versionen inkompatibel sind, muss ich irgendwie eine Migrationsfahrt wählen, damit das funktioniert. Ja, damit ich halt von der alten auf die neue Infrastruktur umwechseln kann. Und deswegen muss ich ja irgendwie wissen, auf welche alten Variante ich das bauen muss oder so.

01:18:57.210 --> 01:19:00.870
Ja gut, das wäre dann so das Thema, das hole ich mir dann aus den Facts.

01:19:01.910 --> 01:19:06.130
Ja, aber genau, aber diese Facts muss ich ja irgendwie dann zwischenspeichern, weil das ist ja ein alter Fact quasi gewesen.

01:19:06.350 --> 01:19:08.090
Das ist ja automatisch. Genau, also bevor

01:19:08.090 --> 01:19:09.830
irgendwas gemacht wird, werden ja die Facts geholt

01:19:09.830 --> 01:19:12.270
und anhand

01:19:12.270 --> 01:19:13.830
der Facts kann ich ja letztlich dann auch wieder

01:19:13.830 --> 01:19:15.930
entscheiden, was ich mache. Okay, das heißt, du musst halt dann

01:19:15.930 --> 01:19:17.950
tatsächlich sehen, okay, dein Repo ist ausgecheckt auf Tag

01:19:17.950 --> 01:19:19.890
und dann nicht auf Main

01:19:19.890 --> 01:19:21.910
oder Master oder Trunk oder was oder auf

01:19:21.910 --> 01:19:23.550
Production, wie auch immer man den Branch jetzt nennen will,

01:19:24.230 --> 01:19:25.710
in der jeweiligen Version.

01:19:26.290 --> 01:19:27.890
Genau, also das ist vielleicht auch so

01:19:27.890 --> 01:19:28.890
eine andere

01:19:28.890 --> 01:19:30.370
Denkweise,

01:19:31.050 --> 01:19:33.870
also durch dieses

01:19:33.870 --> 01:19:35.930
Deklarative, also dass man

01:19:35.930 --> 01:19:37.430
halt nur sagen möchte, ich möchte immer die

01:19:37.430 --> 01:19:39.310
neueste Version haben oder ich möchte immer

01:19:39.310 --> 01:19:41.810
diese Version haben, dann wäre

01:19:41.810 --> 01:19:43.710
das letztlich schon im Play oder im

01:19:43.710 --> 01:19:45.230
Playbook definiert.

01:19:45.650 --> 01:19:46.370
Und dann würde ich halt,

01:19:47.050 --> 01:19:48.970
dann müsste ich wirklich mein Playbook ändern.

01:19:49.290 --> 01:19:51.770
Das ist genau was, was wir am Anfang hatten. Du sagst halt,

01:19:51.850 --> 01:19:53.690
okay, wenn ich jetzt Latest eingebe, dann ist

01:19:53.690 --> 01:19:55.350
Latest in zwei Monaten nicht mehr Latest.

01:19:55.690 --> 01:19:57.690
Vielleicht. Genau, also wenn ich dann über das Playbook

01:19:57.690 --> 01:19:59.670
halt nochmal laufen lasse, dann guckt der, ah, gibt's

01:19:59.670 --> 01:20:01.630
was Neues? Okay, ich soll

01:20:01.630 --> 01:20:03.790
Latest nehmen, also update ich die Version.

01:20:04.190 --> 01:20:05.630
Und ob dann was kaputt geht,

01:20:05.710 --> 01:20:07.290
ist dem Ansible erstmal egal.

01:20:07.450 --> 01:20:08.550
Genau, und das ist das, was ich meine.

01:20:09.850 --> 01:20:10.850
Dafür müsste man

01:20:10.850 --> 01:20:13.150
dich diese Facts, was war denn jetzt

01:20:13.150 --> 01:20:15.250
Latest, irgendwie rausschreiben, also diesen State.

01:20:15.770 --> 01:20:17.190
Muss man sich irgendwie merken, um den

01:20:17.190 --> 01:20:18.730
reproduzierbar zu haben, also nach dem Motto,

01:20:19.170 --> 01:20:21.050
baue mir jetzt das Latest von vor zwei Monaten

01:20:21.050 --> 01:20:23.230
und dann check, ob das Update funktioniert, was ich

01:20:23.230 --> 01:20:25.170
mir überlegt habe. Ja, aber das klingt mir doch sehr

01:20:25.170 --> 01:20:26.730
stark, also ich meine, ich verstehe,

01:20:27.090 --> 01:20:29.470
wofür du das machen willst

01:20:29.470 --> 01:20:30.990
und dass man das, aber

01:20:30.990 --> 01:20:33.070
ich habe auch schon gehört, dass Leute eben,

01:20:33.470 --> 01:20:34.870
wenn man, das ist ja alles irgendwie auch

01:20:34.870 --> 01:20:37.390
so Infrastructure-as-a-Code

01:20:37.390 --> 01:20:41.450
ja, Infrastructure-as-a-Code

01:20:41.450 --> 01:20:43.430
Geschichte, dass man halt auch

01:20:43.430 --> 01:20:45.470
diese komplette Infrastruktur irgendwie testbar machen

01:20:45.470 --> 01:20:47.290
können will und das, aber

01:20:47.290 --> 01:20:48.890
ich weiß nicht, will man das wirklich?

01:20:49.370 --> 01:20:50.570
Ja, am Ende ist es halt auch so,

01:20:51.390 --> 01:20:53.490
dann müsste ich halt immer

01:20:53.490 --> 01:20:55.450
meine Version pinnen, vielleicht ist das auch eine gute

01:20:55.450 --> 01:20:57.310
Idee zu sagen, ich pinne sowieso immer

01:20:57.310 --> 01:20:59.210
und nehme Latest nicht, dann

01:20:59.210 --> 01:21:01.110
würde ich halt dann

01:21:01.110 --> 01:21:03.150
mein Ansible

01:21:03.150 --> 01:21:05.410
Script oder mein Ansible Playbook

01:21:05.410 --> 01:21:07.370
bearbeiten, dann wüsste ich das und dann würde ich

01:21:07.370 --> 01:21:07.570
halt,

01:21:08.730 --> 01:21:11.170
wahrscheinlich ist ja im Git eingecheckt und dann sagen,

01:21:11.290 --> 01:21:13.290
okay, neuer Commit und dann das testen.

01:21:14.450 --> 01:21:15.010
Aber also,

01:21:15.170 --> 01:21:17.430
so wie ich dich verstanden habe, ist es so, du möchtest

01:21:17.430 --> 01:21:19.450
im Grunde sagen können, also auf meinem

01:21:19.450 --> 01:21:20.790
Produktionssystem ist

01:21:20.790 --> 01:21:23.370
jetzt gerade, keine Ahnung, so und so viel

01:21:23.370 --> 01:21:25.350
von meinem Projekt installiert und ich

01:21:25.350 --> 01:21:27.370
möchte es auf meinem Staging-System testen können

01:21:27.370 --> 01:21:29.510
oder das muss ja gar nicht das Staging-System sein,

01:21:29.610 --> 01:21:31.270
sondern ich ziehe automatisch mit

01:21:31.270 --> 01:21:32.850
Terraform irgendwie mir Infrastruktur hoch

01:21:32.850 --> 01:21:35.370
und zwar in Versionen, so wie ich sie auf dem Produktionssystem

01:21:35.370 --> 01:21:37.150
habe und dann will ich testen, dass

01:21:37.150 --> 01:21:39.210
wenn ich das jetzt update, dass dann alles noch

01:21:39.210 --> 01:21:41.010
funktioniert. Genau. Das ist aber im Grunde

01:21:41.010 --> 01:21:43.410
ein Test deines

01:21:43.410 --> 01:21:45.170
Systems. Genau, das würde man

01:21:45.170 --> 01:21:46.870
ja dann einfach machen und gucken, ob es geht.

01:21:48.130 --> 01:21:48.450
Ja.

01:21:48.910 --> 01:21:51.110
Das Problem ist halt, wenn du das Update halt auf dem Produktionssystem

01:21:51.110 --> 01:21:52.970
fährst und es funktioniert nicht, dann ist es halt blöd. Genau,

01:21:53.050 --> 01:21:53.850
deswegen Staging.

01:21:54.890 --> 01:21:56.970
Ja, oder. Genau, und die muss halt dann

01:21:56.970 --> 01:21:59.070
so gerade. Aber du musst halt das Update

01:21:59.070 --> 01:22:01.130
reproduzieren, du kannst halt nicht einfach dann vom Sketch eine neue

01:22:01.130 --> 01:22:02.810
Version bauen, weil sonst wirst du das Produktionssystem

01:22:02.810 --> 01:22:03.510
abreißen und neu bauen.

01:22:03.510 --> 01:22:05.230
Aber da würde ich sagen,

01:22:05.850 --> 01:22:07.150
will man wirklich in eine

01:22:07.150 --> 01:22:09.530
Situation kommen, in der man

01:22:09.530 --> 01:22:11.430
sowas machen muss. Ich glaube, ich weiß nicht, ob es anders

01:22:11.430 --> 01:22:13.450
geht. Also mir fällt vielleicht, weißt du, wie es geht?

01:22:13.470 --> 01:22:15.070
Ich würde versuchen, das zu vermeiden, weil...

01:22:15.070 --> 01:22:17.590
Aber wie vermeidest du das? Nämlich die Tests

01:22:17.590 --> 01:22:19.310
halt in der Applikation laufen lassen. Ja gut, aber dann

01:22:19.310 --> 01:22:21.170
weißt du, ob deine Applikation funktioniert und nicht, ob deine

01:22:21.170 --> 01:22:23.590
Serverinfrastruktur funktioniert. Ja, wenn meine Serverinfrastruktur

01:22:23.590 --> 01:22:25.550
kaputt geht, dann weiß ich, habe ich einen neuen Test

01:22:25.550 --> 01:22:27.090
für meine Applikation. Aber ist das nicht genau der Sinn der

01:22:27.090 --> 01:22:29.530
Staging-Umgebung, um dann einmal das zu machen?

01:22:29.630 --> 01:22:31.050
Aber die ist ja in einem anderen Zustand.

01:22:31.190 --> 01:22:32.170
Genau, das ist, was ich meine.

01:22:32.310 --> 01:22:35.270
Die Frage ist halt, du musst halt diese Staging-Umgebung

01:22:35.270 --> 01:22:36.930
auf diesen zwei Ebenen bauen,

01:22:37.410 --> 01:22:39.110
damit du quasi dieses Update simulieren kannst.

01:22:39.230 --> 01:22:41.130
Weil wenn du nur die neue Version baust im Staging-System,

01:22:41.230 --> 01:22:43.770
kann es sein, dass das aus irgendwelchen Gründen funktioniert,

01:22:43.970 --> 01:22:44.730
aber das Update halt nicht.

01:22:46.070 --> 01:22:48.410
Also, ja, wie gesagt, was ich gehört habe,

01:22:48.510 --> 01:22:50.710
ist halt, dass Leute halt auch Tests eben gegen so,

01:22:50.750 --> 01:22:52.470
die ziehen dann sogar temporär Infrastruktur hoch,

01:22:53.030 --> 01:22:55.350
ein System, und machen dann ihre Tests dagegen.

01:22:55.930 --> 01:22:57.570
Das hört sich für mich ganz schrecklich an,

01:22:57.630 --> 01:22:58.810
weil das Problem ist, das macht ja dann auch

01:22:58.810 --> 01:23:00.810
dann eine Entwicklung, total langsam, weil allein das

01:23:00.810 --> 01:23:02.770
Hochziehen von dem Kram und auch ehrlich gesagt, ich finde

01:23:02.770 --> 01:23:04.390
Ansible ist halt schon, also bei mir,

01:23:04.510 --> 01:23:06.690
vielleicht mache ich irgendwas ganz falsch, langsam.

01:23:06.870 --> 01:23:08.730
Also das dauert Minuten. Also die ICD macht es langsam,

01:23:08.910 --> 01:23:10.590
also es dauert eher länger als, eher Stunden.

01:23:11.390 --> 01:23:12.890
Ja, das ist ja schrecklich, also wenn du

01:23:12.890 --> 01:23:14.690
halt sozusagen so einen Feedback-Loop

01:23:14.690 --> 01:23:16.490
haben willst, irgendwie du änderst was, guckst, ob es

01:23:16.490 --> 01:23:18.470
funktioniert, wenn es nicht funktioniert, wieder was ändern.

01:23:19.390 --> 01:23:20.790
Also für mich ist das schon, wenn da Minuten

01:23:20.790 --> 01:23:22.650
dazwischen liegen, ist das halt so, dass es

01:23:22.650 --> 01:23:24.630
einen deutlich langsamer macht, ja. Und wenn da Stunden

01:23:24.630 --> 01:23:26.350
dazwischen liegen, dann wird es ruhig. Aber genau, also so ein

01:23:26.350 --> 01:23:28.710
Deployment auf Azure, also ich weiß nicht, da kommen irgendwelche

01:23:28.710 --> 01:23:30.770
Ameisen und hängen Redis irgendwie

01:23:30.770 --> 01:23:32.550
allein selbstständig manuell ans

01:23:32.550 --> 01:23:34.790
Rack und musst 20 Minuten warten, bis das irgendwie

01:23:34.790 --> 01:23:36.450
angeschlossen ist. Solche Sachen, das

01:23:36.450 --> 01:23:38.650
ist halt ewig. Das dauert halt einfach lange.

01:23:38.770 --> 01:23:40.670
Und wenn man das halt dann in mehreren Stufen machen muss,

01:23:40.770 --> 01:23:42.270
dann schenkst du halt stundenlang da.

01:23:43.690 --> 01:23:44.130
Ja, klingt

01:23:44.130 --> 01:23:46.690
für mich nach keinem sehr angenehmen

01:23:46.690 --> 01:23:48.930
Workflow. Stimmt, das macht's

01:23:48.930 --> 01:23:50.610
nervig. Also das ist auch eine Sache, warum Asia

01:23:50.610 --> 01:23:52.410
nervig ist. Ja, überhaupt nicht.

01:23:52.410 --> 01:23:54.030
Aber die Frage ist,

01:23:54.370 --> 01:23:56.450
was würdest du denn sagen, was wäre denn die Lösung von diesem Problem?

01:23:56.650 --> 01:23:58.090
Also für mich, ich weiß

01:23:58.090 --> 01:23:59.910
ich weiß natürlich nicht, ob das immer geht, aber ich würde

01:23:59.910 --> 01:24:01.970
sagen, man schiebt die Tests in die

01:24:01.970 --> 01:24:03.950
Applikationen. Zum Beispiel, also ein Beispiel jetzt,

01:24:04.610 --> 01:24:05.950
wo ich das auch gehört habe, wo Leute

01:24:05.950 --> 01:24:08.090
sowas testen, wo die sagen, ja, also

01:24:08.090 --> 01:24:09.930
wenn ich jetzt zum Beispiel irgendwie

01:24:09.930 --> 01:24:11.590
nach AWS deploye

01:24:11.590 --> 01:24:13.910
und dann weiß ich zum Beispiel, die haben genau dieses

01:24:13.910 --> 01:24:15.830
Ding, wo ich auch denke, oh mein Gott, das ist einer

01:24:15.830 --> 01:24:17.790
der Gründe, warum ich ganz viel zu diesem

01:24:17.790 --> 01:24:19.430
Fileswerving auch gemacht habe.

01:24:20.370 --> 01:24:21.710
Also das ist auch bei dem jetzigen

01:24:21.710 --> 01:24:23.530
Python-Podcast ist es so, die Files kommen von

01:24:23.530 --> 01:24:25.870
S3 und

01:24:25.870 --> 01:24:27.850
aber das Problem ist jetzt natürlich,

01:24:27.950 --> 01:24:30.330
wenn ich jetzt Files gerne hätte,

01:24:30.510 --> 01:24:31.870
wo Leute sich authentifizieren müssen,

01:24:31.930 --> 01:24:32.550
um die sehen zu können,

01:24:33.590 --> 01:24:35.970
dann muss ich ja dann S3 darum kümmern,

01:24:36.130 --> 01:24:36.910
dass das so ist.

01:24:37.930 --> 01:24:38.390
Oder Django.

01:24:39.270 --> 01:24:41.990
Ja, das Problem, Django kann sich ja nicht darum kümmern,

01:24:42.310 --> 01:24:42.910
so in gewisser Weise,

01:24:43.050 --> 01:24:45.110
weil da ist ja sozusagen dann nur,

01:24:45.310 --> 01:24:47.250
also auf der Webseite ist ja nur ein Link auf S3.

01:24:48.390 --> 01:24:48.710
Ja.

01:24:49.950 --> 01:24:51.270
Das heißt, man kann natürlich dafür sorgen,

01:24:51.270 --> 01:24:52.170
dass der Link nicht sichtbar ist,

01:24:52.230 --> 01:24:53.190
wenn es nicht authentifiziert ist.

01:24:53.430 --> 01:24:54.390
Also verschiedene Möglichkeiten,

01:24:54.890 --> 01:24:57.550
dass man dem quasi dem Nginx zum Beispiel da mitgibt,

01:24:57.950 --> 01:24:59.910
Wenn es über S3 geht,

01:24:59.990 --> 01:25:00.530
da ist ja kein...

01:25:00.530 --> 01:25:03.770
Das ist sogar so, es ist S3, aber das S3

01:25:03.770 --> 01:25:05.430
ist sozusagen nur das Backend für

01:25:05.430 --> 01:25:07.330
CloudFront, für so ein CDN.

01:25:08.430 --> 01:25:08.690
Und

01:25:08.690 --> 01:25:11.690
jetzt ist halt die Frage, okay,

01:25:11.750 --> 01:25:13.590
wenn das über ein CDN geht, das geht ja nicht über

01:25:13.590 --> 01:25:15.790
dein Nginx, sondern das geht ja außenrum.

01:25:16.270 --> 01:25:17.550
So, jetzt kannst du...

01:25:17.550 --> 01:25:19.770
Du kannst die URLs so

01:25:19.770 --> 01:25:21.330
generieren, dass die halt signiert sind, zum Beispiel.

01:25:21.950 --> 01:25:23.730
Und dann kannst du dem S3

01:25:23.730 --> 01:25:25.430
beziehungsweise CloudFront oder wie auch immer sagen,

01:25:25.830 --> 01:25:27.570
ah, die URL muss aber signiert sein.

01:25:27.950 --> 01:25:29.950
die Signaturen sind nur für so und so lange gültig.

01:25:30.010 --> 01:25:32.010
Oder du musst halt irgendwie Cookies setzen. Es gibt ja diverse

01:25:32.010 --> 01:25:33.610
Möglichkeiten, wie man sich authentifizieren kann. Genau.

01:25:33.890 --> 01:25:36.110
Aber das Problem ist jetzt natürlich, wenn du darauf angewiesen bist,

01:25:36.110 --> 01:25:37.990
dass das wirklich funktioniert, musst du das ja

01:25:37.990 --> 01:25:40.050
eigentlich testen. Musst du ja sagen, okay, wenn

01:25:40.050 --> 01:25:42.350
jetzt jemand hier im Django-Admin

01:25:42.350 --> 01:25:44.090
gesagt hat, da darf keiner, da dürfen

01:25:44.090 --> 01:25:46.130
nur Authentifizierte drauf zugreifen, dann muss man

01:25:46.130 --> 01:25:48.070
diese Logik irgendwie testen können. Aber wenn

01:25:48.070 --> 01:25:50.170
die tatsächliche Überprüfung irgendwie

01:25:50.170 --> 01:25:52.150
in Cloud

01:25:52.150 --> 01:25:53.930
Front stattfindet, dann

01:25:53.930 --> 01:25:55.650
kannst du das nicht mehr gut testen, ohne

01:25:56.070 --> 01:25:57.990
dass du tatsächlich irgendwie das nach Cloud

01:25:57.990 --> 01:25:59.910
schon hochschiebst, irgendwie deine Einstellung machst

01:25:59.910 --> 01:26:01.850
und dann musst du... Du musst jetzt natürlich dann einen Mock

01:26:01.850 --> 01:26:03.870
dafür machen. Ja, aber das ist ja

01:26:03.870 --> 01:26:06.050
verkehrt, dann erbst du die Fehler ja

01:26:06.050 --> 01:26:07.950
damit. Jetzt kommt der Punkt, warum dann Leute

01:26:07.950 --> 01:26:10.150
einfach... Also genau

01:26:10.150 --> 01:26:11.950
das gleiche Szenario quasi, wenn Leute

01:26:11.950 --> 01:26:13.910
sagen so, ja, und wir ziehen unsere Infrastruktur

01:26:13.910 --> 01:26:15.970
ja per Terraform hoch und das ist

01:26:15.970 --> 01:26:17.890
ja dann der Vorteil, dass wir das auf unterschiedliche

01:26:17.890 --> 01:26:19.550
Cloud-Anbieter hochschieben können und jetzt haben wir

01:26:19.550 --> 01:26:21.970
zum Beispiel eben genau dieses Problem. Wir haben

01:26:21.970 --> 01:26:22.990
zum Beispiel da irgendwie

01:26:22.990 --> 01:26:25.750
Byte-Range-Requests

01:26:25.750 --> 01:26:27.350
irgendwie erlaubt. Das muss man irgendwie bei AWS

01:26:27.350 --> 01:26:29.470
so und so konfigurieren, dass das geht.

01:26:29.590 --> 01:26:31.670
Oder eben Authentifizierung. Und jetzt schieben wir das Ganze

01:26:31.670 --> 01:26:33.730
nach Azure. Und jetzt

01:26:33.730 --> 01:26:35.530
hat irgendjemand in der

01:26:35.530 --> 01:26:37.550
Terraform-Config irgendwie diese komische

01:26:37.550 --> 01:26:39.070
Konfiguration für AWS oder so gesehen,

01:26:39.210 --> 01:26:41.050
wie man das macht. Hat sich gedacht so,

01:26:41.350 --> 01:26:43.290
was ist das denn? Das habe ich ja noch nie gehört.

01:26:43.390 --> 01:26:45.510
Was sind denn Byte-Range-Requests? Ach, das ist bestimmt

01:26:45.510 --> 01:26:47.250
ein Artefakt von irgendeiner uralten Geschichte.

01:26:48.190 --> 01:26:49.450
Ich nehme das mal raus und gucke,

01:26:49.450 --> 01:26:51.410
ob es geht. Man nimmt das raus,

01:26:51.510 --> 01:26:53.570
guckt, ob es geht. Und dann geht es auch.

01:26:54.170 --> 01:26:55.310
Aber man hat damit halt einen ganz

01:26:55.310 --> 01:26:57.230
wichtigen Teil der Funktionalität kaputt gemacht.

01:26:57.650 --> 01:26:59.230
Ja, und jetzt müssen alle Clients plötzlich

01:26:59.230 --> 01:27:01.350
irgendwie alle Files immer komplett holen, weil

01:27:01.350 --> 01:27:03.070
Byte-Range-Requests nicht mehr gehen und

01:27:03.070 --> 01:27:05.650
ja, also wie zum Beispiel bei Podcasts

01:27:05.650 --> 01:27:07.250
oder Podcast-Player holen sich immer nur Teile,

01:27:07.630 --> 01:27:09.630
wenn das Teil-Format

01:27:09.630 --> 01:27:10.130
das unterstützt.

01:27:11.210 --> 01:27:13.310
Und ja, das ist halt in der Produktion dann

01:27:13.310 --> 01:27:15.150
unterbestimmt eine Riesenkatastrophe, wenn das halt

01:27:15.150 --> 01:27:17.410
abgeschaltet ist und nicht mehr geht. Das heißt eigentlich,

01:27:17.410 --> 01:27:19.310
wenn du solche Sachen da drin hast, dass halt

01:27:19.310 --> 01:27:21.370
Teile der, also

01:27:21.370 --> 01:27:23.530
der Features deiner Applikation

01:27:23.530 --> 01:27:25.590
sozusagen darin bestehen, dass du

01:27:25.590 --> 01:27:26.050
dein

01:27:26.050 --> 01:27:30.050
Object Store oder CDN richtig konfigurierst,

01:27:30.590 --> 01:27:31.730
dann musst du das eigentlich

01:27:31.730 --> 01:27:33.590
testen. Dann musst du das auf einer Test, irgendwie

01:27:33.590 --> 01:27:35.170
testmäßig hochziehen, dann

01:27:35.170 --> 01:27:37.730
deine Features, die

01:27:37.730 --> 01:27:39.670
halt im CDN liegen, halt testen

01:27:39.670 --> 01:27:41.710
und dann kannst du erst sagen, wenn das alles funktioniert,

01:27:41.830 --> 01:27:43.670
okay, es funktioniert. Das war gerade ein Plädoyer für das,

01:27:43.750 --> 01:27:44.670
was ich gerade eben gesagt habe.

01:27:45.450 --> 01:27:47.730
Für mich hört sich das an, oh mein Gott, das will man auf gar

01:27:47.730 --> 01:27:49.730
keinen Fall machen. Für mich klingt das nach

01:27:49.730 --> 01:27:51.750
ein Plädoyer, ich surfe meine

01:27:51.750 --> 01:27:53.030
Files selber, ich mache das nicht bei dem CDR.

01:27:54.270 --> 01:27:55.050
Aber erst als Beispiel.

01:27:55.250 --> 01:27:56.810
Dann kann ich es in der Applikation testen.

01:27:56.970 --> 01:27:59.790
Aber du müsstest deine Byte-Requests jetzt tatsächlich testen mit AWS.

01:28:00.230 --> 01:28:01.370
Nee, muss ich nicht.

01:28:01.410 --> 01:28:03.070
Du hast jetzt bei AWS, also okay.

01:28:03.310 --> 01:28:04.970
Aber dann wäre der Test,

01:28:05.510 --> 01:28:07.490
wenn du den hättest, würdest du halt merken, wenn jemand

01:28:07.490 --> 01:28:09.550
ein Update fährt und das geht dann nicht mehr.

01:28:09.750 --> 01:28:11.350
Aber das würdest du nur mit meinem Update vielleicht.

01:28:12.730 --> 01:28:13.630
Naja, du musst dann halt

01:28:13.630 --> 01:28:15.710
dann, es ist halt furchtbar.

01:28:15.870 --> 01:28:17.250
Okay, wie würdest du es denn machen?

01:28:17.290 --> 01:28:18.470
Also ich würde sagen, also

01:28:18.470 --> 01:28:20.910
es geht wahrscheinlich nicht immer, also manchmal

01:28:20.910 --> 01:28:22.690
muss man dann vielleicht sowas furchtbares tun, wie

01:28:22.690 --> 01:28:24.810
irgendwie dann solche Tests gegen eine

01:28:24.810 --> 01:28:26.870
Testinstallation fahren. Ich würde es so machen,

01:28:26.970 --> 01:28:28.990
ich würde sagen, ich surf die Requests halt selber

01:28:28.990 --> 01:28:30.930
und teste das halt auch, dass die

01:28:30.930 --> 01:28:32.970
Byte-Range-Requests halt gehen und dass Authentifizierung

01:28:32.970 --> 01:28:34.910
geht, lokal, ohne irgendein CDN.

01:28:35.350 --> 01:28:36.990
Und ich benutze dann halt eben kein CDN

01:28:36.990 --> 01:28:39.010
für diese Art von, also vielleicht benutze ich ein CDN

01:28:39.010 --> 01:28:41.050
für Sachen, wo es egal ist, wo ich keine Konfiguration brauche,

01:28:41.170 --> 01:28:42.670
aber für die Sachen, wo ich halt

01:28:42.670 --> 01:28:45.010
irgendwie Spezialkonfigurationen brauche, nehme ich halt kein CDN,

01:28:45.110 --> 01:28:46.790
sondern service halt direkt.

01:28:48.350 --> 01:28:50.110
Okay, aber das ist dann eine Entscheidung, die an deine Stelle

01:28:50.110 --> 01:28:52.030
kommen muss. Das macht dich

01:28:52.030 --> 01:28:53.910
an mehreren Stellen vielleicht unbeweglich.

01:28:55.810 --> 01:28:56.190
Ja, also

01:28:56.190 --> 01:28:58.250
solange das funktioniert, bin ich damit deutlich flexibel.

01:28:58.250 --> 01:28:59.570
Ja, also solange du den Hut auf hast, schon.

01:29:00.790 --> 01:29:02.090
Ja, also, ja gut.

01:29:02.290 --> 01:29:04.010
Also, ist halt die Frage. Ich weiß

01:29:04.010 --> 01:29:05.930
nicht, ob es auch da eine...

01:29:05.930 --> 01:29:08.230
Aber diese Geschichte, ich ziehe mir eine Testinfrastruktur

01:29:08.230 --> 01:29:10.070
hoch und mache dann Tests dagegen und das dauert

01:29:10.070 --> 01:29:11.990
alles irgendwie 30 Minuten, das klingt

01:29:11.990 --> 01:29:13.550
ziemlich schrecklich, ehrlich gesagt. Dreieinhalb Stunden.

01:29:14.630 --> 01:29:15.830
Aber letztlich muss man dann auch

01:29:15.830 --> 01:29:18.110
überlegen, okay, also sind diese Dateien

01:29:18.110 --> 01:29:19.750
so wichtig, dass ich mir dreieinhalb Stunden

01:29:19.750 --> 01:29:21.850
Zeit nehme, damit ich halt

01:29:21.850 --> 01:29:22.750
absolut sicher bin.

01:29:23.910 --> 01:29:25.950
Also ich sag mal, bei Kundendaten, die du nicht einfach

01:29:25.950 --> 01:29:27.950
mal so neu reinbauen kannst, dann sollte man

01:29:27.950 --> 01:29:29.890
das vielleicht in Erwärmung ziehen.

01:29:30.250 --> 01:29:31.930
Genau, und dann muss man halt

01:29:31.930 --> 01:29:33.550
gucken, was ist das

01:29:33.550 --> 01:29:34.430
Richtige.

01:29:36.430 --> 01:29:37.570
Und vielleicht

01:29:37.570 --> 01:29:39.750
kann man dann auch überlegen, okay, ich habe jetzt

01:29:39.750 --> 01:29:41.390
in dem Bereich nichts gemacht, da reicht so die

01:29:41.390 --> 01:29:43.230
normale, die normalen Tests.

01:29:43.850 --> 01:29:43.970
Ja.

01:29:46.530 --> 01:29:47.730
Ja, ja, also

01:29:47.730 --> 01:29:52.110
Ja, okay.

01:29:53.810 --> 01:29:54.410
Testing haben wir ja.

01:29:54.570 --> 01:29:55.570
Okay, aber jetzt vielleicht nochmal.

01:29:56.870 --> 01:29:58.290
Molekül gibt es bei Enzebel

01:29:58.290 --> 01:29:59.330
oder Assertions?

01:30:00.270 --> 01:30:02.510
Achso, ich meinte nur, ich schreibe keine Tests

01:30:02.510 --> 01:30:04.390
für die Enzebel-Geschichten, sondern ich probiere es halt aus

01:30:04.390 --> 01:30:06.630
und wenn es geht, dann sage ich mir, okay, das ist gut genug.

01:30:07.430 --> 01:30:08.690
Alles, was ich wirklich testen möchte,

01:30:08.790 --> 01:30:09.470
teste ich in der Applikation.

01:30:09.810 --> 01:30:12.390
Also was ich mache, also bei Enzebel-Sachen ist, ich mache Assertions

01:30:12.390 --> 01:30:13.530
am Anfang, so ein paar.

01:30:14.310 --> 01:30:16.310
Einfach die dann halt mir um die Ohren fliegen, dann weiß ich relativ schnell,

01:30:16.390 --> 01:30:18.470
funktioniert das nicht und warte halt nicht, dass das ganze Playbook da läuft,

01:30:18.570 --> 01:30:20.390
sondern einfach direkt, okay, irgendwas geht hier nicht,

01:30:20.470 --> 01:30:22.430
danke, mach nochmal. Aber das sind so

01:30:22.430 --> 01:30:24.150
einfache Sachen eigentlich nur. Ja, also

01:30:24.150 --> 01:30:26.210
geht ja ganz am Anfang los mit einer Debug-Flag

01:30:26.210 --> 01:30:27.830
und sich da einfach mal alles so

01:30:27.830 --> 01:30:29.710
anzeigen zu lassen und zu sehen, okay,

01:30:30.430 --> 01:30:32.030
passieren auch die Dinge, wo ich vermute,

01:30:32.190 --> 01:30:32.770
die passieren.

01:30:34.630 --> 01:30:34.990
Tatsächlich

01:30:34.990 --> 01:30:38.070
teste ich die letztlich auch gegen Vagrant

01:30:38.070 --> 01:30:39.490
und gucke dann, ob der

01:30:39.490 --> 01:30:42.010
die am Ende

01:30:42.010 --> 01:30:43.550
die Konfiguration hat, die ich haben möchte.

01:30:44.530 --> 01:30:46.210
Interessant. Okay, mit Vagrant testen?

01:30:46.390 --> 01:30:48.990
Okay, was ist mit Molecule?

01:30:49.110 --> 01:30:49.590
Kennt ihr das?

01:30:50.830 --> 01:30:52.850
Ist auch so Endable-Molecule-Testing

01:30:52.850 --> 01:30:54.870
da kann man sowieso Testmodule schreiben, die man dann irgendwie

01:30:54.870 --> 01:30:56.410
reinsetzt in seinen

01:30:56.410 --> 01:30:58.610
ja, wenn man das so selber

01:30:58.610 --> 01:31:00.650
Endable-Module schreibt, dann kann man das irgendwie machen

01:31:00.650 --> 01:31:02.550
müssen wir vielleicht nochmal nachgucken

01:31:02.550 --> 01:31:04.790
Genau, so in die Verlegenheit bin ich bisher noch nicht gekommen

01:31:04.790 --> 01:31:06.250
weil es gibt echt viel

01:31:06.250 --> 01:31:08.570
was man letztlich, was es schon gibt

01:31:08.570 --> 01:31:10.830
und wenn

01:31:10.830 --> 01:31:12.790
es das nicht gibt, am Ende setze ich dann

01:31:12.790 --> 01:31:13.650
einfach ein Command ab

01:31:14.310 --> 01:31:15.970
Ja, okay, das ist halt tatsächlich die Frage,

01:31:16.070 --> 01:31:18.030
weil es gibt halt viele, viele Build-ins von

01:31:18.030 --> 01:31:19.570
Ansible. Also Ansible Build-in irgendwas

01:31:19.570 --> 01:31:22.330
ermöglicht einem relativ viel. Kommandos

01:31:22.330 --> 01:31:23.950
auch dann. Es gibt auch Community,

01:31:24.110 --> 01:31:26.170
ist meistens schon vorinstalliert mit, wenn man

01:31:26.170 --> 01:31:27.930
das, die meisten Community-Sachen sind mit drin.

01:31:28.550 --> 01:31:29.170
Für schöne Sachen.

01:31:30.510 --> 01:31:32.090
Die Frage ist, gibt es so Dinge, die

01:31:32.090 --> 01:31:33.750
man dann selber bauen will? Beispielsweise man

01:31:33.750 --> 01:31:36.030
hat irgendein Command-Line-Interface, das man ständig

01:31:36.030 --> 01:31:38.090
benutzt, was dann immer sehr hässliche

01:31:38.090 --> 01:31:40.150
ellenlange Befehlszahlen

01:31:40.150 --> 01:31:42.010
ausgibt. Da könnte man ja selber

01:31:42.010 --> 01:31:44.010
sich ein Ansible-Modul für schreiben, in Python,

01:31:44.430 --> 01:31:45.910
was dann quasi ein Abstraktionslayer

01:31:45.910 --> 01:31:47.450
drüber schreibt, wo man dann ein

01:31:47.450 --> 01:31:49.110
eigenes Ansible-Modul,

01:31:49.870 --> 01:31:51.390
ob man das in Galaxy hochlegt, wie auch immer,

01:31:51.890 --> 01:31:53.810
benutzt, um dann zu sagen,

01:31:53.930 --> 01:31:55.650
hey, wir hatten ein einfacheres,

01:31:56.250 --> 01:31:57.570
schöneres Interface, um

01:31:57.570 --> 01:31:59.770
so Befehle zu bieten.

01:32:01.550 --> 01:32:01.810
Ja,

01:32:02.290 --> 01:32:03.590
also tatsächlich so,

01:32:03.790 --> 01:32:05.790
bisher habe ich noch alles gefunden in Ansible,

01:32:06.250 --> 01:32:07.590
was man so braucht.

01:32:07.870 --> 01:32:09.250
Ja, oder man hat tatsächlich dann direkt

01:32:09.250 --> 01:32:10.830
das, was man ausführen kann. Genau.

01:32:11.750 --> 01:32:13.270
Und ja, dann wird man sich überlegt,

01:32:13.390 --> 01:32:13.910
okay, am Ende

01:32:13.910 --> 01:32:17.550
wird eine SSH-Verbindung aufgemacht

01:32:17.550 --> 01:32:18.830
und ein Shell-Kommando abgesetzt.

01:32:20.210 --> 01:32:21.330
Ja, und dann kann man natürlich

01:32:21.330 --> 01:32:23.030
gucken, okay, wenn ich ein Modul entwickle,

01:32:23.270 --> 01:32:25.390
dann gucke ich, dass halt das Richtige

01:32:25.390 --> 01:32:27.370
am Ende rauskommt. Ja, ich würde auch noch ein bisschen

01:32:27.370 --> 01:32:29.070
das Assoziationsniveau, kann man halt manchmal, wenn

01:32:29.070 --> 01:32:31.170
wirklich mal ein komplexes Sachmal, kann man es so ein bisschen vereinfachen,

01:32:31.230 --> 01:32:33.210
vielleicht für Leute, mit denen man arbeitet oder die es

01:32:33.210 --> 01:32:35.130
benutzen, indem man das so ein bisschen weg abstrahiert vielleicht.

01:32:35.490 --> 01:32:37.130
Aber beim Thema Modul schreiben sind wir

01:32:37.130 --> 01:32:38.990
wieder so, dann

01:32:38.990 --> 01:32:40.950
schreibe ich natürlich auch wieder ganz viele Sachen

01:32:40.950 --> 01:32:43.070
für ganz viele

01:32:43.070 --> 01:32:45.210
Betriebssysteme, die ich vielleicht

01:32:45.210 --> 01:32:46.830
dann doch nicht brauche.

01:32:48.670 --> 01:32:49.350
Ja, das

01:32:49.350 --> 01:32:50.950
ist halt immer so die Abwägung,

01:32:52.410 --> 01:32:52.610
wann

01:32:52.610 --> 01:32:55.050
macht es Sinn, in die höhere Abstraktion zu gehen,

01:32:55.470 --> 01:32:57.210
um einfach zu sagen, okay, das bringt

01:32:57.210 --> 01:32:59.270
mir jetzt so viel. Vielleicht hätten wir es mit der

01:32:59.270 --> 01:33:01.090
Teamgröße zu tun, also wie viele Anwender von deinem

01:33:01.090 --> 01:33:02.370
Endebim-Modul gibt es zum Beispiel intern,

01:33:02.570 --> 01:33:05.050
um was zu machen, und wie viele Leuten kannst du da

01:33:05.050 --> 01:33:05.990
Arbeit erleichtern oder sowas.

01:33:08.410 --> 01:33:09.030
Ja, dann

01:33:09.030 --> 01:33:32.130
Und ich glaube, was noch fehlt, jetzt nur noch nach meiner Liste, sind die Secrets und wie man mit Secrets umgeht und wo man herbekommt. Gibt es irgendwelche Vaults, aus denen man sich authentifiziert? Wie macht man das? Schreibt man Secrets mit in irgendwelche Repos rein? In Source Control? Ist das eine schlechte Idee? Also man kann jetzt zum Beispiel verschlüsselt reinschreiben und dann irgendwie aufschlüsseln und dann einen Schlüssel nur mitgeben oder so? Und was würdet ihr sagen?

01:33:32.290 --> 01:34:01.670
Genau, also es gibt Unsable World und da kann ich dann letztlich einen beliebigen String verschlüsseln gegen ein Passwort und bekomme dann halt das Secret rausgeworfen, das kann ich dann in meinen Playbook reinpacken, dann kann ich das halt letztlich auch einchecken, weil es verschlüsselt ist und muss dann beim Ausführen des Playbooks einfach sagen, okay, frag mich nach dem Geheimnis oder nach dem Schlüssel für das Geheimnis und dann entschlüsselt er das Ganze.

01:34:01.670 --> 01:34:15.550
Ich kann es natürlich letztlich dann auch wieder ins Inventory schreiben zum Entschlüsseln, aber dann bin ich wieder bei dieser Debatte, unter welchen Umständen sollte ich Geheimnisse in meine Repos einchecken?

01:34:15.810 --> 01:34:17.730
Genau, das ist ja spannend. Also beispielsweise, wenn das

01:34:17.730 --> 01:34:19.750
gerade bei dem ganzen Infrastrukturprozess, muss das

01:34:19.750 --> 01:34:21.670
ja irgendwo rein und irgendwo

01:34:21.670 --> 01:34:23.590
entschlüsselt sein. Also irgendeine Maschine

01:34:23.590 --> 01:34:25.990
kennt dann das Secret, entweder als lokale

01:34:25.990 --> 01:34:27.730
Dot-Info oder was auch immer. Und da muss man halt wenigstens

01:34:27.730 --> 01:34:29.710
hingehen und das für den Zeitraum, wo man die Befehle

01:34:29.710 --> 01:34:31.230
ausführt, dann entschlüsseln, aufmachen

01:34:31.230 --> 01:34:33.830
und dann da rein schieben. Dann muss man halt aufpassen, dass es irgendwo

01:34:33.830 --> 01:34:35.490
wo nicht in irgendwelchen Logs oder irgendwo

01:34:35.490 --> 01:34:37.250
im Speicher zwischendurch weggeschrieben wird.

01:34:37.570 --> 01:34:39.650
Genau, also letztlich die Maschine, die es

01:34:39.650 --> 01:34:40.590
ausführt, die weiß es.

01:34:40.930 --> 01:34:41.050
Ja.

01:34:43.530 --> 01:34:45.010
Ja, ja, also da gibt es...

01:34:45.010 --> 01:34:46.270
Also jede Maschine, die es ausführt, weiß es.

01:34:46.550 --> 01:34:49.210
Die Vermittlung zwischendrin muss halt auch stabil sein und so.

01:34:49.970 --> 01:34:51.210
Ja gut, die sind ja da

01:34:51.210 --> 01:34:52.830
SSR relativ abgehangen.

01:34:54.170 --> 01:34:55.530
Das ist wahrscheinlich nicht

01:34:55.530 --> 01:34:57.470
das Problem, aber ja, also

01:34:57.470 --> 01:34:59.450
ich meine, die Secrets sind halt auf der Maschine

01:34:59.450 --> 01:35:00.990
unter der... Ich meine, das Schlimmste...

01:35:00.990 --> 01:35:03.750
Es gibt ja diese 12-Factor-App

01:35:03.750 --> 01:35:05.850
Geschichte, wie man halt, also das

01:35:05.850 --> 01:35:07.590
ist halt eigentlich die Art, wie

01:35:07.590 --> 01:35:09.730
Heroku irgendwie Dinge deployed hat

01:35:09.730 --> 01:35:11.950
irgendwie mal und die haben das halt so aufgeschrieben und das dann so genannt

01:35:11.950 --> 01:35:13.870
und da ist ja eine

01:35:13.870 --> 01:35:15.790
der Geschichten so für Secrets oder so

01:35:15.790 --> 01:35:17.270
Umgebungsvariablen zu verwenden.

01:35:18.270 --> 01:35:19.730
Ist halt auch so eine, also ich mach's

01:35:19.730 --> 01:35:21.910
häufig auch so, aber auf der

01:35:21.910 --> 01:35:23.970
anderen Seite so ein simpler

01:35:23.970 --> 01:35:25.850
Einwand dagegen ist halt, dass Leute

01:35:25.850 --> 01:35:27.870
sagen, ja, du machst es da mit Angreifern aber auch extrem

01:35:27.870 --> 01:35:29.330
einfach, ja, weil du

01:35:29.330 --> 01:35:31.830
eigentlich musst ein Angreifer, wenn er weiß, dass du

01:35:31.830 --> 01:35:33.890
das so machst oder, ich meine, eigentlich, das ist halt das Erste, was man dann

01:35:33.890 --> 01:35:35.470
tut als Eingreifer, einfach mal das

01:35:35.470 --> 01:35:38.130
Environment nehmen, weil das ist ja super einfach zu lesen,

01:35:38.270 --> 01:35:39.490
wenn du halt es geschafft hast, irgendwie

01:35:39.490 --> 01:35:41.430
Code im Kontext von irgendeinem Prozess auszuführen,

01:35:41.770 --> 01:35:43.070
nimmst du das Environment und schickst es irgendwo hin.

01:35:43.710 --> 01:35:45.970
Und dann hast du halt schon viele Secrets, möglicherweise

01:35:45.970 --> 01:35:47.390
alle möglichen AWS-Keys und so

01:35:47.390 --> 01:35:49.890
irgendwo hingeschickt und das ist halt schon, das ist halt das Erste,

01:35:49.890 --> 01:35:51.770
was ein Eingreifer macht. Ja, wenn man bei GitHub danach sucht,

01:35:51.830 --> 01:35:52.730
da gibt es dann einige,

01:35:52.950 --> 01:35:55.330
die, ja,

01:35:56.310 --> 01:35:57.550
gesquattete Vapors,

01:35:57.870 --> 01:35:59.950
die genau das machen, also die quasi

01:35:59.950 --> 01:36:01.110
den Quellcode nehmen und halt

01:36:01.110 --> 01:36:02.830
wenn man sich vertippt hat,

01:36:03.470 --> 01:36:05.190
dann einfach mal die Environment woanders

01:36:05.190 --> 01:36:07.250
hinschicken. Genau, und das ist natürlich

01:36:07.250 --> 01:36:09.170
so ein bisschen, und wenn man das irgendwie anders

01:36:09.170 --> 01:36:10.590
machen würde, also zum Beispiel

01:36:10.590 --> 01:36:12.850
über, also was ich auch gern mache,

01:36:13.270 --> 01:36:14.910
jetzt nicht bei Django mache ich es tatsächlich,

01:36:14.910 --> 01:36:16.930
meistens über Environment, weil es halt irgendwie so praktisch ist

01:36:16.930 --> 01:36:18.130
und nicht, aber

01:36:18.130 --> 01:36:20.790
in Projekten, wo ich Pydentic habe,

01:36:21.050 --> 01:36:22.930
mache ich das meistens mit Base-Settings oder so, wo es

01:36:22.930 --> 01:36:24.870
dann halt aus einem File gelesen wird und man das halt

01:36:24.870 --> 01:36:26.890
wissen muss und man importieren muss und das ist halt schon mal

01:36:26.890 --> 01:36:28.730
so ein automatisierter Angriff, ein Angriff

01:36:28.730 --> 01:36:30.690
funktioniert da schon. Und dann diese Base-Settings werden in

01:36:30.690 --> 01:36:31.730
Environment-Variablen geschrieben.

01:36:32.330 --> 01:36:33.570
Nee, eben, genau.

01:36:34.410 --> 01:36:36.970
Ist es bei der IT-Security immer das

01:36:36.970 --> 01:36:38.730
Thema, was ist denn mein Angriffsszenario,

01:36:39.310 --> 01:36:40.990
wenn ich jetzt

01:36:40.990 --> 01:36:42.690
sage, okay, ich bin eh in einem privaten

01:36:42.690 --> 01:36:43.630
Repo und

01:36:43.630 --> 01:36:46.910
wenn jemand dann Zugriff auf

01:36:46.910 --> 01:36:48.990
mein privates Report, was auf mein CI läuft

01:36:48.990 --> 01:36:50.830
und alles, also sagen wir, ich habe ein privates

01:36:50.830 --> 01:36:52.630
GitLab und da ist jemand drin,

01:36:53.310 --> 01:36:54.970
ja, dann ist es egal.

01:36:56.690 --> 01:36:57.090
Oder

01:36:57.090 --> 01:36:58.510
wenn ich sage, okay, aber

01:36:58.510 --> 01:36:59.890
es ist ja dann im Rahmen.

01:37:00.530 --> 01:37:02.790
Wenn jemand jetzt meine Umgebungsvariablen auslesen kann,

01:37:02.890 --> 01:37:03.950
dann auch schon wieder

01:37:03.950 --> 01:37:06.070
ein Problem.

01:37:06.530 --> 01:37:08.810
Das ist, wenn ich meinem Provider oder meinem

01:37:08.810 --> 01:37:10.590
Hoster nicht traue, dann habe ich auch ein Problem.

01:37:11.330 --> 01:37:12.790
Irgendwo muss man

01:37:12.790 --> 01:37:14.770
dann sagen, okay, diese Risiken gehe ich

01:37:14.770 --> 01:37:16.050
ein oder

01:37:16.050 --> 01:37:18.290
das sind die Maßnahmen, die ich klappen kann.

01:37:18.290 --> 01:37:20.750
Ich wurde gezwungen von der

01:37:20.750 --> 01:37:22.830
Konzern-Security, für den Konzern, wenn ich was gemacht

01:37:22.830 --> 01:37:24.510
habe, eben nicht

01:37:24.510 --> 01:37:26.490
direkt Environment-Variablen zu setzen, was ich

01:37:26.490 --> 01:37:27.490
gewollt hätte, also

01:37:27.490 --> 01:37:30.550
in so eine Terraform irgendwie rein,

01:37:30.610 --> 01:37:32.530
da kommen das halt aus Secrets und das ist halt irgendwie gekapselt,

01:37:32.590 --> 01:37:34.670
sondern ich musste es nochmal über einen Umweg

01:37:34.670 --> 01:37:36.690
in einen extra Vault reinschreiben,

01:37:36.970 --> 01:37:38.090
der dann irgendwie

01:37:38.090 --> 01:37:40.310
extra verschlüsselt wird, wo dann keiner mehr dran

01:37:40.310 --> 01:37:42.030
Zugriff drauf haben sollte angeblich.

01:37:43.270 --> 01:37:44.550
Ende vom Lied war aber, es wurde dann

01:37:44.550 --> 01:37:46.210
doch wieder da als Invasion Variable

01:37:46.210 --> 01:37:48.330
in diese Container reingeschrieben. Das heißt,

01:37:49.090 --> 01:37:50.150
das Ergebnis war dasselbe,

01:37:50.150 --> 01:37:52.030
nur dass ich zwischendurch noch ein paar extra Schritte

01:37:52.030 --> 01:37:53.950
gehen musste, wo halt ein Risiko

01:37:53.950 --> 01:37:55.370
eigentlich dann halt ist für Exposure.

01:37:56.130 --> 01:37:58.030
Ja, ist natürlich dann die Frage, was hat man

01:37:58.030 --> 01:37:59.830
damit gewonnen? Also nix. Okay,

01:38:00.150 --> 01:38:02.070
vielleicht kann ich noch in der Vault dann steuern,

01:38:02.150 --> 01:38:03.790
wer Zugriff drauf hat, dass dann

01:38:03.790 --> 01:38:05.990
alle sagen, okay, jetzt hat niemand mehr Zugriff drauf

01:38:05.990 --> 01:38:08.110
und dann... Ja, das war der Plan, aber das Problem

01:38:08.110 --> 01:38:09.730
ist halt, wenn die Sachen dann sowieso wieder auf dieser Web

01:38:09.730 --> 01:38:11.570
erplanten, dann ist halt... Dann haben alle Zugriff drauf.

01:38:12.170 --> 01:38:14.010
Ja, Zugriff haben, ja. Dann hat das

01:38:14.010 --> 01:38:15.670
so wenig Sinn gemacht, weil dann quasi noch mehr

01:38:15.670 --> 01:38:17.550
Angriffsszenarien dann irgendwo dazwischen liegen konnten.

01:38:17.990 --> 01:38:20.110
Genau, also man muss halt vorher überlegen,

01:38:20.590 --> 01:38:22.090
wogegen möchte ich mich denn wappnen?

01:38:22.210 --> 01:38:23.670
Oder vielleicht nicht verstanden haben, was man überhaupt tut,

01:38:23.670 --> 01:38:25.430
bevor man irgendwie die Regeln entforstet, die statisch

01:38:25.430 --> 01:38:27.010
irgendwie in den Passring. Ja, aber das

01:38:27.010 --> 01:38:29.530
steht so in der Policy, das machen wir so.

01:38:29.890 --> 01:38:31.450
Ja, genau, das ist ETIL. Irgendwer hat

01:38:31.450 --> 01:38:33.270
einen ETIL-Prozess definiert, wo das drin steht, wie man das macht.

01:38:34.530 --> 01:38:35.390
Ja, also ich kann ja mal

01:38:35.390 --> 01:38:37.410
einfach sagen, wie ich das, also ich check den, ich check

01:38:37.410 --> 01:38:38.590
tatsächlich die Secrets

01:38:38.590 --> 01:38:41.470
irgendwie mit ein, auch in öffentlichen Repos

01:38:41.470 --> 01:38:43.390
und da braucht man halt dann eben

01:38:43.390 --> 01:38:45.390
eine entsprechende Passphrase. Also was ich mir vorstelle,

01:38:45.670 --> 01:38:47.430
was man auch da verbessern könnte, weil Mutant ist halt

01:38:47.430 --> 01:38:49.050
das Problem, okay, wie verhält man denn die,

01:38:49.690 --> 01:38:51.470
das Passwort oder

01:38:51.470 --> 01:38:53.150
das Brotpasswort, das man dafür braucht halt

01:38:53.150 --> 01:38:54.750
und ja gut.

01:38:55.430 --> 01:38:57.870
Ja, man braucht halt irgendeinen vertrauenswürdigen

01:38:57.870 --> 01:38:59.530
Kanal, über den man das übermitteln kann.

01:38:59.750 --> 01:39:01.690
Ich glaube, man kann auch irgendwie Dinge mit GPG machen.

01:39:01.810 --> 01:39:03.310
Also ich würde sowas versuchen, wie

01:39:03.310 --> 01:39:04.310
YubiKeys zu verschicken.

01:39:05.530 --> 01:39:07.550
Also wo dann halt die Keys drauf sind,

01:39:07.590 --> 01:39:09.070
die das funktionieren und dann vielleicht geht das.

01:39:09.890 --> 01:39:11.770
Die sind halt auch nicht kopiersicher oder sowas.

01:39:11.890 --> 01:39:13.370
Ja, die YubiKeys, ja genau, die könnte man

01:39:13.370 --> 01:39:15.550
natürlich dann über den SSH-Agent

01:39:15.550 --> 01:39:17.730
und dann könnte man

01:39:17.730 --> 01:39:19.650
GPG machen und dann könnte

01:39:19.650 --> 01:39:20.950
man das wieder entschlüsseln.

01:39:20.950 --> 01:39:21.950
Ja, aber

01:39:21.950 --> 01:39:24.630
also mein idealer

01:39:24.630 --> 01:39:26.530
Workflow sozusagen, ich kann es momentan nur so

01:39:26.530 --> 01:39:28.710
beschreiben, wie ich es gerne hätte, aber ich weiß noch nicht genau, wie man

01:39:28.710 --> 01:39:30.630
es implementiert, ist halt sozusagen, dass ich sage, wenn ich

01:39:30.630 --> 01:39:32.830
jetzt halt irgendwas deployen will oder möchte an die Secrets,

01:39:33.690 --> 01:39:34.650
dass mich das

01:39:34.650 --> 01:39:36.670
Ansible halt dann, dass ich mich irgendwie bei Ansible

01:39:36.670 --> 01:39:38.630
einhake oder so und dann, dass dann, keine Ahnung,

01:39:38.690 --> 01:39:40.650
auf meinem Telefon halt dann irgendwie

01:39:40.650 --> 01:39:42.470
Two-Factor-mäßig irgendwas aufgeht und sagt halt,

01:39:42.530 --> 01:39:44.050
hier bestätige mal, dass ich irgendwie,

01:39:44.750 --> 01:39:46.470
dass du dir das

01:39:46.470 --> 01:39:48.370
angucken kannst und dann geht es halt auf

01:39:48.370 --> 01:39:49.190
so zum Beispiel

01:39:49.190 --> 01:39:51.590
oder YubiKey oder so.

01:39:51.590 --> 01:39:53.630
Ja, also ich finde die Kombination cool. Auf dem Telefon geht auch

01:39:53.630 --> 01:39:55.070
halt mal bitte an das Telefon in YubiKey.

01:39:55.350 --> 01:39:57.190
Ja, irgendwie sowas. Irgendwie so, ne? Weil der hat ja dann irgendwie

01:39:57.190 --> 01:39:58.730
NFC oder Bluetooth oder irgendwas.

01:39:59.390 --> 01:40:01.350
Ja, da könnte man dann auch gleich überlegen, ja,

01:40:01.530 --> 01:40:03.410
mache ich das vielleicht auf der Ebene von

01:40:03.410 --> 01:40:05.510
SSH, dass ich den 2-Faktor

01:40:05.510 --> 01:40:06.970
SSH mache? Gibt es auch eine Lösung?

01:40:07.250 --> 01:40:09.430
Da geht es auch mit YubiKey übrigens, habe ich letztens irgendwie, der Johannes

01:40:09.430 --> 01:40:11.270
hat das irgendwie gelinkt, so ein Artikel in seinen Weak News.

01:40:12.410 --> 01:40:12.930
Ja, ja.

01:40:14.670 --> 01:40:15.810
Ja, aber genau,

01:40:15.930 --> 01:40:17.630
aber das ist halt die Frage, wem musst du vertrauen?

01:40:17.750 --> 01:40:19.450
an deinen Mitarbeitern vertrauen,

01:40:19.930 --> 01:40:21.850
ist auch vielleicht nicht immer so einfach, für was und so,

01:40:21.950 --> 01:40:23.790
aber klar, also wenn du jetzt irgendwie einen Admin hast, der Sachen

01:40:23.790 --> 01:40:25.650
entwickeln soll, der muss natürlich schon Zugriff haben, das

01:40:25.650 --> 01:40:27.130
macht halt sonst keinen Sinn, wenn du jedes Mal irgendwie

01:40:27.130 --> 01:40:29.390
einen Antrag stellen musst und in drei Tagen warten musst,

01:40:29.390 --> 01:40:31.390
das ist natürlich totaler Quatsch.

01:40:32.610 --> 01:40:32.830
Ja, oder?

01:40:33.150 --> 01:40:35.470
Ja, an irgendeiner Stelle muss ich halt

01:40:35.470 --> 01:40:37.150
Leuten vertrauen und ich muss halt dann die

01:40:37.150 --> 01:40:39.490
Abwägung treffen, wem möchte ich

01:40:39.490 --> 01:40:41.410
denn vertrauen? Ich finde das mit physisch, glaube ich, ganz

01:40:41.410 --> 01:40:43.430
gut, also wenn man den Leuten einen physischen Schlüssel in die Hand geben

01:40:43.430 --> 01:40:45.430
kann, den die vielleicht sogar

01:40:45.430 --> 01:40:47.710
kopiergeschützt, ich weiß nicht, ob es da sowas gibt.

01:40:47.750 --> 01:40:49.050
Ja, also die YubiKeys,

01:40:50.430 --> 01:40:51.670
ja, die soll, also

01:40:51.670 --> 01:40:53.650
an sich, diese ganzen Hardware-Schlüssel

01:40:53.650 --> 01:40:54.650
sind kopiergeschützt.

01:40:56.930 --> 01:40:57.970
Ja, also, ne, dann könnte man

01:40:57.970 --> 01:40:59.270
Wenn halt einer rausfindet, wie es geht.

01:40:59.470 --> 01:41:00.070
Ja, ja.

01:41:01.090 --> 01:41:03.450
Wenn ich halt jemanden dann sage, okay, wir treffen uns, oder ich schicke

01:41:03.450 --> 01:41:05.130
ihn per Post, dann kann er auch kompromittieren, aber

01:41:05.130 --> 01:41:06.250
man gibt den,

01:41:07.070 --> 01:41:09.290
der fängt dann an, ne, wer hat da den physischen Zugriff auf,

01:41:09.350 --> 01:41:11.410
diese ganzen Sachen. Aber dann, wenn man den halt dann

01:41:11.410 --> 01:41:13.650
abgeben kann, dann ist das schon relativ

01:41:13.650 --> 01:41:15.590
sicher, okay, dass sich jetzt in meiner Chain dann

01:41:15.590 --> 01:41:17.430
nur die Leute auch dann beziehen können, die diesen

01:41:17.430 --> 01:41:18.590
Schlüssel auch von mir bekommen haben.

01:41:19.670 --> 01:41:20.910
Das ist ja schon mal ein Vorteil.

01:41:21.610 --> 01:41:23.170
Ja, oder Zertifikate, auch schön.

01:41:23.970 --> 01:41:25.290
Die kann man ja auch sagen, die laufen ab

01:41:25.290 --> 01:41:27.450
relativ schnell. Und dann ist die

01:41:27.450 --> 01:41:28.970
Root Authority, die ist dann

01:41:28.970 --> 01:41:31.070
die gehört einem dann.

01:41:31.430 --> 01:41:33.430
Ja, genau. Also geht ja auch

01:41:33.430 --> 01:41:35.170
relativ fix, so eine CA aufzustellen.

01:41:35.650 --> 01:41:36.970
Die sicher zu halten, ist wieder schwierig.

01:41:37.030 --> 01:41:39.110
Ja, das ist auch so super. Wir haben auch so eine Root CA, die

01:41:39.110 --> 01:41:41.190
sich selbst definiert hat und die dann die ganzen

01:41:41.190 --> 01:41:43.070
Zertifikate mit raus hat. Ich dachte, warum macht der denn

01:41:43.070 --> 01:41:43.890
den Scheiß drauf?

01:41:44.490 --> 01:41:44.850
Ja.

01:41:46.670 --> 01:41:49.670
Ja, ja, das ist Security auch sehr, sehr, sehr schwieriges Thema.

01:41:50.950 --> 01:41:59.790
Ja, man kriegt es nicht absolut sicher hin und man, also es ist wirklich, man muss sich die Risiken vor Augen führen und sagen, dieses Risiko gehe ich jetzt ein.

01:41:59.790 --> 01:42:02.490
Ja, man braucht halt irgendwie eine unabhängige Autorität, der man vertrauen kann.

01:42:03.550 --> 01:42:04.570
TÜV geprüft, ne?

01:42:07.030 --> 01:42:07.430
Ja.

01:42:07.570 --> 01:42:12.850
Man müsste irgendwo so ein Denkmal machen, in dem Denkmal steht dieser ursprüngliche Schlüssel drin und der ist dann noch, ne?

01:42:13.710 --> 01:42:18.890
Ja, es ist schwierig.

01:42:21.790 --> 01:42:24.830
Einen spannenden Aspekt, den wir noch nicht so beleuchtet haben,

01:42:25.070 --> 01:42:27.250
also wir haben ja auch viel über Docker gesprochen

01:42:27.250 --> 01:42:30.730
und dass es vielleicht auch Ansible verdrängt,

01:42:31.330 --> 01:42:33.490
aber was Ansible jetzt viel macht,

01:42:33.590 --> 01:42:36.270
ist in die Network Automation reinzugehen.

01:42:36.410 --> 01:42:38.930
Das heißt, alle großen Anbieter,

01:42:38.990 --> 01:42:40.950
die bieten jetzt auch Ansible-Module an.

01:42:40.950 --> 01:43:01.650
Das heißt, ich kann letztlich einen Cisco-Switch mit Ansible konfigurieren. Das sind interessante Sachen. Alles, was relativ groß ist, Palo Alto, UniPi, Nokia, die lassen sich jetzt über Ansible ansprechen. Und ja, wer schon mal so eine Cisco-Konsole bedient hat.

01:43:01.890 --> 01:43:10.810
Ja, das will man automatisiert wegschieben über seine eigene Shell, wo man sagt, ich habe hier ein Skript, wir rennen mal.

01:43:10.970 --> 01:43:17.550
Genau, so Ansible definiert mir hier jetzt mal, welche IP-Adressen wohin und welche VLAN es gibt.

01:43:19.150 --> 01:43:20.430
Ja, das ist super.

01:43:20.470 --> 01:43:23.290
Das ist schöner, als das alles mit der Hand einmal einzupippen.

01:43:23.310 --> 01:43:25.130
Das kann man dann auch wieder schön testen eigentlich.

01:43:26.510 --> 01:43:31.630
Dann weiß man halt, okay, stabil. Dann kann man auf jeden Fall Use Cases finden, wenn es nicht stabil ist, okay, dann mach es mal anders.

01:43:31.890 --> 01:43:34.150
Also dieses Ganze, ich muss jetzt immer manuell

01:43:34.150 --> 01:43:36.310
dran rumfummeln bis es stimmt und mach am hundertsten

01:43:36.310 --> 01:43:38.470
Mal. Das sollte man nicht machen.

01:43:38.710 --> 01:43:39.790
Ja, also klar, das ist

01:43:39.790 --> 01:43:41.550
das ist natürlich,

01:43:42.050 --> 01:43:43.130
davon muss man irgendwie weg.

01:43:44.910 --> 01:43:46.530
Also ich finde, also prinzipiell,

01:43:46.630 --> 01:43:48.250
dass das halt alles in einem Repository

01:43:48.250 --> 01:43:50.230
drin ist und die Änderungen getrackt

01:43:50.230 --> 01:43:52.230
werden und man auch den

01:43:52.230 --> 01:43:54.150
Stand wieder reproduzieren kann. Also das sind alles super

01:43:54.150 --> 01:43:56.030
Sachen. Also das ist, das will man

01:43:56.030 --> 01:43:56.730
eigentlich schon haben.

01:43:58.150 --> 01:44:00.110
Aber gut,

01:44:00.170 --> 01:44:01.990
bei Testen wäre ich mir jetzt, also ich kann mir auch

01:44:01.990 --> 01:44:04.130
vorstellen, dass es Situationen gibt, wo man das dann halt auch dann testen können

01:44:04.130 --> 01:44:06.070
will. Ich wäre mir jetzt nur nicht so sicher, ob der

01:44:06.070 --> 01:44:08.130
Aufwand sich immer lohnt

01:44:08.130 --> 01:44:10.150
oder ob es nicht andere Wege gibt, das gleiche

01:44:10.150 --> 01:44:12.030
Ziel zu erreichen. Ja, du musst halt wie bei Ronny

01:44:12.030 --> 01:44:14.290
machen, sobald die Coverage bei deinem

01:44:14.290 --> 01:44:16.070
Commit runtergeht oder bei deinem Pull-Request

01:44:16.070 --> 01:44:17.470
wird er direkt mal denied.

01:44:18.110 --> 01:44:20.210
Ja, genau.

01:44:21.790 --> 01:44:22.010
Ja.

01:44:22.290 --> 01:44:22.750
Ja, ja.

01:44:23.750 --> 01:44:25.650
Ich weiß nicht. Ach so, genau.

01:44:28.390 --> 01:44:29.290
Ich wollte irgendwas sagen.

01:44:29.290 --> 01:44:45.490
Ja genau, Dinge, die mir noch so, die ich noch gerne loswerden würde, man kann auch noch so Dinge tun wie, wenn Sachen lange laufen, kann man irgendwie Async mitgeben und dann wird halt immer nur ab und zu mal geguckt und andere Sachen können halt parallel weiterlaufen, das finde ich manchmal ganz praktisch.

01:44:45.570 --> 01:44:47.750
Also auf einer Maschine oder auf den anderen?

01:44:48.150 --> 01:44:49.010
Für Tasks zum Beispiel.

01:44:49.370 --> 01:44:51.770
Aber die Tasks laufen dann auf einer Maschine parallel in verschiedenen Prozessen?

01:44:52.650 --> 01:44:55.050
Ja, ja, du kannst, ja, oder auf einer Maschine.

01:44:55.410 --> 01:44:57.070
Die müssen ja voneinander abhängig sein.

01:44:57.170 --> 01:44:58.030
Ja genau, das wollte ich gerade fragen.

01:44:58.030 --> 01:44:59.750
Ja, klar. Also du hast eine Parallelität über

01:44:59.750 --> 01:45:01.730
unterschiedliche Maschinen, nicht nur auf einer.

01:45:02.450 --> 01:45:03.830
Ja, genau.

01:45:03.990 --> 01:45:05.970
Und du kannst natürlich auch angeben, wie viele Prozesse

01:45:05.970 --> 01:45:07.890
das sein sollen. Wenn du viele Maschinen hast

01:45:07.890 --> 01:45:09.590
und viele Prozesse, dann wird es natürlich irgendwann doof auf dem

01:45:09.590 --> 01:45:11.130
Host, auf dem du das ausführst.

01:45:12.970 --> 01:45:14.070
Kann man auch so Waitpoints machen?

01:45:14.150 --> 01:45:15.750
Keine Ahnung, du musst jetzt aber warten, bis das und das

01:45:15.750 --> 01:45:16.410
und das fertig ist?

01:45:18.490 --> 01:45:19.610
Geht bestimmt irgendwie, keine Ahnung.

01:45:19.690 --> 01:45:20.890
Den Use Case hatte ich noch nicht, aber

01:45:20.890 --> 01:45:23.470
weiß ich nicht.

01:45:25.110 --> 01:45:25.270
Ja.

01:45:26.610 --> 01:45:27.850
Also Info-Schoko hat ja so hässliche

01:45:27.850 --> 01:45:29.930
sequenzielle Probleme, wo manche Sachen vorher fertig sein müssen,

01:45:30.010 --> 01:45:31.790
dann die und die. Ja, aber

01:45:31.790 --> 01:45:33.810
das geht alles. Also du kannst ja auch so Rolling-Updates

01:45:33.810 --> 01:45:35.710
machen, wo du Sachen aus dem Notbalance rausnimmst

01:45:35.710 --> 01:45:37.750
und dann irgendwie reinnimmst oder

01:45:37.750 --> 01:45:40.030
ganz aufhörst, wenn mehr als 10%

01:45:40.030 --> 01:45:40.570
deiner

01:45:40.570 --> 01:45:43.570
Geschichten nicht funktioniert haben und

01:45:43.570 --> 01:45:45.590
das geht ja alles. Also das kannst du ja

01:45:45.590 --> 01:45:47.090
schon. Das sind Sachen, die sind so nervig, manchmal

01:45:47.090 --> 01:45:50.030
gerade Infrastruktur, erste Service aufbauen

01:45:50.030 --> 01:45:51.630
und dann zwischendurch hast du so Fehler, die

01:45:51.630 --> 01:45:53.870
unvorhersehbar sind, weil irgendwelche Netzwerkprobleme

01:45:53.870 --> 01:45:55.630
sind oder irgendein Nameserver gerade nicht reagiert hat

01:45:55.630 --> 01:45:57.610
oder sowas und irgendeine IP noch nicht kennt oder so.

01:45:57.850 --> 01:45:59.750
und dann macht es bumm und du fragst dich warum

01:45:59.750 --> 01:46:01.490
und dann lässt es nochmal laufen und es funktioniert wieder.

01:46:01.590 --> 01:46:03.530
Das ist eine furchtbare Hölle. Genau, da kannst du auch

01:46:03.530 --> 01:46:05.290
so ein Retrys mitgeben. Ja.

01:46:06.070 --> 01:46:07.190
Aber, ja,

01:46:07.570 --> 01:46:09.550
man läuft halt dann halt

01:46:09.550 --> 01:46:11.510
wirklich in diese unschönen Probleme rein

01:46:11.510 --> 01:46:13.290
und es wird auch nicht schöner.

01:46:15.230 --> 01:46:15.770
Ach so,

01:46:15.850 --> 01:46:17.210
jetzt richtig, jetzt weiß ich wieder, was ich sagen wollte.

01:46:18.150 --> 01:46:19.650
Genau, also einer

01:46:19.650 --> 01:46:21.530
der Gründe, warum ich meine ganzen Incivil

01:46:21.530 --> 01:46:23.750
Geschichten, die meisten davon nicht eingecheckt

01:46:23.750 --> 01:46:25.550
habe, also manche davon schon, aber die

01:46:25.550 --> 01:46:27.550
meisten nicht, ist halt, dass ich, also

01:46:27.550 --> 01:46:28.650
man kann bei Ansible auch sagen,

01:46:29.370 --> 01:46:31.170
das habe ich halt noch nicht gemacht, aber

01:46:31.170 --> 01:46:33.590
solche vielleicht, die Inventories

01:46:33.590 --> 01:46:35.450
kann man halt auch auf Server legen oder so, dass es

01:46:35.450 --> 01:46:37.070
halt nicht aus dem Textfile kommt, sondern irgendwo

01:46:37.070 --> 01:46:39.390
und momentan bei mir kommen sie meistens aus dem Textfile

01:46:39.390 --> 01:46:41.370
und das heißt, wenn ich mein Inventory wieder einchecke, dann

01:46:41.370 --> 01:46:43.370
checke ich meine gesamte Infrastruktur mit ein und das will ich

01:46:43.370 --> 01:46:45.330
echt nicht. Das Inventory kann

01:46:45.330 --> 01:46:46.910
halt auch ein Skript sein,

01:46:47.530 --> 01:46:48.590
das kann ein Ordner sein,

01:46:49.250 --> 01:46:51.310
das kann wieder ein Ansible-Modul sein, wo

01:46:51.310 --> 01:46:52.390
sich das halt dann die

01:46:52.390 --> 01:46:55.010
Punkte wieder herholt. Dynamisches Anbauen, ne?

01:46:55.050 --> 01:46:57.290
Ja, du musst halt dazwischen, wie nennen wir das, Jump-Hose

01:46:57.290 --> 01:46:59.350
bauen, die dann irgendwie bestimmte Sachen vorbereiten

01:46:59.350 --> 01:47:00.810
und ausführen und dann da

01:47:00.810 --> 01:47:02.830
so eine Art Statebarheit haben.

01:47:02.850 --> 01:47:04.990
Ich kann einfach gegen den Hetzner DNS zum Beispiel

01:47:04.990 --> 01:47:07.290
fragen, so, wie sieht's hier aus?

01:47:07.410 --> 01:47:08.890
Und dann gibt er mir das als

01:47:08.890 --> 01:47:10.170
Inventory.

01:47:12.590 --> 01:47:12.910
Ja, okay.

01:47:13.090 --> 01:47:15.030
Also, da gibt's verschiedene

01:47:15.030 --> 01:47:17.110
Plugins, AWS, Docker, Kubernetes,

01:47:17.390 --> 01:47:17.930
Proxmox

01:47:17.930 --> 01:47:20.170
und noch viele mehr.

01:47:20.850 --> 01:47:22.150
Was ist Proxmox?

01:47:22.830 --> 01:47:24.710
Das ist auch eine

01:47:24.710 --> 01:47:27.010
Virtualisierungsumgebung, also eher

01:47:27.010 --> 01:47:28.350
wie ein

01:47:28.350 --> 01:47:31.610
Hardware-Host,

01:47:32.590 --> 01:47:33.230
der einem halt

01:47:33.230 --> 01:47:34.470
dann verschiedene

01:47:34.470 --> 01:47:36.910
also, ja, wie früher

01:47:36.910 --> 01:47:38.930
vm wäre. Nur halt

01:47:38.930 --> 01:47:41.130
so ein bisschen als Community-Projekt.

01:47:42.330 --> 01:47:42.790
Okay, vielleicht

01:47:42.790 --> 01:47:43.490
auch mal reinhören.

01:47:45.270 --> 01:47:46.690
Habt ihr noch Punkte auf eurer Liste?

01:47:47.390 --> 01:47:48.850
Ja, genau.

01:47:48.930 --> 01:47:50.330
Einen Punkt habe ich noch, was man auch machen kann.

01:47:50.870 --> 01:47:52.830
Man kriegt ja Textausgabe, wenn man einfach

01:47:52.830 --> 01:47:54.170
Ansible so auf der Kommandozelle ausführt.

01:47:54.850 --> 01:47:56.250
Aber man kann halt

01:47:56.250 --> 01:47:58.590
Ansible auch sagen, hier ist

01:47:58.590 --> 01:48:00.990
dein Callback-Command

01:48:00.990 --> 01:48:02.890
irgendwie. Und dann

01:48:02.890 --> 01:48:04.410
kann man selber zum Beispiel eine Funktion schreiben,

01:48:04.850 --> 01:48:06.870
in die die Ausgaben von Ansible reingehen.

01:48:06.970 --> 01:48:08.770
Beziehungsweise nicht nur die Ausgaben, sondern man kriegt

01:48:08.770 --> 01:48:10.830
halt wirklich... Man kann das loggen, wenn man will.

01:48:11.190 --> 01:48:12.850
Man könnte es loggen. Also wozu ich das

01:48:12.850 --> 01:48:14.330
benutze, ist, ich gebe halt JSON aus.

01:48:14.810 --> 01:48:16.310
Also ich passe das dann halt auf und dann

01:48:16.310 --> 01:48:18.970
packe ich das in mein eigenes JSON-Format und gebe dann halt JSON aus.

01:48:19.510 --> 01:48:20.910
Weil dann kann ich das

01:48:20.910 --> 01:48:22.350
halt, während es läuft,

01:48:23.050 --> 01:48:24.530
irgendwie direkt auf einer Webseite

01:48:24.530 --> 01:48:26.170
anzeigen, was man sieht. Okay, dann weißt du halt,

01:48:26.250 --> 01:48:28.090
wie der State gerade ist und wo ist denn das gerade und

01:48:28.090 --> 01:48:29.470
wie klein ist denn das und ja, okay.

01:48:30.790 --> 01:48:32.510
Und vor allen Dingen habe ich an der

01:48:32.510 --> 01:48:33.450
Stelle auch eine sehr schöne

01:48:33.450 --> 01:48:35.950
Abstraktion, wo ich das auftrennen kann,

01:48:36.350 --> 01:48:38.290
weil ich verwende jetzt meistens zwar

01:48:38.290 --> 01:48:40.310
Ansible, aber es könnte auch Situationen

01:48:40.310 --> 01:48:42.070
geben, wo ich nicht Ansible verwenden will, sondern

01:48:42.070 --> 01:48:44.130
wo ich direkt SSH

01:48:44.130 --> 01:48:46.290
verwenden will oder ein Skript

01:48:46.290 --> 01:48:48.190
einfach nur, oder ein Python-Skript oder

01:48:48.190 --> 01:48:50.130
was ganz anderes. Ich will Ansible

01:48:50.130 --> 01:48:51.850
durch was anderes ersetzen. Es gibt ja auch so, ich meine,

01:48:51.930 --> 01:48:53.050
bei den

01:48:53.050 --> 01:48:56.050
Boxcene, die verwenden ja, die hatten

01:48:56.050 --> 01:48:57.150
Ansible lange Zeit,

01:48:57.330 --> 01:49:00.190
sind dann auf was anderes umgestiegen.

01:49:00.410 --> 01:49:00.790
Weißt du was?

01:49:01.670 --> 01:49:03.790
Weißt du auf was? Ne, ich hab's wieder vergessen.

01:49:03.890 --> 01:49:05.890
Ich wusste es mal. Okay, der Jens hat

01:49:05.890 --> 01:49:07.910
irgendwas eigenes gebaut. Ne, ne, aber

01:49:07.910 --> 01:49:09.710
ja, oder er hat was eigenes, ich weiß es nicht mehr genau.

01:49:10.790 --> 01:49:11.110
Jedenfalls,

01:49:11.390 --> 01:49:13.750
genau, also vielleicht will ich ja auf irgendwas

01:49:13.750 --> 01:49:15.970
anderes umsteigen, aber ich kann ja diesen

01:49:15.970 --> 01:49:17.810
Jason-Layer halt

01:49:17.810 --> 01:49:19.650
sozusagen erhalten.

01:49:19.650 --> 01:49:21.470
Dann muss ich an meinem quasi

01:49:21.470 --> 01:49:22.790
Deployment-Überwachungstool

01:49:22.790 --> 01:49:24.870
muss ich überhaupt nichts mehr ändern,

01:49:24.970 --> 01:49:27.350
das läuft einfach so weiter und ich habe unten drunter

01:49:27.350 --> 01:49:28.770
kann ich das Ansible austauschen und

01:49:28.770 --> 01:49:31.690
das finde ich ganz nett, dass man das weiß, dass das geht,

01:49:31.790 --> 01:49:33.510
dass man nicht irgendwie Ansible Tower oder so

01:49:33.510 --> 01:49:34.910
verwenden muss, weil das ist ja auch sowas.

01:49:36.250 --> 01:49:37.330
Was ist Ansible Tower?

01:49:37.890 --> 01:49:39.270
Ah ja, gut, stimmt, das müssen wir noch mal.

01:49:39.290 --> 01:49:41.370
Das wäre ich auch noch zugekommen.

01:49:42.410 --> 01:49:43.310
Ja, also

01:49:43.310 --> 01:49:45.630
diese ganzen Probleme, die Ansible ja hat,

01:49:46.190 --> 01:49:47.370
zum Beispiel, manchmal hat man ja

01:49:47.370 --> 01:49:48.990
Tasks, die sollen

01:49:48.990 --> 01:49:51.390
so wie ein Cronjob

01:49:51.390 --> 01:49:53.370
laufen, aber dann sollen die nicht auf der

01:49:53.370 --> 01:49:55.450
lokalen Maschine laufen und dann

01:49:55.450 --> 01:49:56.930
hat man erstmal ein Problem.

01:49:57.510 --> 01:49:59.410
Ja, man müsste quasi irgendwas online halten die ganze Zeit,

01:49:59.470 --> 01:50:01.350
was dann Sachen... Genau, und das wäre

01:50:01.350 --> 01:50:03.470
genau Ansible Tower, der kann dann

01:50:03.470 --> 01:50:05.290
halt, da kann man halt

01:50:05.290 --> 01:50:07.510
Playbooks reintun und die laufen dann...

01:50:07.510 --> 01:50:08.110
Und wo steht denn der?

01:50:09.090 --> 01:50:11.290
Also, den kann man sich von Red Hat

01:50:11.290 --> 01:50:13.270
mieten. Ah, deswegen rum jetzt

01:50:13.270 --> 01:50:15.170
mit der Enterprise-Variante. Ja, ja. Genau.

01:50:15.390 --> 01:50:16.950
Und die Enterprise-Preise

01:50:16.950 --> 01:50:19.050
werden auch nicht angezeigt auf der Webseite.

01:50:19.230 --> 01:50:20.270
Das heißt, es ist auch...

01:50:20.270 --> 01:50:21.630
Oder theoretisch könnte man sich auch eigentlich

01:50:21.630 --> 01:50:22.910
so einen eigenen Server per Enzel konfigurieren,

01:50:22.970 --> 01:50:23.790
der dann Cronjobs laufen lässt.

01:50:24.230 --> 01:50:25.690
Genau, also Enzible Tower an sich,

01:50:25.750 --> 01:50:27.590
wenn es gehostet laufen lässt, ist auch teuer.

01:50:28.910 --> 01:50:30.830
Es gibt, kann es auch selber aufsetzen.

01:50:31.650 --> 01:50:34.710
Aber ja, habe ich bisher noch nie geschafft.

01:50:35.210 --> 01:50:36.570
Komischerweise ist es auch ein Docker-Container

01:50:36.570 --> 01:50:37.630
und kein Enzible-Playbook.

01:50:38.010 --> 01:50:41.130
Hätte ich jetzt eher erwartet, so Dogfood.

01:50:41.270 --> 01:50:43.030
Aber warum macht man dann nicht so was wie einfach Cronjobs

01:50:43.030 --> 01:50:44.650
auf einem Dask-Gear-Metal?

01:50:45.030 --> 01:50:45.230
Genau.

01:50:45.470 --> 01:50:48.070
Ja, kannst du machen, aber es ist natürlich auch...

01:50:48.070 --> 01:50:50.010
Der Ansible Tower gibt dir natürlich noch eine schöne

01:50:50.010 --> 01:50:52.330
Web-Oberfläche, die dann dir die Logs einfängt

01:50:52.330 --> 01:50:53.610
und alles sagt.

01:50:53.870 --> 01:50:55.830
Kann man ja auch alles selber bauen, irgendwie so ein Grafana-Promis.

01:50:56.850 --> 01:50:58.050
Ja, alles selber

01:50:58.050 --> 01:50:59.610
bauen ist natürlich auch immer eine gute

01:50:59.610 --> 01:51:01.770
Zeitsenke. Ja, ich hab's

01:51:01.770 --> 01:51:03.910
getan und ja, es war dann sehr...

01:51:03.910 --> 01:51:05.870
Ich konnte da quasi beliebig viel Zeit

01:51:05.870 --> 01:51:07.070
drin versenken, das war gar kein Problem.

01:51:07.570 --> 01:51:09.870
Ja, das war so eine der ersten Django-Apps, die ich

01:51:09.870 --> 01:51:11.310
hatte, oder

01:51:11.310 --> 01:51:13.810
hat dann, also die zweite

01:51:13.810 --> 01:51:15.890
App, die hat nämlich dann, die erste App, die ich hatte,

01:51:16.190 --> 01:51:17.630
deployed per Ansible Playbooks.

01:51:17.690 --> 01:51:18.130
Ach, sehr gut.

01:51:19.170 --> 01:51:20.430
Jetzt kommt mir irgendwie bekannt vor.

01:51:21.210 --> 01:51:23.270
Ja, genau das mache ich halt auch.

01:51:23.990 --> 01:51:25.670
Genau, und wir können mal gucken, ob ich das

01:51:25.670 --> 01:51:26.850
hier, ist das gerade,

01:51:27.010 --> 01:51:28.830
das ist natürlich das Sobe im

01:51:28.830 --> 01:51:30.710
Ja, aber ich habe auch, bei mir heißt das

01:51:30.710 --> 01:51:32.670
Steward. Ich habe mir überlegt, ich muss die ganze Nacht

01:51:32.670 --> 01:51:34.610
eher nach Schiffen nennen. Die Server heißen alle nach

01:51:34.610 --> 01:51:36.730
Planeten und die Dinge ein Steward

01:51:36.730 --> 01:51:37.870
Lieutenant oder so, je nachdem.

01:51:38.570 --> 01:51:39.370
Ja, genau.

01:51:41.110 --> 01:51:42.570
Also es gibt auch die Möglichkeit,

01:51:42.690 --> 01:51:44.610
die Server einfach nach dem zu benennen, was sie tun,

01:51:44.710 --> 01:51:45.990
dann ist es für alle sofort klar.

01:51:46.590 --> 01:51:47.690
Ja, also was heißt denn für alle?

01:51:47.850 --> 01:51:50.090
Das muss ja hinreichend

01:51:50.090 --> 01:51:51.730
geheim und...

01:51:51.730 --> 01:51:56.370
Ja, aber ich habe im Grunde so was wie

01:51:56.370 --> 01:51:58.350
ein Tower. Das macht nicht das, was Tower macht,

01:51:58.410 --> 01:52:00.150
sondern noch ein bisschen mehr und andere Dinge, aber

01:52:00.150 --> 01:52:01.830
es ist halt tatsächlich sehr ähnlich.

01:52:02.410 --> 01:52:04.030
Jochen kann richtig gut User-Interfaces.

01:52:04.210 --> 01:52:05.830
Nee, gar nicht. Das sieht man hier auch.

01:52:06.230 --> 01:52:07.630
Aber das macht halt genau so was.

01:52:07.630 --> 01:52:09.630
Also das kann halt eben

01:52:09.630 --> 01:52:11.470
diese Dinge, das dann halt direkt live

01:52:11.470 --> 01:52:13.410
einzeigen, was da halt passiert. Und was ich halt

01:52:13.410 --> 01:52:15.110
damit auch machen kann, ich kann halt

01:52:15.110 --> 01:52:17.510
sozusagen, ich habe Playbooks, die deployen halt,

01:52:17.990 --> 01:52:19.670
also wenn ich jetzt zum Beispiel Hosting machen will

01:52:19.670 --> 01:52:21.650
für andere Leute, dann kann ich

01:52:21.650 --> 01:52:23.490
denen sagen, okay, nimm halt dieses Playbook und

01:52:23.490 --> 01:52:25.610
setz halt die Domain auf das und

01:52:25.610 --> 01:52:26.610
die Datenbank auf das.

01:52:27.270 --> 01:52:29.150
Man könnte natürlich auch Variablen dann

01:52:29.150 --> 01:52:30.790
mitgeben, die abgefragt werden.

01:52:31.310 --> 01:52:31.730
Ja, genau.

01:52:33.990 --> 01:52:34.870
Das ist schön, ja.

01:52:35.330 --> 01:52:37.410
Ja, und da es ja alles Python ist,

01:52:37.750 --> 01:52:39.310
integriert sich das ja auch alles sehr schön

01:52:39.310 --> 01:52:41.450
dann wieder mit Django und man kann quasi aus dem Django

01:52:41.450 --> 01:52:43.410
raus direkt dann das Ansible aufrufen.

01:52:44.310 --> 01:52:45.410
Ja, das habe ich jetzt nicht

01:52:45.410 --> 01:52:46.490
gemacht, sondern ich habe hier,

01:52:47.250 --> 01:52:49.250
weil ich dachte, für diese Geschichte habe ich nicht Django

01:52:49.250 --> 01:52:51.330
verwendet, sondern irgendwie Fast

01:52:51.330 --> 01:52:52.890
API, weil

01:52:52.890 --> 01:52:55.330
damit halt

01:52:55.330 --> 01:52:57.230
alles schön async ist, weil das Problem ist, dass ich jetzt

01:52:57.230 --> 01:52:59.270
viele Deployments laufen habe, die laufen alle

01:52:59.270 --> 01:53:01.290
async, aber die laufen lange und

01:53:01.290 --> 01:53:03.230
da kommen immer mal wieder so Events und

01:53:03.230 --> 01:53:05.050
dann habe ich halt Clients, die drauf sind und dann, ich habe das,

01:53:05.270 --> 01:53:07.170
das würde ich heute nicht mehr machen, ich habe das

01:53:07.170 --> 01:53:09.190
jetzt, hier habe ich das mit WebSockets gemacht und

01:53:09.190 --> 01:53:11.230
mit Vue. Ich würde dafür

01:53:11.230 --> 01:53:13.030
heutzutage, jetzt inzwischen würde ich dafür

01:53:13.030 --> 01:53:14.890
tatsächlich HTMX nehmen, aber

01:53:14.890 --> 01:53:16.470
ja,

01:53:16.690 --> 01:53:18.890
ja genau,

01:53:18.970 --> 01:53:20.770
ich habe ganz viele langlaufende Sachen,

01:53:21.130 --> 01:53:23.150
die parallel, wo Dinge so, dann nehme ich

01:53:23.150 --> 01:53:25.150
doch irgendwie nativ Async alles.

01:53:26.070 --> 01:53:27.150
Ja, hat

01:53:27.150 --> 01:53:28.750
viel mehr Zeit gekostet, als ich jetzt

01:53:28.750 --> 01:53:29.450
gedacht hätte.

01:53:31.270 --> 01:53:33.010
Kurzer Exkurs, ja, also

01:53:33.010 --> 01:53:34.550
da geht das ja alles schon bei

01:53:34.550 --> 01:53:37.170
bei SQL Alchemy

01:53:37.170 --> 01:53:39.050
jetzt in der aktuellsten Version Async,

01:53:39.190 --> 01:53:41.210
ich habe Async PG verwendet und

01:53:41.210 --> 01:53:43.310
SQL Alchemy und Django ist an der

01:53:43.310 --> 01:53:45.070
Stelle deutlich bequemer, also da funktioniert

01:53:45.070 --> 01:53:47.330
einfach alles so. Bei SQL Alchemy

01:53:47.330 --> 01:53:49.030
ist es mächtiger, es

01:53:49.030 --> 01:53:51.410
macht die ganzen Sachen in Anführungsstrichen

01:53:51.410 --> 01:53:52.810
richtig, aber es ist halt auch echt

01:53:52.810 --> 01:53:55.430
ziemlich, also ich finde es ziemlich scharfkantig

01:53:55.430 --> 01:53:57.210
das zu verwenden und ich bin da in

01:53:57.210 --> 01:53:59.170
viele üble Sachen reingelaufen, also auch

01:53:59.170 --> 01:54:01.150
so richtig fiese, also ich meine, gut,

01:54:01.270 --> 01:54:03.110
es ist halt ganz neu, ja, also ich kann das noch

01:54:03.110 --> 01:54:04.770
nicht so lange, aber ich habe da schon

01:54:04.770 --> 01:54:06.450
sehr üble Tracebacks

01:54:06.450 --> 01:54:08.770
irgendwie aus den Internas von SQL Alchemy gesehen,

01:54:08.850 --> 01:54:10.850
wo ich mir dachte, so häufig

01:54:10.850 --> 01:54:11.590
solche Sachen wie

01:54:11.590 --> 01:54:14.450
an diese Stelle solltest du niemals kommen,

01:54:14.630 --> 01:54:15.990
irgendwie hier versuchen gerade zwei,

01:54:16.310 --> 01:54:18.550
eine Connection wird von zwei unterschiedlichen

01:54:18.550 --> 01:54:20.730
Routinen irgendwie benutzt oder so,

01:54:21.290 --> 01:54:22.730
dass hier ist irgendwas furchtbar schiefgelaufen,

01:54:22.830 --> 01:54:23.010
tschüss.

01:54:24.610 --> 01:54:26.750
Und das ist irgendwie häufig passiert, ja,

01:54:26.910 --> 01:54:28.730
und überhaupt dieser ganze Tanz,

01:54:28.910 --> 01:54:30.850
also man hat ja bei SQL Alchemy hat man eine Engine

01:54:30.850 --> 01:54:33.030
und dann hat man, auf der Engine hat man eine Connection.

01:54:33.370 --> 01:54:35.030
Und diese Connection braucht man halt,

01:54:35.470 --> 01:54:37.550
die ist in einem Connection-Pool. Und dann gibt es halt

01:54:37.550 --> 01:54:39.650
eine Session, die hat den Connection-Pool. Ah, die Session muss man

01:54:39.650 --> 01:54:41.550
auch aufmachen. Und dann auf dieser Session hat man halt

01:54:41.550 --> 01:54:43.410
irgendwie noch Transaktionen. Also diese Transaktionen können dann

01:54:43.410 --> 01:54:45.450
natürlich nochmal genestet sein. Und all diese Dinge, die man da

01:54:45.450 --> 01:54:47.190
aufgemacht hat, die muss man ja auch irgendwie wieder zumachen.

01:54:47.330 --> 01:54:49.590
Und wenn man irgendwo was vergisst, also manche

01:54:49.590 --> 01:54:51.610
von den Funktionen, mit denen man die auf- oder zumacht,

01:54:51.670 --> 01:54:53.330
sind halt synchron. Manche sind asynchron.

01:54:54.210 --> 01:54:55.530
Das ist natürlich ganz schlecht, wenn man jetzt

01:54:55.530 --> 01:54:57.270
irgendwie ein Ding, was man eigentlich asynchron

01:54:57.270 --> 01:54:58.970
erwarten sollte, halt einfach so zumacht.

01:54:59.490 --> 01:55:01.530
Dann passiert auch ganz, dann bleibt plötzlich

01:55:01.530 --> 01:55:03.530
so, es funktioniert alles und irgendwann bleiben plötzlich

01:55:03.530 --> 01:55:05.410
Dinge hängen oder werden langsam und irgendwas

01:55:05.410 --> 01:55:07.370
wird komisch, irgendwas funktioniert nicht mehr so richtig

01:55:07.370 --> 01:55:09.430
und dann kann man halt irgendwie so wirklich

01:55:09.430 --> 01:55:11.470
viel Zeit damit verbringen, rauszukriegen, was läuft denn da

01:55:11.470 --> 01:55:13.450
eigentlich schief und das ist echt, also

01:55:13.450 --> 01:55:15.290
das ist einfach ätzend

01:55:15.290 --> 01:55:17.190
und was mich auch irgendwie

01:55:17.190 --> 01:55:19.590
so ein bisschen geärgert hat schon,

01:55:19.770 --> 01:55:21.550
ist halt, dass das alles inkonsistent ist,

01:55:21.630 --> 01:55:23.170
also einmal ist Sync also inkonsistent

01:55:23.170 --> 01:55:25.050
und dann Engine aufmachen,

01:55:25.730 --> 01:55:27.690
Engine zumachen ist dann halt Engine Dispose,

01:55:28.450 --> 01:55:29.550
Connection ist aber Connection

01:55:29.550 --> 01:55:31.470
Close, Session ist wieder auch

01:55:31.470 --> 01:55:33.470
Session Close, glaube ich, und dann, aber es

01:55:33.470 --> 01:55:34.690
ist halt immer unterschiedlich, ja.

01:55:35.410 --> 01:55:37.370
Man muss halt so einen kompletten Tanz da irgendwie

01:55:37.370 --> 01:55:39.330
machen, wie das war, wenn man das aufmacht und

01:55:39.330 --> 01:55:40.110
wieder zumacht und

01:55:40.110 --> 01:55:43.310
an welcher Stelle macht man jetzt was und was ist

01:55:43.310 --> 01:55:45.330
irgendwie, darf global im Prozess leben und

01:55:45.330 --> 01:55:46.890
was muss man aber irgendwie für jeden

01:55:46.890 --> 01:55:49.390
Request da reinkommen, neu machen, das ist kein Spaß.

01:55:49.710 --> 01:55:51.330
Also ich hab, manchmal dachte

01:55:51.330 --> 01:55:53.110
ich mir so, ich probiere jetzt einfach alle Möglichkeiten, wie man

01:55:53.110 --> 01:55:54.670
Dinge auf und zu machen kann, irgendwie durch

01:55:54.670 --> 01:55:57.290
und versuche irgendwie zu testen, ob das dann noch funktioniert

01:55:57.290 --> 01:55:58.090
oder nicht.

01:55:59.730 --> 01:56:01.050
Kurzes Plädoyer für Django.

01:56:01.910 --> 01:56:03.210
Ja gut, bei Django geht das halt noch gar nicht,

01:56:03.270 --> 01:56:04.330
was ich da jetzt gemacht habe.

01:56:04.990 --> 01:56:06.590
kann man nicht sagen, nimmt einfach Django,

01:56:06.670 --> 01:56:08.470
dann habt ihr das Problem nicht, sondern dann habt ihr auch die Lösung nicht.

01:56:08.710 --> 01:56:10.610
Insofern, aber es war

01:56:10.610 --> 01:56:12.510
schon, also das war, also es hat mich schon

01:56:12.510 --> 01:56:14.390
so ein bisschen, also es war, ich fand es

01:56:14.390 --> 01:56:16.470
schwierig. Ja, es funktioniert

01:56:16.470 --> 01:56:18.150
jetzt halbwegs häufig, aber

01:56:18.150 --> 01:56:22.610
Ich mach jetzt einfach

01:56:22.610 --> 01:56:24.410
tatsächlich alles pro Request.

01:56:24.690 --> 01:56:26.090
Wie dann einfach die Konfidenz abnimmt.

01:56:26.530 --> 01:56:28.350
Ich muss mich länger mal drüber nachdenken.

01:56:28.950 --> 01:56:29.130
Ja.

01:56:30.090 --> 01:56:32.130
Ja, ja, ja, aber ja.

01:56:32.310 --> 01:56:33.890
Also ich würde fast sagen, das war das Schlusswort zu der

01:56:33.890 --> 01:56:35.770
Ansible-Folge, es sei denn, du hast noch was, Max,

01:56:36.090 --> 01:56:36.910
was wir vergessen haben.

01:56:38.790 --> 01:56:40.190
Nur so noch ein paar allgemeine

01:56:40.190 --> 01:56:41.990
Sachen. Also sich den ersten Commit von Ansible

01:56:41.990 --> 01:56:43.290
anzusehen, ist auch sehr schön.

01:56:44.150 --> 01:56:45.690
Weil da ist es noch

01:56:45.690 --> 01:56:47.310
sehr einfach und man sieht, okay,

01:56:48.310 --> 01:56:49.990
Ansible macht halt wirklich

01:56:49.990 --> 01:56:52.070
nur eine SSH auf

01:56:52.070 --> 01:56:53.370
und gibt den Command weiter.

01:56:54.550 --> 01:56:55.990
Und da versteht man noch wirklich viel,

01:56:56.850 --> 01:56:57.850
was dann später

01:56:57.850 --> 01:57:00.230
nicht mehr der Fall ist.

01:57:00.710 --> 01:57:01.630
Also wenn man

01:57:01.630 --> 01:57:03.770
sich so grundsätzlich interessiert, okay,

01:57:03.890 --> 01:57:05.590
Wie funktioniert das?

01:57:06.130 --> 01:57:07.970
Dann ist das ein wirklich schöner Commit, der erste.

01:57:08.730 --> 01:57:09.270
Okay, cool.

01:57:10.030 --> 01:57:11.370
Danke für den Tipp, muss ich unbedingt mal machen.

01:57:11.610 --> 01:57:13.330
Wenn wir auch in den Show-Notes direkt linken, würde ich sagen.

01:57:14.030 --> 01:57:16.070
Ja, genau.

01:57:16.750 --> 01:57:18.250
Ja, gab es noch was zu Ansible?

01:57:18.410 --> 01:57:19.810
Ansonsten können wir auch Pics machen.

01:57:20.810 --> 01:57:21.910
Ich würde mit den Pics gerne anfangen.

01:57:22.070 --> 01:57:22.230
Okay.

01:57:23.370 --> 01:57:25.230
Und zwar habe ich auch eben was vergessen bei den Europython,

01:57:25.270 --> 01:57:26.670
was ich noch mitnehmen wollte.

01:57:26.670 --> 01:57:28.370
Und zwar das Ibis-Project.

01:57:28.470 --> 01:57:29.090
Kennt das von euch jemand?

01:57:29.430 --> 01:57:31.110
Oh ja, das habe ich.

01:57:31.470 --> 01:57:32.450
Das ist sehr hübsch.

01:57:32.550 --> 01:57:34.510
das ist geschrieben von West McKinney

01:57:34.510 --> 01:57:36.110
auch, die neue

01:57:36.110 --> 01:57:38.510
Company. Das ist

01:57:38.510 --> 01:57:40.270
so ein Abstraktionsinterface auf, ich würde sagen,

01:57:40.430 --> 01:57:42.510
also Art von SQL, in dem man halt so Datenmager

01:57:42.510 --> 01:57:44.150
Fragen machen kann, auf

01:57:44.150 --> 01:57:46.590
Pandas funktioniert das, das funktioniert

01:57:46.590 --> 01:57:47.830
auf Apache Impala, auf

01:57:47.830 --> 01:57:50.370
PySpark und anderen großen Sachen und das ist

01:57:50.370 --> 01:57:52.230
so ein bisschen fast wie so ein

01:57:52.230 --> 01:57:54.310
ORM oder so fast, könnte man so ähnlich

01:57:54.310 --> 01:57:56.070
sehen, auf Datenstrukturen.

01:57:56.650 --> 01:57:57.330
Also ich würde sagen,

01:57:58.310 --> 01:58:00.290
es macht halt so etwas möglich

01:58:00.290 --> 01:58:02.310
auf Pandas, dass

01:58:02.310 --> 01:58:03.990
man halt Lazy Evaluation

01:58:03.990 --> 01:58:06.250
hat und es

01:58:06.250 --> 01:58:07.670
macht halt SQL-like Geschichten.

01:58:09.530 --> 01:58:09.930
Weil

01:58:09.930 --> 01:58:12.190
normalerweise sind alle Sachen, die man auf DataFrames macht,

01:58:12.270 --> 01:58:14.310
irgendwie so eager. Also Pandas

01:58:14.310 --> 01:58:16.010
ist sowieso, das muss man auch verlinken,

01:58:16.110 --> 01:58:17.750
es gab da so einen schönen Talk von

01:58:17.750 --> 01:58:20.150
Matthew Rocklin, der Maintainer von Pandas,

01:58:20.250 --> 01:58:21.810
der sagte, Pandas ist gerade Crossroads,

01:58:22.110 --> 01:58:24.170
wir haben jetzt ein paar Optionen, was wir machen

01:58:24.170 --> 01:58:26.210
können. Also Pandas,

01:58:26.450 --> 01:58:28.070
da gab es auch schon vor Jahren einen Vortrag

01:58:28.070 --> 01:58:29.890
von Weißwein Pini, dem Ursprünglichen Autor

01:58:29.890 --> 01:58:31.950
von Pandas, für kleine

01:58:31.950 --> 01:58:33.550
Datenmengen funktioniert es, aber wenn es jetzt mehrere

01:58:33.550 --> 01:58:35.970
10 GB groß wird, dann wird es halt schlecht und es

01:58:35.970 --> 01:58:37.970
gibt halt diverse Probleme. Die Pandas hat halt einfach

01:58:37.970 --> 01:58:39.650
aufgrund von der ganzen Geschichte

01:58:39.650 --> 01:58:41.750
und dass man irgendwie der

01:58:41.750 --> 01:58:43.550
Blockmanager und NumPy unten drunter

01:58:43.550 --> 01:58:45.890
ganz viel und

01:58:45.890 --> 01:58:47.530
der hat dann Pandas 2.0

01:58:47.530 --> 01:58:49.850
quasi angeschartet und das ist

01:58:49.850 --> 01:58:51.150
aber nie zu irgendwas geworden.

01:58:52.170 --> 01:58:53.910
Und ja, aber das eigentlich

01:58:53.910 --> 01:58:55.970
Pandas-Projekt steht jetzt wieder an der gleichen Stelle sozusagen

01:58:55.970 --> 01:58:57.690
und man muss sich halt überlegen, was man macht und das ist ein

01:58:57.690 --> 01:58:59.410
großer Unterschied zu anderen Geschichten ist halt,

01:58:59.870 --> 01:59:01.530
dass es sowas wie, dass man nicht sagt,

01:59:01.730 --> 01:59:03.970
okay, ich compile mir jetzt

01:59:03.970 --> 01:59:05.730
meinen Filter und sonst wie, keine Ahnung, was ich auf dem

01:59:05.730 --> 01:59:07.670
Dataframe machen möchte und dann sage ich irgendwann execute,

01:59:08.610 --> 01:59:09.730
sondern es ist halt eager,

01:59:09.830 --> 01:59:11.850
was halt bedeutet, ich kann es eigentlich nicht auf viele Maschinen

01:59:11.850 --> 01:59:13.910
verteilen und dann irgendwie ein Ergebnis

01:59:13.910 --> 01:59:15.810
zurückholen. Was halt die Skalierungsprobleme bei Riesengroten

01:59:15.810 --> 01:59:17.910
Genau, und mit Spark und so, da kann man

01:59:17.910 --> 01:59:19.830
das alles machen oder mit DARS geht

01:59:19.830 --> 01:59:21.610
das natürlich auch, aber kann das selber halt nicht.

01:59:21.690 --> 01:59:23.710
Und IBIS-Project ist genau das, der

01:59:23.710 --> 01:59:25.670
Reparator von Python, das war mit DARS und die ganzen Sachen,

01:59:25.810 --> 01:59:28.010
da einfach alles drauf zugreifen kannst und es benutzen kannst.

01:59:28.650 --> 01:59:30.170
Superschönes Python-High-Level-Interface.

01:59:30.710 --> 01:59:32.750
sehr, es kommt als natürlich bekannt vor,

01:59:32.830 --> 01:59:33.550
also für eine Funktion.

01:59:34.290 --> 01:59:36.290
Ja, genau, da gibt es

01:59:36.290 --> 01:59:37.730
diese Firma hinter

01:59:37.730 --> 01:59:40.630
ist das Cloudera? Ich glaube,

01:59:40.690 --> 01:59:42.570
West McKinney war da mal eine Zeit lang und da hat er dieses Projekt

01:59:42.570 --> 01:59:44.450
auch gestartet, weil die ganz, also

01:59:44.450 --> 01:59:46.710
ich habe sich das zum ersten Mal verwendet, das war

01:59:46.710 --> 01:59:48.150
auch Ende 2016,

01:59:49.070 --> 01:59:50.590
glaube ich, da habe ich Ibis zum ersten

01:59:50.590 --> 01:59:52.830
Mal verwendet, Anfang 2017,

01:59:54.130 --> 01:59:54.730
weil

01:59:54.730 --> 01:59:56.570
die ganzen Geschichten,

01:59:56.570 --> 01:59:58.450
die oft in so Business Intelligence Abteilungen

01:59:58.450 --> 02:00:00.550
sind, die arbeiten alle mit

02:00:00.550 --> 02:00:02.570
mit riesigen SQL-Statements.

02:00:02.930 --> 02:00:04.150
Und wenn du jetzt eigentlich aber das

02:00:04.150 --> 02:00:06.190
in Python machen möchtest, also ich kam da halt

02:00:06.190 --> 02:00:08.290
so als Python-Entwickler und die

02:00:08.290 --> 02:00:10.430
machten alle irgendwie SQL vor allen Dingen für ihre

02:00:10.430 --> 02:00:12.450
um Sachen aus, sie hatten einen riesigen

02:00:12.450 --> 02:00:13.770
Hadoop-Cluster und

02:00:13.770 --> 02:00:16.150
dann SQL-Abfragen

02:00:16.150 --> 02:00:18.250
und die gehen dann per Hive, irgendwie

02:00:18.250 --> 02:00:20.110
werden die halt verteilt über MapReduce

02:00:20.110 --> 02:00:22.370
oder halt das neue heiße Ding da

02:00:22.370 --> 02:00:24.050
war halt Impala, wo das dann halt in Memory

02:00:24.050 --> 02:00:25.450
und irgendwie schneller geht.

02:00:25.870 --> 02:00:27.830
Impala ist auch unterstützt von

02:00:27.830 --> 02:00:30.250
Evis, ja. Genau, und dann

02:00:30.250 --> 02:00:31.370
ist aber das Problem, okay,

02:00:31.950 --> 02:00:33.370
und dann dachte ich, okay, wie komme ich denn jetzt

02:00:33.370 --> 02:00:35.170
an meine Daten, wie kriege ich das denn jetzt in DataFrames,

02:00:35.270 --> 02:00:36.910
weil ich würde ja gerne mit DataFrames-Dingen drauf tun

02:00:36.910 --> 02:00:39.770
und nicht das in CSVs

02:00:39.770 --> 02:00:41.270
rausschreiben, was die oft dann gemacht haben und dann

02:00:41.270 --> 02:00:43.370
in R irgendwie einlesen, das ist ja alles ganz schrecklich

02:00:43.370 --> 02:00:45.270
und die saßen, das war auch so eine Situation,

02:00:45.750 --> 02:00:47.410
also, wo

02:00:47.410 --> 02:00:49.190
ich mir denke, so, wie könnt ihr

02:00:49.190 --> 02:00:50.490
ja, das ist ja irgendwie,

02:00:51.290 --> 02:00:52.970
wie könnt ihr so leben, ja, das geht doch nicht,

02:00:53.190 --> 02:00:55.150
okay, jetzt schieße ich diesen Hive-Job ab,

02:00:55.230 --> 02:00:57.210
dann gehe ich erstmal Mittag essen, weil das dauert jetzt erstmal anderthalb Stunden

02:00:57.210 --> 02:00:59.310
oder so, keine Ahnung, ja, aber das geht doch

02:00:59.310 --> 02:01:01.330
nicht. Und ja, für die ging

02:01:01.330 --> 02:01:01.690
das irgendwie.

02:01:03.010 --> 02:01:04.370
Was soll man den ganzen Tag machen?

02:01:07.250 --> 02:01:09.110
Also man muss halt nicht so viel arbeiten, wenn dann ein Python ist,

02:01:09.150 --> 02:01:11.250
der superproduktiv ist. Ja, oder dann halt eben

02:01:11.250 --> 02:01:13.070
dann auch diese komischen

02:01:13.070 --> 02:01:15.250
Zwischenschritte und Dinge und dass man halt

02:01:15.250 --> 02:01:17.010
irgendwie so komisch stand und dann auch überhaupt

02:01:17.010 --> 02:01:19.010
diese riesigen SQL-Statements, der auch so denkt,

02:01:19.130 --> 02:01:21.430
okay, wenn das 100 Zeilen

02:01:21.430 --> 02:01:23.370
werden und man nachdenken muss, was macht denn dieses SQL-Statement

02:01:23.370 --> 02:01:25.190
eigentlich? Ui, ich muss da wirklich mal drüber nachdenken.

02:01:25.330 --> 02:01:27.290
Ui, ich habe immer noch nicht verstanden, was

02:01:27.290 --> 02:01:29.170
es wirklich tut. Dann ist das schon schlimm. Aber wenn man dann

02:01:29.170 --> 02:01:31.090
so Dinge hat, mehrere hundert Zeilen und dann

02:01:31.090 --> 02:01:32.970
macht das so Core-Funktionalität, wo man sich denkt so,

02:01:33.030 --> 02:01:34.590
wenn da irgendwo ein Fehler drin ist

02:01:34.590 --> 02:01:36.910
und das ist so kompliziert, dass

02:01:36.910 --> 02:01:38.850
also wenn das Code wäre, das

02:01:38.850 --> 02:01:40.650
muss ausgiebig getestet werden, ja.

02:01:41.070 --> 02:01:42.990
Und ja, bei SQL-Statements

02:01:42.990 --> 02:01:44.970
testen ist halt auch so ein Ding, das passiert nicht so

02:01:44.970 --> 02:01:46.910
richtig. Naja, jedenfalls

02:01:46.910 --> 02:01:48.990
genau, da bin ich dann auf Ibis auch gekommen,

02:01:49.150 --> 02:01:50.390
weil man damit halt schön

02:01:50.390 --> 02:01:52.690
quasi irgendwie Impala,

02:01:53.030 --> 02:01:54.810
ich weiß nicht, ob es damals schon Impala war, irgendwas

02:01:54.810 --> 02:01:57.070
direkt abfragen konnte und dann kommt man direkt in DataFriends

02:01:57.070 --> 02:01:57.750
rein, ja.

02:01:58.790 --> 02:02:01.790
Ja, das war

02:02:01.790 --> 02:02:02.670
mein Pick der Woche.

02:02:03.550 --> 02:02:04.150
Ja, sehr schön.

02:02:06.230 --> 02:02:07.130
Hast du auch einen, Max?

02:02:07.830 --> 02:02:09.470
Ich habe tatsächlich zwei.

02:02:10.950 --> 02:02:11.730
Einmal den

02:02:11.730 --> 02:02:13.770
Django Context Decorator von Rix.

02:02:15.150 --> 02:02:15.830
Das ist

02:02:15.830 --> 02:02:17.770
ein sehr schöner, kleiner Helfer.

02:02:19.610 --> 02:02:20.070
Man sagt

02:02:20.070 --> 02:02:21.710
einfach, man macht halt den Decorator

02:02:21.710 --> 02:02:23.650
drum, sagt dann

02:02:23.650 --> 02:02:25.770
okay, gib mir das

02:02:25.770 --> 02:02:27.230
raus und dann habe ich das halt im Kontext.

02:02:27.790 --> 02:02:29.890
Sonst muss ich mir natürlich immer die Context-Variable holen,

02:02:29.930 --> 02:02:31.490
das da reinschreiben und dann rausschicken.

02:02:32.190 --> 02:02:33.550
So Mixed-in-Bound für sowas oder so.

02:02:33.670 --> 02:02:36.170
Genau, erspart ungefähr so drei Zeilen Code.

02:02:37.270 --> 02:02:38.650
Ja, aber das summiert sich natürlich irgendwie.

02:02:38.650 --> 02:02:40.270
Aber Software-Ergonomie ist halt dann schön.

02:02:41.010 --> 02:02:44.130
Ja, und das andere Thema ist Xonj.

02:02:44.790 --> 02:02:46.550
Das ist eine Python-Shell.

02:02:47.430 --> 02:02:49.390
Also da schreibt man halt nicht Bash,

02:02:49.550 --> 02:02:50.750
da schreibt man dann Python.

02:02:51.550 --> 02:02:53.990
Und das kann man gut und schlecht finden,

02:02:53.990 --> 02:02:56.230
aber ich finde es eigentlich sehr schön,

02:02:56.790 --> 02:02:58.410
denn da kann ich dann auch wie

02:02:58.410 --> 02:03:00.310
gewohnt in Python halt drüber loopen.

02:03:00.510 --> 02:03:01.870
Ist das dein Default-Tel? Ja.

02:03:02.570 --> 02:03:04.590
Meine Default. Genau, ich kann da

02:03:04.590 --> 02:03:06.010
letztlich alle

02:03:06.010 --> 02:03:08.490
Commands, die ich in der Shell

02:03:08.490 --> 02:03:10.590
hab, letztlich ausführen und die laufen

02:03:10.590 --> 02:03:12.570
dann halt in den Python-Interpreter rein

02:03:12.570 --> 02:03:14.470
und dann kann ich schlimme Dinge damit tun.

02:03:15.590 --> 02:03:16.530
Okay, das muss ich unbedingt mal

02:03:16.530 --> 02:03:18.450
angucken. Das klingt sehr gut. Ja, ich muss das irgendwie

02:03:18.450 --> 02:03:20.350
kombinieren. Es gibt übrigens auch ein

02:03:20.350 --> 02:03:21.390
Terminal, jedenfalls auf dem Mac.

02:03:21.390 --> 02:03:23.490
Das nennt sich

02:03:23.490 --> 02:03:25.230
Kitty. Das ist auch in Python

02:03:25.230 --> 02:03:27.030
geschrieben. Genau, das funktioniert

02:03:27.030 --> 02:03:28.390
super gut mit Xonj zusammen.

02:03:28.630 --> 02:03:30.850
Okay, alles klar. Ja, gibt's auch

02:03:30.850 --> 02:03:32.530
dann den Starship

02:03:32.530 --> 02:03:34.870
Prompt für drin.

02:03:35.810 --> 02:03:36.930
Nett, das klingt doch gut.

02:03:36.930 --> 02:03:38.070
Hier, der hat mir auch schon mal eben drüber gesagt.

02:03:38.430 --> 02:03:38.790
Cool.

02:03:41.570 --> 02:03:43.190
Ja, macht's nur nicht als Root-Prompt,

02:03:43.250 --> 02:03:44.210
wenn die dann kaputt geht.

02:03:44.930 --> 02:03:46.210
Da kommt man nicht mehr weiter.

02:03:48.090 --> 02:03:48.910
Ja gut, ne?

02:03:49.150 --> 02:03:50.150
Ändert man die Shadow-File.

02:03:50.770 --> 02:03:51.130
Ja.

02:03:53.530 --> 02:03:54.310
Genau, was hatte ich?

02:03:54.390 --> 02:03:56.530
Ja, genau. Mein Pick wäre PyTestMock.

02:03:56.770 --> 02:03:58.550
Das habe ich letztens in den WeakNotes von Simon

02:03:58.550 --> 02:04:00.630
Willison zufällig... Nee, er hat das

02:04:00.630 --> 02:04:02.450
irgendwie auf Twitter gepostet. Simon Willison hat

02:04:02.450 --> 02:04:04.050
einen ganz tollen WeakNotes, haben wir nochmal veröffentlicht.

02:04:04.150 --> 02:04:05.230
Ja, den muss man auch mal verlinken.

02:04:05.230 --> 02:04:08.010
Ja, also, wenn ihr denkt,

02:04:08.190 --> 02:04:10.630
oh, da sind

02:04:10.630 --> 02:04:12.290
ja immer interessante Links in den WeakNotes von Johannes

02:04:12.290 --> 02:04:14.350
und von mir, dann lest

02:04:14.350 --> 02:04:16.210
doch lieber die, die sind noch viel interessanter.

02:04:16.830 --> 02:04:18.790
Da lese ich mal die WeakNotes.

02:04:19.890 --> 02:04:20.010
Ja,

02:04:20.770 --> 02:04:22.150
und der hatte auf Twitter, nee, das war auf Twitter,

02:04:22.270 --> 02:04:24.010
der irgendwie geschrieben so, ah ja, er hat irgendwie

02:04:24.010 --> 02:04:26.050
einen Weg gefunden, irgendwas mit S3 zu machen oder so

02:04:26.050 --> 02:04:27.610
und dann hab ich da reingeguckt in den Kunden und dachte so, hä?

02:04:28.170 --> 02:04:30.050
Also ich hab ja in Tests

02:04:30.050 --> 02:04:32.190
oft das Problem, also ich benutze

02:04:32.190 --> 02:04:33.610
Paltests zum Testen meistens

02:04:33.610 --> 02:04:36.150
und so manchmal, also ich versuche ja immer

02:04:36.150 --> 02:04:38.110
ohne Mocks auszukommen oder wenn dann

02:04:38.110 --> 02:04:40.270
selber da, aber manchmal geht's

02:04:40.270 --> 02:04:42.110
halt nicht, sondern da muss man halt irgendwie viel

02:04:42.110 --> 02:04:43.750
mocken und dann hat man das Problem, also entweder

02:04:43.750 --> 02:04:45.730
stapelt sich dann so eine Kaskade von

02:04:45.730 --> 02:04:47.730
Patch-Dekoratoren über so einen Test

02:04:47.730 --> 02:04:49.770
oder man hat halt irgendwie so eine tief

02:04:49.770 --> 02:04:51.570
geschachtelte Geschichte mit so Wist

02:04:51.570 --> 02:04:54.310
Context-Managern, also geht jetzt

02:04:54.310 --> 02:04:55.930
mit einer neuen Python-Version, kann man da auch dann

02:04:55.930 --> 02:04:57.150
klammern und so, aber

02:04:57.150 --> 02:05:00.170
das sieht dann manchmal schon sehr wild aus

02:05:00.170 --> 02:05:02.370
und ich denke mir so, ach, so ein bisschen hässlich ist das ja schon

02:05:02.370 --> 02:05:04.330
und eigentlich, ja, also

02:05:04.330 --> 02:05:05.790
gibt es da nicht irgendwie einen eleganterer Weg

02:05:05.790 --> 02:05:08.190
und PyTest-Mock ist ein eleganterer Weg,

02:05:08.290 --> 02:05:10.170
weil da sagt man einfach, schreibt man

02:05:10.170 --> 02:05:11.770
halt in die

02:05:11.770 --> 02:05:14.290
Signatur Mocker rein und dann kriegt man halt

02:05:14.290 --> 02:05:15.910
irgendwie quasi

02:05:15.910 --> 02:05:18.470
Ding übergeben, dem kann man

02:05:18.470 --> 02:05:19.910
dann sagen, Punkt Patch

02:05:19.910 --> 02:05:21.870
und dann braucht man aber keinen Kontextmanager

02:05:21.870 --> 02:05:24.410
und man braucht auch nicht einen Dekorator,

02:05:25.230 --> 02:05:26.330
sondern das passiert dann im Kontext

02:05:26.330 --> 02:05:28.030
von dem Test. Und wenn der Test

02:05:28.030 --> 02:05:29.510
vorbei ist, dann wird es halt wieder

02:05:29.510 --> 02:05:31.590
geunpatcht, sozusagen automatisch.

02:05:31.690 --> 02:05:34.110
Weil das ist ja irgendwie über diese PyTest-Magie da drin.

02:05:34.690 --> 02:05:36.030
Das heißt, man kann das halt alles schön

02:05:36.030 --> 02:05:37.590
linear verwenden und

02:05:37.590 --> 02:05:39.490
ist halt diese Hässlichkeiten los.

02:05:40.590 --> 02:05:41.950
Also ich mach dann auch noch einen zweiten

02:05:41.950 --> 02:05:43.970
Pick, weil wenn Tests nicht laufen, dann macht man

02:05:43.970 --> 02:05:46.110
einfach Pip install Fuckit, Fuckit-Dekorator

02:05:46.110 --> 02:05:47.690
drüber, dann macht der 2XL-Pass

02:05:47.690 --> 02:05:49.050
und dann läuft alles wunderschön.

02:05:49.750 --> 02:05:50.190
Sehr schön.

02:05:50.330 --> 02:05:51.930
Ja, also das als Abschluss.

02:05:52.710 --> 02:05:53.690
Ja, also vielen Dank, dass ihr da wart.

02:05:53.770 --> 02:05:55.370
Danke, Max, das war eine schöne Folge.

02:05:55.890 --> 02:05:57.290
Bleibt uns gewogen, schaltet uns wieder ein,

02:05:57.490 --> 02:05:59.010
hört uns und schreibt uns E-Mails an

02:05:59.010 --> 02:06:00.250
hallo.peisenpodcast.de

02:06:00.250 --> 02:06:02.790
Ja, danke Jochen, danke Max.

02:06:03.190 --> 02:06:03.630
Auf Wiederhören.

02:06:03.730 --> 02:06:03.870
Bis zum nächsten Mal.

02:06:04.190 --> 02:06:04.390
Tschüss.
