Transcript: Kubernetes

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Dominik

Ja, hallo liebe Hörerinnen und Hörer. Willkommen beim Python-Podcast Episode 52.

Dominik

Heute reden wir über Kubernetes. Hallo Johannes.

Dominik

Hallo zusammen.

Dominik

Hallo Dominik.

Dominik

Hallo Jonas.

Dominik

Ja, schön, dass du wieder da bist, Johannes.

Dominik

Ja, schön, dass ich wieder da sein darf.

Dominik

Sogar vor Ort.

Dominik

Und wir haben uns heute Kubernetes ausgedacht, obwohl das gar nicht so viel mit Python zu tun hat,

Dominik

weil wir das, glaube ich, alle so ein bisschen öfter nutzen müssen, wollen.

Dominik

Müssen wir.

Dominik

Müssen wir.

Johannes

Manche von uns müssen.

Johannes

Ja, ich musste auch schon.

Johannes

Genau.

Dominik

Und deswegen wollen wir vielleicht so ein bisschen erklären, was das ist, was das so macht und was das so tut.

Dominik

Vielleicht fangen wir wie immer ein bisschen an mit den News.

Dominik

Da haben wir ja noch so ein paar offen, glaube ich.

Jochen

Ja, aber ich habe mich jetzt auch nur so ein bisschen...

Jochen

Also es gibt eine große News und die kleineren, da verlasse ich mich dann um das andere, das Wissen.

Jochen

Okay, aber ich mache jetzt einfach mal den News-Chapter.

Dominik

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

Jochen

Ja, es ist jetzt immer einmal im Jahr irgendwie neue Releases.

Jochen

Neue Release.

Johannes

Seit drei Tagen, oder?

Jochen

Ich weiß gar nicht genau, wann das released wurde, aber ja, noch nicht so lange.

Johannes

Je nachdem, wann dieser Podcast gehört wird.

Johannes

Ja.

Johannes

Genau.

Jochen

Also für uns ist es noch frisch, für euch dann vielleicht so, was, das war doch...

Jochen

Das war doch zehn Jahre her.

Jochen

Ja.

Jochen

Genau.

Jochen

Und ja, also...

Jochen

Was gibt es denn da Neues?

Jochen

Verwendet ihr es schon?

Jochen

Nein.

Jochen

Nein?

Jochen

Nicht runtergeladen.

Johannes

Habt nur die News gesehen.

Dominik

Also ich habe gesehen, dass du Probleme hattest, das auf deinem Mac zu installieren.

Dominik

Ja, aber...

Dominik

Also genau, dann bist du ja schon...

Dominik

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

Dominik

Ja, das war auch so ein bisschen mein Eindruck.

Johannes

Das liest sich alles sehr gut, aber es ist nicht so, dass ich sagen würde, ja, das will ich jetzt sofort benutzen.

Johannes

Weil es ist ja nicht so richtig so was dabei, was man so richtig benutzen kann, oder?

Jochen

Ja, kein neues Walrus oder kein Matchcase.

Johannes

Habt ihr den Match schon mal verwendet?

Johannes

Ja.

Johannes

Ja, okay.

Johannes

Häufig, ja.

Johannes

Ich finde es cool, aber ich habe noch nichts damit gemacht.

Dominik

So Pattern-Matching, habe ich gehört, geht damit ganz gut.

Dominik

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

Dominik

Und kannst das dann halt direkt weiter nutzen.

Dominik

Das ist nett.

Johannes

Ja, wie gesagt, ich finde das total super, aber ich habe einfach irgendwie noch nicht genug damit gemacht.

Dominik

Wo wir über Pidentic reden, ich glaube, Pidentic 2 hatten wir auch noch nicht in den News, weil wir ewig lang nichts gemacht hatten.

Jochen

Doch, doch, hatten wir jetzt mal, genau.

Jochen

Okay.

Jochen

Aber auch nur, also nur, dass ich damit Probleme hatte, das abzudaten.

Jochen

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

Jochen

Ja, und genau, so habe ich das dann auch gemerkt, dass das nicht mehr funktioniert.

Jochen

Und das habe ich jetzt auch umgezogen und es war auch deutlich mehr Arbeit, als ich gedacht hätte.

Jochen

Und also, ich habe jetzt zwei Projekte umgezogen auf die neue Pidentic-Version und das war beide Male ätzend.

Jochen

Also, ja, man braucht da schon so ein bisschen Muße, wenn man das irgendwie machen will.

Jochen

Oder bei mir, ich habe vielleicht das auch einfach falsch gemacht am Anfang und deswegen habe ich da besonders viel Arbeit, aber.

Jochen

Ganz wahrscheinlich, höchstwahrscheinlich.

Jochen

Ja, aber gut, jetzt inzwischen habe ich ein bisschen Übung, dann kann ich ganz andere Sachen auch noch umstellen, das ist dann kein Problem mehr hoffentlich.

Dominik

Wenn du 3.12 benutzt hättest, hättest du vielleicht schon viel bessere Fehlermeldungen bekommen, direkt gesehen, woran es liegt.

Jochen

Könnte sein, aber ich finde zum Beispiel auch die Pidentic-Fehlermeldung nicht so richtig hilfreich.

Jochen

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

Jochen

Aber die ist halt, genau, das ist hier, ich zeige es dir jetzt mal auf dem Monitor, kann sonst keiner sehen außer uns.

Jochen

Aber da steht halt irgendwie so, also da steht noch mehr, da ist eine ganze Liste von irgendwie Field Required, Type Missing, Input Value.

Dominik

Jochen, noch nicht mal, ich kann das lesen vom Sofa aus, was du da auf deinem Rechner machst.

Dominik

Okay, ist zu klein, ich mache noch ein bisschen größer.

Dominik

Ja, ich wollte gerade sagen.

Jochen

So, und dann, wenn man diesen Traceback kriegt, der eigentlich relativ lang ist, sodass man Schwierigkeiten hat, den relevanten Teil zu erfassen.

Jochen

Ich habe jetzt das hier extra so rausgekattet, dass man es sehen kann.

Jochen

Aber dann ist das, was ich halt lese, vor allen Dingen das hier.

Jochen

Da steht dann halt irgendwie Type Missing, Input Value, Database URL und dann komme ich halt, ah, Database URL ist missing.

Jochen

Das stimmt aber nicht.

Jochen

Nein, die ist zwar da.

Jochen

Sondern die ist da.

Jochen

Aber die Value ist falsch.

Jochen

DB Engine ist halt missing, was da drüber steht, wo man denkt, das gehört hier noch zu einem anderen Teil.

Jochen

Was hier gar nicht drinsteht.

Jochen

Das heißt, dieser Kram, der danach kommt, ist eigentlich völlig irrelevant.

Jochen

Aber das ist halt, also ich meine, klar, also wenn man jetzt weiß, okay, ach, das Ding hier ist missing.

Jochen

Okay, dann ist klar.

Jochen

Aber man überliest es leicht.

Dominik

Also so wie das bei dir aussieht, könnte auch in der Formatierung, wahrscheinlich hast du es absichtlich so formatiert, dass es in deinem Eintrag so aussieht.

Dominik

Nein, nein, das sieht wirklich so aus.

Dominik

Das sieht tatsächlich etwas schräg aus.

Dominik

Also, die Fehlermeldung ist ein bisschen verhackstöckelt.

Dominik

Hast du das mal mit 3.12 probiert?

Dominik

Nein.

Dominik

War das nicht die 3.12?

Dominik

Okay, du hattest vorher schon das Problem beim Umziehen.

Jochen

Ja, ja, ja, also die...

Jochen

Pydentic ist ja schon eine neue Version seit einigen Monaten.

Dominik

Vielleicht, aber wäre es anders, wenn 3.12 dabei geholfen hätte noch.

Johannes

Ist das anders in 3.12, weil das ist doch eine Fehlermeldung von Pydentic.

Johannes

Ja, ja, genau, genau.

Jochen

Nee, wahrscheinlich hätte das...

Dominik

Aber durch diese, ich weiß nicht, ob die verbesserten Fehlermeldungen in 3.12 auch was damit zu tun haben, wie dieser ganze...

Jochen

Wie dieser Traceback-String gerendert wird.

Dominik

Genau, weil da sind ja auch verschiedene andere Sachen passiert, die dieses Rendern beeinflussen, weil die F-Strings ja beispielsweise sind auch neu.

Jochen

Ja, ja, ja, kommen wir gleich noch zu.

Jochen

Also auf jeden Fall dieses Pydentic-Ding, das hat mich jetzt schon zum zweiten Mal...

Jochen

Wenn ich das nächste Mal sage, beim dritten Mal, hat es auch wieder Schwierigkeiten gemacht.

Jochen

Da fliegt es raus, dann liegt es an dir.

Jochen

Ja, das kann auch sein.

Jochen

Genau, das ist die Konstante an diesem Experiment.

Jochen

Ja, genau.

Jochen

Ja, also genau.

Jochen

Also jetzt waren wir schon bei den 3.12 Änderungen.

Jochen

Genau, bessere Fehlermeldungen.

Jochen

Also das Einzige, was ich mir davon gemerkt habe, also es gibt ein paar Dinge, die da geändert wurden, aber die einzige, die ich mir gemerkt habe,

Jochen

weil sie mich an die...

Jochen

an die Pi-Pi-Episode erinnert hat, war, dass jetzt, wenn man irgendwie eine Variable verwendet und die nicht definiert ist sozusagen in einer Methode,

Jochen

dann sagt einem jetzt der Traceback so, sag mal, kann es sein, dass du Self-Dot irgendwie vorher vergessen hast?

Jochen

Ja.

Jochen

Und Pi-Pi konnte das halt schon einige Zeit, und ich glaube, das ist halt, das haben sie sich dann von Pi-Pi abgeguckt, diese Geschichte.

Jochen

Und es gibt halt noch so ein paar andere Dinge, ich weiß gar nicht genau, wisst ihr das?

Jochen

An der richtigen Stelle.

Jochen

Ja, genau, solche Sachen. Also da ist noch ein bisschen was passiert.

Johannes

Ich weiß es nicht, weil ich sehe nie Fehlermeldungen.

Dominik

Du machst einfach, kennt ihr das Modul, als wollt ihr eigentlich mal so einen Pick, ne?

Dominik

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

Jochen

Ja, dann eine andere Geschichte, etwas, also F-Strings haben irgendwie ordentliche Überarbeitung erfahren.

Dominik

Ja, genau, davon musste man ziemlich viel umbauen.

Jochen

Ja, also das mutet so ein wenig nach Detail an, dass man jetzt sagt, okay, du kannst jetzt auch Quotes innerhalb von F-Strings haben.

Dominik

Genau, zwar dieselben Quotes wie der String eigentlich.

Johannes

Genau, das hat mir tatsächlich aufgefallen schon, dass man da nicht die gleichen Quotes verwendet.

Jochen

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

Johannes

Wie tief würdet ihr denn empfehlen, so F-Strings ineinander zu quoten?

Johannes

Aber was zum Beispiel echt nervt.

Dominik

Wichtig war, dass du zum Beispiel in Multiline-F-Strings keine Kommentare hinter so einen F-String machen mehr konntest.

Jochen

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

Jochen

Das geht nämlich jetzt auch, das ging vorher auch nicht.

Dominik

Genau, Backslash war vorher auch gebannt.

Dominik

Genau, geht jetzt auch.

Jochen

Also das wirkt so ein bisschen wie Details, aber nein, das ist, dafür haben sie den Tokensatz.

Jochen

Organizer komplett neu geschrieben.

Jochen

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

Dominik

Zeit, dass zum Beispiel Logging oder sowas mal umsteigt und auch mal F-Strings verwendet.

Johannes

Ja, da habe ich schon unterschiedliche Meinungen darüber gehört.

Dominik

Ja, also genau. Also ich auch, aber ich verstehe es noch nicht so genau.

Dominik

Also meine Meinung macht das Logging nicht, weil das nicht evaluiert wird.

Johannes

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

Johannes

Das heißt, du kriegst keine Aggregation.

Johannes

Wenn du aber normale Template Strings.

Johannes

benutzt, dann schickst du ja den Template String und die Argumente, die da reinkommen.

Johannes

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

Dominik

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

Dominik

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

Dominik

Das ist eh einigermaßen furchtbar mit Camel Case und sowas, das ist alles eh bäh, bäh.

Johannes

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

Dominik

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

Dominik

Ja, jedes Mal.

Dominik

Ja, keine Ahnung.

Dominik

Ja, gut, okay, also Geschmacksfragen.

Dominik

Ich weiß es nicht.

Jochen

Ja, genau.

Jochen

Ach so, was auch.

Jochen

Wofür?

Jochen

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

Jochen

Also das könnte man eventuell, naja, auch nur bei einfachen Template Ersetzungen wahrscheinlich.

Jochen

Ob das Sinn macht.

Jochen

Weiß ich auch nicht.

Dominik

Du hast irgendwas von Partials gerade gesagt?

Jochen

Django Template Partials, damit geht das halt auch ganz gut eigentlich.

Dominik

Das sind, genau, das sind aber jetzt so ein paar Module, die waren in einer der letzten Folgen von, weiß ich mehr was, DjangoCast oder was?

Jochen

Django Chat meinst du, den Podcast, ja, das war da auch drin, ja.

Dominik

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

Dominik

Ja, ich hab das.

Jochen

Ich hab das jetzt auch schon ein paar Mal verwendet und das ist echt tatsächlich ziemlich gut.

Jochen

Kommt wahrscheinlich auch in Django 5.1 mit rein, ja.

Jochen

Ah, ja, schön.

Jochen

Genau, dann, es gab so ein paar Performance-Geschichten, genau, bei F-Strings, die sind ein bisschen schneller geworden.

Jochen

Es gibt jetzt irgendwie Comprehension Inlining.

Jochen

Und was ist das?

Jochen

Ehrlich gesagt, was es genau macht, weiß ich nicht, aber List Set Comprehensions werden jetzt ungefähr zweimal schneller.

Jochen

Das nimmt man doch mit, oder?

Jochen

Ja, das ist gut.

Jochen

Gut, ja.

Johannes

Und dann natürlich die GIL-Aufteilung.

Johannes

Das habe ich mit Interesse gelesen.

Jochen

Ja, das ist ein sehr interessanter...

Dominik

Erklär doch mal, Jonas, was ist denn die GIL-Aufteilung?

Johannes

Ja, es gibt ja das globale Interpreter-Log.

Johannes

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

Johannes

Und das ist natürlich so ein bisschen bescheuert, weil dann bringt es ja nichts mehr.

Jochen

Doch, doch, das bringt ja durchaus schon was.

Johannes

Ja, es kommt darauf an, wie deine Threads sind.

Johannes

Aber wenn du lauter Python-Threads laufen hast, also du kannst nicht mehr als eine CPU verwenden.

Jochen

Nee, genau, nicht mehr als eine CPU, aber du kannst schon, wenn du mehrere Threads machst, machst du halt viel mehr I.O. möglicherweise.

Johannes

Genau, für I.O. bringt es was, aber nicht für Compute, also nicht für CPU.

Johannes

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

Johannes

Ja, weil du keine komplizierten Logs einbauen musst, weil es einfach schnell ist, weil du gar nichts hast.

Dominik

Weil du halt nicht gucken musst, ist das irgendwie ein Log, muss das frei werden?

Dominik

Genau.

Dominik

Genau.

Dominik

Wie ist denn das?

Johannes

Genau, ist einfach ein Interpreter und fertig.

Johannes

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

Johannes

Die haben versucht, das loszuwerden.

Johannes

Bitte was? Bitte wer?

Johannes

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

Johannes

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

Johannes

Aber trotzdem nicht mehr CPU kriegst.

Johannes

Genau, Unladen Swallow, weil sie schneller fliegen kann.

Johannes

Und jetzt wandert es auch so langsam, beziehungsweise es ist ja schon lange unterwegs, dass man das schneller macht und den GIL so ein bisschen wegbekommt.

Johannes

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

Johannes

Das heißt, die Python...

Johannes

Die Python-Runtime, der CPython, die CPython-VM kann jetzt Sub-Interpreter starten, die dann ihr eigenes Global Interpreter-Log haben.

Johannes

Aber ich weiß nicht, wie man da dran kommt, Jochen, weißt du, wie man das macht?

Jochen

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

Jochen

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

Jochen

Und dieser String wird dann...

Jochen

Als Python-Code da drin ausgewertet.

Jochen

Ah, okay.

Jochen

Da kann man sich dann natürlich auch irgendwie hübschere Abstraktionen noch drum rum bauen, keine Ahnung.

Jochen

Ja, also ich meine, ich finde das auch so ein bisschen so ein spezielles...

Jochen

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

Jochen

Also kann man ja auch machen.

Jochen

Einen zweiten Interpreter und dann muss man halt schon...

Jochen

Hast du halt dann diese Prozessgrenze.

Jochen

Ja, hast du halt, dass die Kommunikation langsam wird.

Jochen

Musst du halt irgendwie...

Jochen

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

Jochen

Wie macht man das denn am besten?

Jochen

Ja, ja, also es kommt halt kein Hängherd von den Daten ab.

Jochen

Hast du halt Queues oder irgendwelches?

Jochen

Ja, aber du gibst, also oft übergibst du halt einfach nur eine URL zu einem Bucket oder sowas.

Jochen

Ja, das kommt natürlich auf den Anwendungsfall an.

Jochen

Genau.

Johannes

Also ich meine, da gibt es auch Anwendungsfälle, wo du...

Jochen

Wenn man viele Daten übergeben muss...

Jochen

Viel Kommunikation und viel Compute.

Jochen

Dann ist schlecht.

Dominik

Dann muss ich die immer serialisieren oder muss ich den irgendwie in den Speicher irgendwo reinschreiben oder irgendwie...

Jochen

Genau, du kannst natürlich per Pickel einfach serialisieren oder irgendwie übergeben oder über den Pipe schicken oder sowas.

Jochen

Also auch ein Standardweg, wie man das macht, ist dann halt einfach Shared Memory verwenden, sodass halt alle Prozesse, die man erzeugt, halt auf den gleichen Speicher zugreifen.

Jochen

Das geht auch.

Jochen

Wie geht denn das mit Preisen?

Jochen

Aber dann hast du ja wieder das Locking-Problem.

Jochen

Als Elevator?

Jochen

Naja, solange du nur liest, ist es kein Problem.

Johannes

Ja, solange du nur liest, ist das nie ein Problem.

Johannes

Aber nur lesen hilft ja.

Dominik

Du kannst ja immer so vielleicht sonst neue Keys schreiben.

Dominik

Vielleicht geht das gleichzeitig oder geht das nicht auf einen Dick gleichzeitig neue Keys schreiben?

Dominik

Nee, das ist nicht das Problem.

Dominik

Das geht halt alles nicht.

Dominik

Das geht alles nicht.

Jochen

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

Jochen

So quasi so ein Map-Reduce-Schritt, wo du das halt viele Wörter rausmapst.

Jochen

Das könntest du ja tatsächlich jetzt schon machen, oder?

Jochen

Das kannst du auch jetzt schon machen, gar kein Problem.

Jochen

Multi-Processing.

Jochen

Genau, und das für viele Anwendungsfälle, denke ich, ist es wahrscheinlich genau das Richtige, was man machen sollte.

Jochen

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

Dominik

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

Dominik

Ja, du kriegst es halt wieder zurück.

Jochen

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

Jochen

Und wenn das zu groß wird, dann schreibst du das halt in den Prozess.

Dominik

Und von wo derealisiert du das denn?

Dominik

Also von dem Shared Memory oder was sagst du mit der Pipe, was meinst du damit?

Johannes

Nein, es geht ja nur darum, dass du in diesem Modell, was der Jochen vorstellt, nur zwei Synchronisationspunkte hast.

Johannes

Nämlich ganz am Anfang, wenn du es verteilst und ganz am Ende, wenn du es zusammenbringst.

Johannes

Und das bedeutet, dass es nicht so wichtig ist, wie schnell die Kommunikation ist, weil du die nicht die ganze Zeit verwendest, sondern du verwendest die nur einmal en bloc.

Johannes

Genau.

Johannes

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

Johannes

Wenn du in Erlang sagst, jede Funktion ist ein Thread und du schickst jedes Mal bei jedem...

Johannes

Im Funktionsaufruf schickst du eine Message rüber.

Johannes

Dann geht das nicht mehr, weil du dann eben über diese Prozessgrenze irgendwas haben musst, was innerhalb des Betriebssystems über die Prozessgrenze drüber geht und das ist üblicherweise langsam.

Johannes

Egal, welche Technik du verwendest, ob es Pipes sind oder Shared Memory oder was weiß ich.

Jochen

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

Jochen

Aber die Frage ist halt, passiert das in der Praxis häufig?

Jochen

Weil ich würde sagen, du hast üblicherweise einen von beiden Fällen, du hast halt entweder den Fall, du musst halt viel...

Jochen

...I.O. machen, aber du brauchst eigentlich keine CPU.

Jochen

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

Jochen

Der rechnet ja nichts aus, also der schiebt ja nur irgendwie Bits und Bytes hin und her.

Jochen

Da brauchst du die mehreren CPUs eigentlich nicht.

Jochen

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

Jochen

Oder du hast halt den Fall, wo du Number-Crunching machen willst.

Jochen

Aber da brauchst du dann eigentlich diese Kommunikation nicht mehr.

Dominik

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

Jochen

Du willst halt ein Array von einem Petabyte irgendwie Zahlen sortieren oder sowas.

Jochen

Klassische Anwendung.

Jochen

Ja, ich weiß, das ist immer das, womit man dann demonstriert irgendwie, dass man irgendwas parallelisieren kann oder so.

Jochen

Ja, aber dafür brauchst du normalerweise keine Kommunikation zwischen den Dingern.

Jochen

Und ja, also dass man den Fall hat.

Jochen

Dass man gleichzeitig Kommunikation viel hat und gleichzeitig irgendwie ganz viel Prozessor braucht.

Jochen

Also, der ist aus meiner Perspektive schon ein ziemlicher Nischen-Anwendungsfall.

Jochen

Ich meine, das wäre natürlich schön, wenn das einfach so gehen würde, aber...

Jochen

Vielleicht, weil es nicht geht, Jochen.

Jochen

Ja, vielleicht auch, weil es nicht geht.

Johannes

Wenn es einfacher gehen würde, würden wir das alle machen.

Johannes

Ja, vielleicht.

Jochen

Ich weiß es nicht.

Johannes

Ja gut, auf jeden Fall gibt es Bestrebungen in die Richtung und das ist doch schön.

Johannes

Genau.

Dominik

Also, wie heißt das jetzt nochmal bei 312, du hast gesagt, Teil-Gil?

Dominik

Also, Sub-Interpreter.

Dominik

Ja, genau, der Sub-Interpreter macht dann mal seinen eigenen Gil.

Dominik

Sub-Interpreter.

Dominik

Dann, was haben wir denn noch?

Jochen

Ja, es gibt jetzt so ein paar Typing-Verbesserungen.

Jochen

Also, ich finde das ehrlich gesagt, da sagen immer alle Leute so, ah, das ist so toll, weil jetzt geht das noch einfacher als vorher.

Jochen

Und ich denke mir so, wie bitte, das war vorher einfach?

Jochen

Also, mit dem Type war Type alias.

Jochen

Jetzt geht es noch einfacher.

Jochen

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

Dominik

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

Dominik

Also, normalerweise habe ich das immer nur beim Committen drüber laufen lassen, aber jetzt, es ist so ein bisschen nervig.

Jochen

Ja, sozusagen, verwendest du dann MyPiD oder bist du dann MyPiD immer gefragt?

Dominik

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

Dominik

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

Johannes

Ja, da müssen wir, glaube ich, mal eine Episode drüber machen, oder?

Jochen

Ja, Typing-Episode müssen wir mal.

Dominik

Ja, nicht nur eine, glaube ich, da sind so ein paar.

Dominik

Das wird eine sehr lange Episode.

Jochen

Ja, also, gerade so bei generischen Types und so.

Jochen

Und ich finde, das ist alles wild.

Jochen

Also, und da muss man halt echt, und, ja.

Dominik

Oder Junko-Stubs oder sowas und, äh.

Jochen

Ja, jetzt ist es auf jeden Fall besser geworden, aber.

Jochen

Was ist denn genau besser geworden?

Jochen

Ach so, es ist jetzt besser geworden.

Jochen

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

Jochen

Any.

Jochen

Ja, kann man natürlich auch sagen, String Any, Addict, String Any, ja, aber machen ja auch viele.

Jochen

Aber das natürlich, dann geht halt auch irgendwie so ein bisschen der Nutzen verloren.

Jochen

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

Jochen

Und dann in dem Type-Dict definiert man dann sozusagen für jede, für jedes Keyword-Argument quasi den, den genauen Type.

Dominik

Oh, da könnte man auch eine Dataclass reingeben oder sowas.

Dominik

Aber warum?

Jochen

Ja, sieht ziemlich genauso aus wie eine Dataclass, ja.

Johannes

Warum definiert man die denn nicht direkt?

Johannes

Was ist dann noch der Sinn von Quark?

Johannes

Wie willst du den hinschreiben?

Johannes

Kannst du nicht.

Jochen

Du kannst dann halt.

Johannes

Jedes einzelne KW hinschreiben.

Johannes

Ja, gut, das kannst du natürlich auch machen, ja.

Jochen

Du kannst da einfach die ganzen Keyword-Argumente hin, wenn es halt ganz viele sind.

Dominik

Dann sind da aber zu viele Argumente.

Johannes

Irgendwo hast du sie halt getypt dann, ne?

Jochen

Ja, und du kannst es halt auch nicht wiederverwenden.

Jochen

Hast du sie hingeschrieben.

Jochen

Aber ja, es ist auch.

Jochen

Und bei dir kannst du es nicht machen.

Jochen

Ja, es ist schon ein Nischenfall.

Jochen

Ja, ja.

Jochen

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

Jochen

Man kann einfach Type nehmen als Keyword, also als Statement und dann irgendwie den Kram dahinter schreiben und muss auch nicht mehr den ganzen Kram importieren.

Jochen

Das funktioniert einfach so.

Jochen

Ja, also wenn man, wenn man drauf steht, dann ist das wahrscheinlich eine deutliche Verbesserung.

Jochen

Aber ich weiß nicht.

Dominik

Ja, Type ist schon so ein bisschen Bloatware, oder?

Dominik

So Typing manchmal.

Dominik

Ja, ich glaube, da müssen wir mal eine Episode machen.

Jochen

Wir müssen nochmal länger, weil können wir jetzt, das können wir jetzt nicht leisten.

Jochen

Das können wir beliebig vertiefen.

Dominik

Ja, es ist halt wirklich nützlich.

Dominik

Ich würde sagen, kollegatives Arbeiten, gerade mit Leuten, die das.

Dominik

Noch nicht so wissen, was da passiert, ist das echt hilfreich, um denen so zu zeigen, welche ich machen sollte.

Dominik

Ich habe auch Meinungen dazu, ja.

Dominik

Also nein.

Jochen

Ja, was haben wir noch?

Jochen

Ah, coole, kleine Verbesserungen, die aber.

Jochen

Achso, genau, auch noch zum Typing, weil das gehört auch noch zum Typing dazu.

Jochen

Es gibt jetzt einen Override-Dekorator.

Jochen

Override?

Jochen

Ja, wo man halt über eine Methode schreiben kann, at Override.

Jochen

Und dann damit dem.

Jochen

Einen Type-Checker sagen kann, also das hier überschreibt übrigens eine Methode in der Superklasse.

Jochen

Weil das Problem, das man bisher hat, ist halt, wenn man jetzt Methoden überschreibt in der Unterklasse,

Jochen

dann kann die ja komplett korrekt getypt sein und so.

Jochen

Und der statische Type-Checker, und jetzt nennt jemand irgendwie die Methode in der Oberklasse,

Jochen

aber refactored die und benennt die um.

Jochen

Dann merkt der statische Type-Checker davon überhaupt gar nichts und alles stimmt.

Jochen

Das Verhalten ändert sich aber.

Jochen

Weil ja jetzt plötzlich irgendwie das nicht mehr überschrieben wird.

Jochen

Und ja, dann ist natürlich schlecht.

Dominik

Und das heißt, du sagst explizit, hey, ich überschreibe hier eine Methode.

Jochen

Genau, und sobald jemand in der Oberklasse das Ding umbenennt, dann sagt dir der Type-Checker,

Jochen

sagt dir der statische Type-Checker, das ist überhaupt keine, das überschreibt überhaupt keine Methode mehr.

Jochen

Hier ist irgendwas kaputt, was vielleicht schon hilfreich ist.

Dominik

Ja, das tatsächlich findet man ein, zwei Wachs.

Jochen

Typing-Zeugs dann durch.

Jochen

Genau.

Jochen

Zu Dekoratoren.

Jochen

Ah, habt ihr das schon mal verwendet?

Jochen

Cached Property?

Jochen

Ja.

Jochen

Ich hab das mal in Jungle gesucht.

Jochen

Ich hab das auch schon häufiger verwendet, genau.

Jochen

Ja, das ist weg.

Jochen

Warum?

Jochen

Es war kaputt.

Jochen

Das Problem ist irgendwie, das hat so, es hat irgendwie massiv viele Logs gemacht und

Jochen

hat irgendwie nicht auf Instance-Ebene geloggt und das ist schrecklich.

Jochen

Und die Leute haben es gemessen und festgestellt, oh, es ist viel langsamer damit als vorher.

Jochen

Ich hab's nie überprüft.

Jochen

Ich hab immer so, oh, Cached Property.

Jochen

Hashtag Cached Property, voll gut.

Jochen

Nee, war scheiße.

Jochen

Und, ähm, ja.

Dominik

Das heißt, du machst einfach Cache und Methodenaufruf, oder?

Jochen

Ja, also ich hab's eben für solche Dinge benutzt, wo halt dann irgendeine Berechnung stattfindet

Jochen

und dann, äh, genau.

Jochen

Also wenn die Berechnung sehr lang ist, gut, vielleicht ist es dann auch noch irgendwie

Jochen

tatsächlich effizienter, aber so generell war es oft eher langsamer mit dem Cached-Dekorator

Jochen

drüber als ohne.

Dominik

Naja, man kann jetzt dann die Kalkulation cachen und dann eine andere Sache machen, wo

Dominik

der Property drinter ist.

Jochen

Ja, also auf jeden Fall, irgendwie hat sich wohl, hat sich jemand, hat sich das genauer

Jochen

angeguckt, dabei hat sich herausgestellt, dass, so wie das gedacht ist, das geht das

Jochen

alles gar nicht.

Jochen

Und daher haben sie es jetzt entfernt, weil, äh, ja.

Jochen

Das heißt, du musst das jetzt selber bauen.

Dominik

Also du kannst, machst ja zwei Methoden, die eine Methode ist eine Property und die eine

Dominik

Methode ist eine Methoden.

Dominik

Es ist nicht so schlimm.

Jochen

Also man kann das relativ leicht, sowas, sich sowas bauen.

Jochen

Wenn du keine Logs brauchst.

Jochen

Ja.

Jochen

Ja, aber wenn man Logs braucht, dann ist man eh schon in so einem Drachen, äh, so einem

Jochen

Drachenterritorium.

Jochen

Das ist halt, ja, muss man eh gucken.

Jochen

Ja.

Jochen

Äh, genau.

Jochen

Dann, ähm.

Jochen

Drachenterritorium.

Jochen

Ja.

Jochen

Ja.

Jochen

Wo die wilden Tiere wohnen.

Jochen

Genau.

Jochen

Bronze Drachen.

Jochen

Parslip, etwas, was mich immer, also das ist, das ist, das ist so ein Nervpunkt.

Jochen

Also, dass es in Python halt mehrere Module gibt, die sich irgendwie mit sowas wie Files

Jochen

und so Zorgs beschäftigen, ist halt einfach nervtötend.

Jochen

Hat historische Gründe, aber ist halt einfach, es gibt halt Parslip, so als das aktuellste.

Jochen

Und OSPAR.

Jochen

Es gibt OS, ja.

Jochen

Es gibt irgendwie dann noch SH-Util und es gibt noch irgendwie so ein paar andere.

Jochen

Und je nachdem, was man machen möchte, muss man halt eins von denen verwenden.

Jochen

Und es gibt keins, wo man alle verwenden kann.

Jochen

Auch Parslip hat natürlich auch schon diverse, also Parslip, da wird immer rumkritisiert,

Jochen

ein bisschen zu Recht, dass es ultra langsam ist.

Jochen

Vielleicht hat sich das jetzt auch gebessert, das weiß ich nicht genau.

Jochen

Auf jeden Fall, äh, wofür man früher immer noch mit OS häufig verwenden musste, war

Jochen

halt OS-Walk.

Jochen

Also, wenn man halt so ein Dateisystem im Baum einfach mal so rekursiv durchgehen möchte.

Jochen

Und in Parslip gab's nichts dafür.

Jochen

Also, und jetzt gibt's halt, äh, ein Walk in, in Parslip.

Jochen

Das musst du machen.

Dominik

Etatieren musstest du machen und dann immer rekursiv deine Funktion selber aufrufen.

Jochen

Ja, aber das willst du vielleicht nicht selber schreiben.

Johannes

Und gleichzeitig Iter-Files und das ist, äh, Arbeit und keine schöne Arbeit und leicht

Johannes

falsch zu machen Arbeit.

Jochen

Also, ich meine, das hast du nur für, machst du irgendwas anderes und dann willst du jetzt

Jochen

mal nur kurz irgendwie über alle Files in deinem Dateisystem rumgehen und dann fängst

Jochen

du da an, mit Rekursionen zu machen, äh, Dinge zu tun und so, wo viel schiefgehen kann.

Jochen

Ah, ich weiß nicht.

Jochen

Also, äh, da will man doch eigentlich eine Funktion einfach nehmen und die dann.

Jochen

Einfach ein Walk.

Johannes

Generell alles, was mit Dateien zu tun hat.

Johannes

Ist so, dass man eigentlich da lieber Funktionen dazu hat, die sich schon mal jemand ausgedacht

Johannes

hat, der was davon versteht.

Johannes

Ja.

Johannes

Weil die sind deceptively simple, wie man so sagt.

Johannes

Die sind ganz einfach zu schreiben und gehen dann auf überraschend beeindruckende Art

Johannes

und Weise kaputt.

Johannes

An vielen verschiedenen Stellen.

Dominik

Wenn du welche Permissions in die Runden steigen oder so was.

Dominik

Ja, Permissions oder Cycles.

Dominik

Bitte was?

Johannes

Ja, du kannst ja Cycles in deinem Verzeichnis haben.

Johannes

Du kannst ja links zum, zu einem gut darüberliegenden Verzeichnis und dann hast du eine Kurve drin

Johannes

und dann hast du schon.

Johannes

Schon einmal.

Dominik

Der Ding zu da, der Ding zu da, da, da, da, da, da.

Dominik

Und dann kommt der Beachball.

Jochen

Wenn du dich in dieses Rabbit Hole eingreifst, dann wird das, was du eigentlich machen wolltest,

Jochen

nicht mehr fertig, sondern dann bist du irgendwie verschwunden.

Jochen

Erstmal für die Zeit.

Dominik

Oder wenn man mit dem Cycle klingt, das könnte man dann mit lustige Sachen machen.

Dominik

Ja.

Dominik

Ja, schon.

Johannes

Oder andere Devices und dann von den anderen Devices wieder das andere Device eingebunden

Johannes

und.

Johannes

Ah, alles ist dann frei.

Johannes

Cycle über Devices.

Johannes

Und so schnell kommt man.

Jochen

Habe ich letztens irgendwo sehr schön, hat das jemand, äh, beschrieben, äh, ich weiß

Jochen

nicht, ob es auf Mastodon war oder statt, keine Ahnung.

Jochen

So, ja, also das, das coole, die coole Innovation von Unix ist ja, dass irgendwie in Unix einfach

Jochen

alles ein Pfeil ist.

Jochen

Es gibt ein kleines Problem mit dieser, äh, mit dieser Philosophie, nämlich, äh, irgendwie,

Jochen

dass eigentlich so gut wie gar nichts ein Pfeil tatsächlich ist.

Jochen

Ansonsten war es eine super Idee, aber es ist, ja, ist was dran.

Dominik

Den Witz musst du jetzt nochmal genau erklären.

Dominik

Das war jetzt so ein Insider.

Dominik

Ja, also.

Johannes

Also die Philosophie von Unix ist ja, alles ist ein Pfeil.

Johannes

Du kannst, äh, da gibt's, äh, Files, wo du die CPU-Auslastung auslesen kannst.

Dominik

Aber das heißt, du machst eine, äh, eine Händler auf, der zeigt an irgendeiner Stelle

Dominik

und dann.

Dominik

Ja, du musst halt den richtigen Dateinamen wissen.

Dominik

Alles ist ein Pfeil.

Dominik

Tatsächlich, fast alles ist ein Pfeil.

Dominik

Aber was, was bedeutet das denn?

Dominik

Vielleicht willst du erkennen.

Dominik

Also, du hast so eine Zeiger draufhin und kannst von da aus losrennen.

Dominik

Nee, du hast.

Dominik

Nee, das ist ein Pfadnamen halt.

Johannes

Das ist ein Pfadnamen und dann öffnest du dir die Datei und anstatt, dass du da Dateien,

Johannes

dass du Daten von der Festplatte liest, kriegst du halt Daten von irgendwoher anders geliefert.

Johannes

Zum Beispiel CPU-Auslastung oder zum Beispiel Netzwerksockets oder zum Beispiel sonst irgendwas.

Johannes

Das ist zumindest die Idee, ja.

Johannes

Dass wenn du halt den richtigen Pfad auf eine bestimmte, auf eine bestimmte Datei hast,

Johannes

ja, das ist gar keine Datei, sondern ein Socket an irgendeinem.

Johannes

Also Netzwerkverbindungen

Jochen

sind auch nur Files, irgendwie Geräte

Jochen

sind auch nur Files.

Jochen

So eins der

Jochen

ersten Unix-Dinge, die man so macht, wenn

Jochen

Leute das nicht kennen, ist, man nimmt halt irgendwie die

Jochen

Shell, zum Beispiel Bash, sagt halt Cat

Jochen

bin Bash oder nach

Jochen

größter Zeichen

Jochen

Dev Audio. Ja, und dann

Jochen

kann man irgendwie in dem Programm aus dem

Jochen

Lautsprechertröpfeln zuhören.

Jochen

Und solche Dinge.

Jochen

Weil das ist auch nur eine Datei.

Jochen

Ja, also unter Windows

Jochen

oder MS-DOS war das halt, das ist halt

Jochen

irgendwie, weil das war zu aufwendig.

Jochen

Also das ist ja auch von Unix

Jochen

inspiriert, aber das haben sie halt nicht so richtig implementiert,

Jochen

sondern dann haben sie da so komische Dinge gemacht

Jochen

wie Laufwerksbuchstaben oder

Jochen

Device-Buchstaben. Ja, und so

Johannes

reservierte Namen. Du darfst keine Datei haben,

Johannes

die COM1 heißt. Auch unter Windows 11 noch nicht.

Jochen

Ja. Und das ist

Jochen

natürlich eigentlich total schrecklich.

Jochen

Aber

Jochen

ja gut, wenn man das nicht anders

Jochen

kennt, dann fällt einem das vielleicht gar nicht so

Jochen

auf, aber genau.

Jochen

Ja, nur, genau. Also diese

Jochen

Philosophie, dass halt alles ein Pfeil ist und man alles gleich

Jochen

behandeln kann, ist eigentlich schon sehr cool.

Jochen

Und ist eigentlich auch immer so ein Beispiel für

Jochen

eine sehr gelungene API, weil man halt fast,

Jochen

also ganz, ganz viel kann man damit erschlagen.

Jochen

Und die API ist

Jochen

gleichzeitig einerseits sehr schmal oben.

Jochen

Also sozusagen, es gibt nur wenige Dinge,

Jochen

die man drauf machen kann. Lesen, Schreiben,

Jochen

bestimmte Stelle spulen.

Jochen

Man kann

Jochen

aber wahnsinnig viel damit machen. Die ist halt

Jochen

total tief. Also die ist halt schmal und tief.

Jochen

Das ist aber gut für eine API.

Jochen

Schlechte APIs,

Jochen

ah, worüber reden wir gleich noch?

Jochen

Breit und flach.

Jochen

Was könnte ein Beispiel für eine sehr breite

Jochen

und sehr flache API sein?

Jochen

Weiß ich nicht. Zum Beispiel Java-APIs

Jochen

irgendwie für Pfeil lesen,

Jochen

die sind halt scheiße. Die sind halt irgendwie, du musst halt

Jochen

tausend Klassen kennen und die

Jochen

konfigurieren und die ineinander stöpseln

Jochen

und willst eigentlich nur ein Pfeil lesen.

Jochen

Und das ist halt irgendwie, ach.

Jochen

Und ja.

Jochen

Genau. Sozusagen, also

Jochen

das ist halt, also Leute

Jochen

sagen mal,

Jochen

das ist wirklich schön, das ist eine schöne

Jochen

Abstraktion, das hat super funktioniert.

Jochen

Genau. Man kann halt sagen, aber ein kleines

Jochen

Problem, es gibt ein kleines, kleines Detail, das nicht so richtig

Jochen

gut funktioniert, nämlich die meisten Sachen sind kein Pfeil und verhalten

Jochen

sich auch nicht so und

Jochen

daher

Jochen

Wie kriegt man das Problem? Du musst das da irgendwie

Jochen

reinstopfen oder so eine Spule

Jochen

bauen oder? Ne, das ist halt so ein bisschen

Jochen

ja, das ist

Jochen

das stimmt auch irgendwo. Also es ist halt einfach

Jochen

ja, es gibt halt, alles ist halt furchtbar.

Jochen

Was habe ich letztens, ich habe

Jochen

letztens ein Essay gelesen auf einer sehr schönen

Jochen

Domain. Die Domain heißt irgendwie

Jochen

stilldrinking.com

Jochen

und da steht irgendwie

Jochen

Programming Sucks oder so und da ist

Jochen

sehr schön aufgelistet, was alles

Jochen

so schief geht und warum eigentlich nie

Jochen

irgendwas funktioniert und warum wir alle keine schönen Dinge haben können.

Jochen

Kann man ja mal lesen.

Jochen

Ich glaube, ich verlege das mal in den Schrauben. Ja, bitte, bitte.

Jochen

Den kenne ich auch noch nicht.

Jochen

Ja, der ist schon relativ alt

Jochen

inzwischen, der ist von 2014 oder so.

Jochen

Aber ja, ist immer noch genauso wahr

Jochen

wie damals. Er wird sich wahrscheinlich auch nie

Jochen

ändern.

Jochen

Ja.

Jochen

Und das mit dem Audio muss ich auch mal ausprobieren.

Jochen

Ja. Das kann ich auch nicht.

Jochen

Redirect von

Jochen

Bash auf Audio. Genau, was

Jochen

auch, C-Python

Jochen

benutzt jetzt auch Precommit.

Jochen

Auch nett. Precommit sind die Hooks,

Jochen

die den Code automatisch

Jochen

blinden oder

Jochen

Ja, also du kannst halt mit Precommit

Jochen

irgendwie diverse Regeln aufstellen,

Jochen

die halt erfüllt sein sollen, damit

Jochen

ob jetzt. Also zum Beispiel Black-kompatibel

Dominik

oder ich weiß nicht, bei C-Python ist das jetzt eher

Dominik

NC, also irgendwie. Jammel-Syntax

Jochen

gecheckt wird oder das andere. Ja, okay. Weiß ich nicht,

Jochen

falls zu groß sind oder. Weniger

Jochen

Bugs. Fühlst du weniger Bugs?

Jochen

Vielleicht.

Jochen

Naja, du kannst damit auch zumindest irgendwie

Jochen

relativ hart sicherstellen, dass

Jochen

bestimmte Regeln eingehalten werden.

Dominik

Machst du Precommit bei deinen Projekten? Ja.

Dominik

Auch mit MyPy?

Dominik

Ja.

Dominik

Aber, ja.

Dominik

Mach ich auch. Also ich mach Rough und

Dominik

MyPy und IceHorse und Black

Dominik

und PyUpgrade und sowas.

Jochen

Ja, mach ich auch. Also

Jochen

bis auf Rough, das benutze ich

Jochen

nicht, weil ehrlich gesagt, wenn man

Jochen

MyPy verwendet, ist es so langsam, dass alles

Jochen

an den Regalen ist.

Dominik

Aber catcht MyPy nicht nach dem

Dominik

ersten Durchlauf? Ja,

Jochen

mag sein. Ich weiß nicht, ich hab immer die Erfahrung,

Jochen

dass wenn ich mir denke, so

Jochen

ich hab doch jetzt auf diesen Knopf gedrückt. Doofes

Jochen

PyCharm. Warum reagiert dieser Knopf

Jochen

ist ausgegraut und irgendwas tut es und dann gucke ich

Jochen

hoch, sondern sehe ich, ah, CPU-Auslastung ist hoch.

Jochen

Hm, denk ich mir so. PyCharm.

Jochen

Und dann denk ich mir, nein,

Jochen

MyPy.

Jochen

Und es dauert einfach lange und, ja.

Dominik

Also MyPy muss man ja irgendwie, wenn man das

Dominik

konfiguriert, die ganzen Dependencies irgendwie mit angeben.

Dominik

Das ist fürchterlich alles.

Jochen

Ja, weil das halt in einem eigenen Virtual

Jochen

End alles stattfindet. Ja, aber warum

Dominik

kann das das nicht selber raffen aus

Dominik

der PyProject-Hummel oder sowas, wo man seine Dependencies

Dominik

hat oder wo auch immer die liegen oder, also ich

Jochen

finde es auch. Tja, wo auch immer die liegen.

Dominik

Ja, da kann man doch sagen, deine Dependencies

Dominik

liegen hier. Guck mal nach, das Formal kennst du

Dominik

bestimmt. Nimm sie und bau da was mit.

Jochen

Ja, vielleicht. Ich weiß es nicht. Aber es ist auf jeden Fall

Jochen

nicht so einfach. Aber C-Python

Jochen

benutzt es jetzt. Also es erhöht

Jochen

die Wahrscheinlichkeit, dass es nicht weggeht. Das ist gut.

Jochen

Ja, also

Jochen

dass sich jemand findet, der das dann halt weiter maintaint.

Jochen

Was auch noch schön ist, ist, oh, das ist

Jochen

total super. Ich weiß nicht, das habe ich in jedem

Jochen

Projekt gehabt und jetzt ist es,

Jochen

ach so, jetzt ist es

Jochen

halt quasi hoffentlich

Jochen

gelöst. Ich habe in jedem Projekt

Jochen

irgendwie eine kleine Funktion, die ich dann auch immer von

Jochen

Projekt zu Projekt kopiere, weil es ist einfach zu

Jochen

wenig, um daraus irgendwie ein eigenes

Jochen

Paket zu machen oder so. Aber ich brauche

Jochen

es halt irgendwie, tatsächlich, in jedem Projekt brauche ich halt

Jochen

irgendwie so ein Ding, dass mir

Jochen

wenn so eine lange Liste

Jochen

oder irgendwie ein langes

Jochen

Interable kommt, was mir das halt so in

Jochen

Badges zerlegt, wo ich dann mit den Badges

Jochen

irgendwas mache. Brauche ich immer.

Dominik

Also das heißt da, wo du am Ende wieder zusammenfügst

Dominik

oder so. Nee, einfach

Johannes

in Stücke hacken. In vierer Blöcke, in achter

Johannes

Blöcke, in zwölfer Blöcke. Genau, weil du willst

Jochen

halt zum Beispiel irgendwie alle, willst

Jochen

immer hundert Dinger gleichzeitig in die Datenbank

Jochen

oder immer in hunderter Blöcke in die Datenbank schreiben

Jochen

oder ausgeben oder sonst irgendwie was

Jochen

machen. Aber du willst es halt nicht jedes Mal machen, sondern halt

Jochen

so. Genau, also ich brauche das irgendwie

Jochen

immer und

Jochen

habe dann irgendwie, bei mir heißt diese Funktion

Jochen

meistens so chunked oder sowas.

Jochen

Und jetzt gibt es eine in

Jochen

Intertools, die heißt Batched und

Jochen

die macht genau das. Aber ist die

Jochen

neu? Die ist neu. Ja?

Johannes

Okay, ich dachte, da gäbe es sowas ähnliches.

Johannes

Hab ich auch schon mal gehört. Gab es da? Also man kann auch

Jochen

mit Zip oder

Jochen

mit Eisleis kann man das bauen. Ja, gut, so Zip-Hacks

Jochen

kannst du dir bauen, ja. Ja, aber

Jochen

meine Batched ist neu.

Jochen

Ich habe irgendwie letztes Jahr beim

Jochen

vielleicht habe ich auch immer eine geschrieben. Advent of Code

Jochen

Varianten irgendwie sowas.

Jochen

Jeder hat

Jochen

sowas schon mal geschrieben. Ja, also

Jochen

da ich das irgendwie immer brauche, ist es gut,

Jochen

wenn das jetzt in der Standardbibliothek ist. Hast du das reingebracht,

Jochen

Jochen? Nein.

Jochen

Aber

Jochen

irgendwie, ja, ist ganz in meinem

Jochen

Sinne. Ja, das glaube ich.

Jochen

Dann genau, ich habe es wie gesagt schon

Jochen

installiert und ich hatte auch so ein bisschen Probleme.

Jochen

Ja, also

Jochen

ich weiß nicht so ganz genau, woran diese Probleme liegen.

Jochen

Ist ja auch noch alles sehr frisch. Ich habe sie bloß,

Jochen

ich stehe noch unter dem Eindruck, sie erfahren

Jochen

zu haben. Also halt sowas

Jochen

wie zum Beispiel, also bei

Jochen

Projekten, die ich dann auf 3.12 umgestellt habe,

Jochen

das ging halt

Jochen

irgendwie nicht. Also irgendwie das Installieren

Jochen

von dem ganzen Virtual End funktioniert nicht, weil

Jochen

es sagt halt so, ich kann dieses Wheel nicht

Jochen

bauen von irgendeiner

Jochen

Abhängigkeit. Und

Jochen

dann habe ich versucht reingeguckt, ja, warum kann es das nicht bauen?

Jochen

Ja, weil irgendwie,

Jochen

Dist-Utils vielleicht fehlen

Jochen

manchmal, weil

Jochen

Dist-Utils sind Displicated, aber

Jochen

wenn man Setup-Tools installiert, dann kommen die alten

Jochen

Dist-Utils quasi mit und dann geht es wieder.

Jochen

Und

Jochen

genau,

Jochen

ach so, und früher wurde das automatisch

Jochen

in VNF, wenn man per

Jochen

VNF irgendwie ein Virtual End

Jochen

erzeugt hat, dann wurden die Setup-Tools direkt mit installiert.

Jochen

Und das passiert nicht mehr. Also

Jochen

das ist auch nicht mehr drin. Also auf jeden Fall,

Jochen

da an der Stelle ist es halt bei mir irgendwie zuverlässig

Jochen

gebrochen.

Jochen

Und wo es auch gebrochen ist, das fand ich etwas

Jochen

überraschend, und ich habe keine Ahnung, ob das irgendwie so

Jochen

beabsichtigt war, ist, dass bei vielen

Jochen

Abhängigkeiten, die

Jochen

halt nur noch eine Pi-Project-Tommel

Jochen

mitbringen, aus der dann

Jochen

sozusagen steuert, wie dem Wheel erzeugt

Jochen

wird, das geht nur

Jochen

noch, wenn Pi-ZMQ installiert

Jochen

ist. Keine Ahnung, warum.

Johannes

Was ist denn Pi-ZMQ?

Johannes

Irgendwas mit einer

Jochen

dieser, irgend so ein Messaging-Queue.

Jochen

Okay.

Jochen

Hätte ich jetzt nicht mit Wheels

Jochen

in Verbindung gebracht. Ja, ich auch nicht. Deswegen hat es mich

Jochen

gewundert. Und zwar auch in einer relativ neuen Version.

Jochen

Und wenn man das halt nicht installiert hat, also ich muss

Jochen

jetzt eine Reihe von Projekten das Ding als

Jochen

Core-Abhängigkeit mit hinzufügen,

Jochen

weil ansonsten konnte man

Jochen

irgendwie die ganzen Abhängigkeiten nicht mehr installieren.

Jochen

In 3.12, in 3.11 geht's noch.

Jochen

Also keine Ahnung, was da genau das Problem ist,

Jochen

aber naja.

Jochen

Vielleicht installiert das irgendwie eine Subdependency

Jochen

auf die irgendwie hin.

Jochen

Klingt auf jeden Fall gut.

Jochen

Genau weiß ich jetzt nicht, aber das ist halt etwas,

Jochen

worüber ich gestolpert bin und worüber ich auch gestolpert bin,

Jochen

aber das kann sein, dass das jetzt ein sehr spezifisches

Jochen

Mac-Problem ist. Es ist halt, auf dem M1

Jochen

findet, wenn man Python

Jochen

kompiliert mit Homebrew,

Jochen

das statt

Jochen

der aktuellen OpenSSL-Version

Jochen

die OpenSSL-Version 1.1, wenn sie installiert ist.

Jochen

Und das geht dann schief,

Jochen

weil, ja, zu alt.

Jochen

Wahrscheinlich ist das irgendein Fehler im

Jochen

Configure-Skript oder so.

Jochen

Und wenn man

Jochen

dann OpenSSL 1.1 entfernt und

Jochen

dann geht's.

Jochen

Ja. Das möchte man ja eigentlich.

Jochen

Ja. Habe ich jetzt auch.

Jochen

Ich dachte dann, wenn man sagt, ah, entfernt's mal,

Jochen

dann hat's mir gesagt, irgendwie ganz viele Pakete,

Jochen

die drauf basieren, unter anderem sowas wie

Jochen

TMAX und so und

Jochen

diverse andere Geschichten,

Jochen

ImageMagick, LibHive,

Jochen

so Sachen, wo man sagt, das kann ich nicht deinstallieren.

Jochen

Das ist da, da

Jochen

wiederum dependet zu viel anderes Zeugs drauf.

Jochen

Wenn man das alles deinstalliert, dann

Jochen

OpenSSL 1.1 entfernt und

Jochen

dann das nochmal installiert, dann

Jochen

linkt das halt gegen die richtige

Jochen

OpenSSL-Version.

Jochen

OpenSSL. Ja, gut. Also wahrscheinlich

Jochen

ist da auch wieder ein Fehler in irgendwelchen Configure-Skripten.

Johannes

Das ist doch ein Mac-Problem, oder? Kauft euch mal

Johannes

einen richtigen Secure-Skript. Ja,

Johannes

kann schon sein.

Johannes

Genau, ja. Jetzt haben wir

Dominik

aber tatsächlich so ein bisschen News, also nur von 3.3.12

Dominik

gemacht und ich glaube,

Dominik

wir müssen

Dominik

eine neue Folge sonst irgendwie aufmachen

Dominik

mit News von Python 3.12. Wir machen

Dominik

das nächste Mal mehr News.

Dominik

Also eigentlich wollten wir ja über

Dominik

Kubernetes reden und ich glaube, wir hatten jetzt so eine neue

Dominik

Markierung und haben

Dominik

die ganzen News jetzt, wenn ihr noch dran seid und

Dominik

Kubernetes tun wollt. Oder übersprungen habt.

Dominik

3.3.12 ist schon auch relevant.

Dominik

Ja, das stimmt natürlich. Ja, also die anderen News

Dominik

dann später. Wir haben immer noch,

Dominik

ja, haben wir noch welche? Nee.

Dominik

Nee, gut. Ich nicht. Gut, dann

Dominik

sprechen wir jetzt über Kubernetes.

Dominik

Spannend. So ganz am Einstieg,

Dominik

was ist denn das?

Johannes

Das ist schwer zu sagen.

Johannes

Es ist schwer zu beschreiben, was Kubernetes eigentlich ist.

Johannes

In wenigen Worten zusammengefasst

Johannes

würde ich sagen, das ist eine verteilte

Johannes

Runtime für Docker

Johannes

VMs. Also sowas, das

Dominik

irgendwie so ein paar Boote auf

Dominik

einem See beaufsichtigt.

Dominik

Nee.

Dominik

Doch.

Dominik

Also es ist so ein bisschen das, also ich glaube,

Dominik

wenn man sich das so vorstellt,

Dominik

dann laufen halt so bestimmte Boote,

Dominik

also Pots, so

Dominik

Container halt.

Dominik

Containerschiff sozusagen. Genau, auf so einem, ja,

Dominik

vielleicht sind das einfach so kleine Nussschalen

Dominik

oder sowas auf so einem See rum.

Dominik

Und irgendwer guckt halt, dass die

Dominik

in der richtigen Reihenfolge da laufen und dass

Dominik

man damit Dinge anstellen kann.

Dominik

Also das ist ein Bild,

Dominik

was ich nicht

Dominik

in den Kopf kriege, aber

Dominik

man kann es sicherlich so betrachten.

Jochen

Was ich auch schon mal,

Jochen

du sagst verteilte Runtime für, man könnte

Jochen

auch sagen, vielleicht ein Betriebssystem für eine Gruppe von

Jochen

Rechnern irgendwie.

Jochen

Die kann man dann wie ein

Jochen

Ding ansprechen, obwohl es halt viele Rechner

Jochen

sind. Ja, also das finde ich

Johannes

tatsächlich gar nicht so wichtig da dran, sondern das Wichtige

Johannes

daran finde ich eigentlich, dass das

Johannes

weggeht von dem imperativen Modell,

Johannes

was man ja so bei den, also wenn man Ansible macht,

Johannes

dann sagst du, auf diesem Server soll

Johannes

jetzt das hier ausgeführt werden und auf diesem

Johannes

Server soll das hier ausgeführt werden.

Johannes

Das ist sehr imperativ, ja, du gibst an, was

Johannes

passieren soll. Und

Johannes

Kubernetes geht hin

Johannes

zu so einem

Johannes

deklarativen Modell. Du sagst gar nicht mehr

Johannes

auf dem Computer soll das passieren,

Johannes

sondern du sagst, es soll drei Instanzen

Johannes

von dieser VM geben.

Dominik

Also das ist vielleicht auch noch so einer der Zwecke,

Dominik

wie Kubernetes am meisten irgendwie verwendet wird, dass du

Dominik

halt irgendwie so ein Load-Balancing machen kannst

Dominik

und halt skalieren kannst.

Dominik

Genau, dass du so skalieren kannst in horizontale

Dominik

Richtung, wenn du mehr Last kriegst oder sowas.

Dominik

Oder dass du vielleicht so Releases machen kannst,

Dominik

die rollend sind oder so.

Johannes

Das ist ein Aspekt davon, dass du

Johannes

so Skalierungsthemen hast. Finde ich jetzt aber gar

Johannes

nicht tatsächlich so wichtig, sondern für mich ist eher

Johannes

wichtig, dass du so eine Abstraktion hast zwischen

Johannes

was ist das Substrat,

Johannes

also die Computer, die du hast,

Johannes

und was ist die Workload?

Johannes

Also die Sachen, die du ausführen möchtest.

Johannes

Und so ein bisschen wie bei einer Datenbank.

Johannes

Bei einer Datenbank ist das Substrat die

Johannes

Festplatte und die Workload

Johannes

sind die Daten, die du drin hast. Und ich will

Johannes

eigentlich gar nicht selber entscheiden müssen,

Johannes

welche Daten wo liegen und wie die

Johannes

aufgebaut sind. Und deshalb nehme ich

Johannes

eine SQL-Datenbank, weil da sage ich einfach nur, hier sind

Johannes

die Daten und die haben folgende Eigenschaften,

Johannes

sorgt dafür, dass die gut sind.

Johannes

Und bei Kubernetes ist es genauso.

Johannes

Da sage ich, ich habe hier meine

Johannes

Nodes, das sind die Computer, die ich habe

Johannes

und nimm die mal

Johannes

und dann

Johannes

komme ich von der anderen Seite und sage, hier ist meine

Johannes

Workload. Ich brauche jetzt zwei VMs von

Johannes

der Sorte und fünf von der Sorte und sieben von der

Johannes

Sorte und die müssen so und so miteinander

Johannes

kommunizieren können. Sorg mal dafür.

Dominik

Also zweimal eine Datenbank, fünfmal eine Anwendung.

Johannes

Genau. Und die müssen folgende Ports

Johannes

offen haben und die müssen folgenden Speicherplatz haben

Johannes

und die müssen miteinander kommunizieren können und die

Johannes

müssen so und so exposed sein und

Johannes

sorg mal dafür, dass das passiert.

Dominik

Ja, da steckt man halt quasi so ein bisschen

Dominik

Lego zusammen.

Dominik

Jein.

Johannes

Du steckst es nicht selber zusammen, sondern du

Johannes

sagst hier, so soll das Lego-Modell

Johannes

am Ende aussehen. Schreibst eine Bauanleitung für ein Lego.

Johannes

Bau mal.

Johannes

Und das ist das, was mich da eigentlich

Johannes

dran reizt,

Johannes

dass du eben nicht mehr sagst, es soll etwas

Johannes

passieren, sondern du sagst, es soll ein Zustand erreicht

Johannes

werden. Ja. Und

Johannes

das beschreibt auch so ein bisschen das

Johannes

System, ja. Das

Johannes

beschreibt so ein bisschen, was Kubernetes überhaupt ist.

Johannes

Das ist eine Engine, die dafür sorgt, dass

Johannes

ein Zustand von VMs

Johannes

erreicht wird,

Johannes

mit den gegebenen Ressourcen.

Johannes

Und

Johannes

das ist was Sinnvolles, das ist was Nützliches.

Johannes

Das ist nicht dann nützlich, wenn du eine VM

Johannes

ausführst oder wenn du einen Rechner hast.

Johannes

Das ist dann nützlich, wenn du 100 Rechner

Johannes

hast und 1000 VMs ausführen musst.

Johannes

Weil dann, wenn du das manuell machen

Johannes

möchtest, dann fängst du halt an.

Johannes

Dann musst du

Johannes

irgendwelche Node-Gruppen machen und musst

Johannes

irgendwelche Verteilungsdinge

Johannes

machen und Affinitäten und Netzwerk,

Johannes

was weiß ich.

Johannes

Mit Kubernetes sagst du halt einfach,

Johannes

ja, das ist jetzt in Anführungsstrichen

Johannes

gesetzt, sagst du einfach, hier sind

Johannes

deine Nodes und dann kommst

Johannes

du von der anderen Seite an die AP ran und sagst, so,

Johannes

ich hab jetzt hier Workloads und zwar diese hier

Johannes

und diese hier und diese hier und diese hier und jetzt mach mal.

Johannes

Und idealerweise

Johannes

sorgt dann das System dafür, dass die

Johannes

Workloads, also die Images, die du laufen

Johannes

möchtest, auf diesen Knoten, die du hast,

Johannes

verteilt werden, sodass die

Johannes

alle ihre Anforderungen erfüllen und dass die Knoten

Johannes

trotzdem alle gut ausgelastet

Johannes

sind und gut verteilt sind. Und

Johannes

was weiß ich nicht, was man da alles noch einteilen

Johannes

kann.

Johannes

Aber im Endeffekt ist es,

Johannes

wenn man das, also aus

Johannes

Anwendersicht, ja, aus Workload-

Johannes

Betreiber-Sicht,

Johannes

ist das schon was relativ Simples.

Johannes

Du sagst halt, du beschreibst halt,

Johannes

wie deine

Johannes

Workloads aussehen sollen und was

Johannes

du gerne am Laufen haben möchtest. Und auch

Johannes

wie viele, ja.

Johannes

Also wenn du so ein System hast, wo du 100

Johannes

Nodes hast oder 1000 Nodes, ja, dann ist es

Johannes

leicht zu sagen, ich brauche jetzt 100 von diesen vor

Johannes

oder 200 von diesen. Oder da ist

Johannes

jetzt gerade Last drauf, also mach die bitte hoch

Johannes

oder wieder runter.

Johannes

Naja, das klingt

Jochen

erstmal sehr charmant,

Jochen

wenn man das einfach so, wenn man sagen kann, okay, ich abstrahiere

Jochen

von den konkreten

Jochen

Maschinen irgendwie. Da können unten

Jochen

Leute immer neue

Jochen

Maschinen in Racks

Jochen

stecken und mein Cluster wird halt

Johannes

größer. Wenn wir das drauf installieren und den

Jochen

als Node deklarieren. Genau, und ich muss

Jochen

das alles gar nicht wissen.

Johannes

Und auch von den Operationen. Du gehst weg von den

Johannes

Operationen. Also eine Node braucht

Dominik

tatsächlich nichts anderes als ein installiertes

Dominik

System mit einem Kubernetes.

Johannes

Das weiß ich nicht genau, wie das

Johannes

eingerichtet wird, weil die

Johannes

diese Operations-Seite habe ich noch nicht

Johannes

selber erlebt. Wir benutzen überall

Johannes

nur Managed Kubernetes.

Johannes

Weil auch, wenn du, also

Johannes

das Lustige ist ja, ja,

Johannes

das Argument gibt es ganz oft, Google

Johannes

macht das, also machen wir das auch.

Johannes

Und das stimmt

Johannes

aber so nicht, weil Google hat halt bestimmte

Johannes

Anforderungen und andere Firmen

Johannes

oder Projekte oder Teams haben halt andere

Dominik

Anforderungen. Wir haben ja bestimmt zwei Applikationen, dafür brauchen wir

Johannes

ein Kubernetes-Cluster. Ja, genau. Also wir haben

Johannes

hier zwei Server, dann mach doch mal ein

Johannes

Kubernetes-Cluster auf. Wir wollen da vier

Johannes

VMs laufen lassen, mach doch mal ein Kubernetes-Cluster auf.

Johannes

Nee, das brauchst du nicht.

Johannes

Dafür brauchst du einen Server und da kann

Johannes

jeder Docker-VMs starten oder

Johannes

andere VMs, ja.

Johannes

Das brauchst du dann, wenn du tausend Rechner

Johannes

hast und 30 Teams, die

Johannes

5000 VMs da drauf betreiben

Johannes

wollen. Weil dann willst du da nicht mehr händisch reingehen,

Johannes

und sagen, ihr kriegt jetzt diese

Johannes

Server und ihr kriegt diese Server und ihr kriegt diese

Johannes

Server, sondern dann sagst du einfach,

Johannes

hier ist euer Quoter und hier ist euer Quoter und hier ist

Johannes

euer Quoter. Ja. Und

Johannes

ihr dürft da drauf starten, was ihr wollt, solange

Johannes

ihr in eurem Quoter bleibt. Kurz, was ist

Dominik

ein Quoter? Also ein Anteil von Rechenkapazität?

Dominik

Genau, also du kannst

Johannes

Accounts, also es ist natürlich

Johannes

alles viel komplizierter, als es sich anhört, weil

Johannes

genau wie bei Datenbanken, eine Datei

Johannes

auf die Festplatte speichern ist easy, eine Datenbank

Johannes

betreiben ist nicht so easy.

Johannes

Und das kommt auch mit der Scale dazu.

Johannes

Ja, wenn du so eine gewisse

Johannes

Größe erreicht hast, wenn du halt mehr als 5

Johannes

Teams hast oder mehr als 10 Teams hast, dann musst

Johannes

du da irgendwie Autorisierung drin haben.

Johannes

Und dann musst du auch dafür sorgen, dass sich die Teams

Johannes

nicht gegenseitig zu sehr auf die Füße treten

Johannes

können. Oder abschießen können. Oder abschießen können, genau.

Johannes

Das heißt, du musst verhindern, dass ein Team

Johannes

sagt, so, wir brauchen jetzt 100.000 VMs mit

Johannes

jeweils einem Gigabyte Speicher und dann ist dein

Johannes

ganzer Knoten nur noch von diesen kaputten

Jochen

Sachen. Ich hatte so ein bisschen

Jochen

Gefühl, so meiner Erfahrung nach,

Jochen

ich hatte nicht so das Gefühl, dass man das wirklich

Jochen

dafür sorgt, dass mir niemand auf die Füße tritt, sondern eher

Jochen

so, dass ich die auf mir, also ich hatte

Jochen

immer noch die Schmerzen, als ob mir jemand auf die Füße getreten

Jochen

hätte. Aber ich kann die

Jochen

nicht mehr sehen, die das waren.

Dominik

Ja, genau. Eine andere Administrationsgruppe.

Dominik

Keine Operation. Es gibt eine Administrationsgruppe,

Dominik

die dann trotzdem alles da, die Geisterkundin hat,

Dominik

die das putzen und sauber machen. Aber normalerweise,

Johannes

also um zu dem Normalzustand

Johannes

zurückzukehren, ja, normalerweise hast du halt dann da deine Teams

Johannes

drauf, die irgendwelche Accounts auf diesem Kubernetes

Johannes

System haben. Und diese Accounts haben ein Quota. Das heißt,

Johannes

die dürfen eine bestimmte Menge CPU

Johannes

anfordern und eine bestimmte Menge RAM anfordern.

Johannes

Und mehr,

Johannes

äh, starten,

Johannes

mehr VMs starten kannst du halt nicht.

Johannes

Du kannst dem System sagen, starte bitte mehr VMs

Johannes

und dann sagt das System, nee, ich kann nicht mehr

Johannes

VMs starten, weil dein Quota aufgebraucht ist.

Johannes

Und ja,

Johannes

auch das kann zu Schmerzen führen,

Johannes

dass du halt sagst, okay, wir brauchen aber mehr

Johannes

und es geht nicht mehr. Nur

Johannes

das Problem hattest du vorher auch, ja, wenn du hier

Johannes

die drei Server hattest und die sind halt voll.

Johannes

Ja, aber es gibt auch

Johannes

höchstens noch selber dran. Es gibt schon

Jochen

Probleme, die man kriegt,

Jochen

die ich so sonst nicht kenne.

Jochen

Also, die ich halt ohne Kubernetes

Jochen

nicht habe.

Jochen

Weil diese Abstraktion halt doch

Jochen

irgendwie leaky ist. Ich meine, wie alle Abstraktionen

Jochen

so ein bisschen. Also zum Beispiel etwas, was

Jochen

halt irgendwie,

Jochen

ich meine, keine Ahnung, vielleicht gibt es auch irgendwie eine tolle

Jochen

Lösung für, aber was es halt, was ich halt schon

Jochen

irgendwie ätzend fand, ist halt, dass

Jochen

du eben, wenn du jetzt viel Zeug

Jochen

betreibst, dann kannst du ja

Jochen

nicht irgendwie allen Sachen

Jochen

irgendwie ganz viel Ressourcen geben, weil sonst sagt der

Jochen

Klasse dir so, äh,

Jochen

du hast jetzt hier schon so einen Dicke,

Jochen

das geht nicht.

Jochen

Das heißt, du überlegst dir dann so, okay,

Jochen

naja, also eigentlich braucht

Jochen

ja dieser Kante, das braucht ja gar nicht so viel.

Jochen

Dann setzt man die Ressourcen

Jochen

darunter. Ja, da hast du zu wenig

Johannes

Ressourcen gehabt, da war dein Quota zu niedrig.

Johannes

Ja, und dann

Jochen

passieren aber im Betrieb so Dinge, wo man

Jochen

dann halt mal kurzfristig ein bisschen mehr braucht.

Jochen

Und dann, zum Beispiel Hauptspeicher,

Jochen

und dann killt es das einfach weg.

Jochen

Das ist halt

Jochen

nicht so nett irgendwie. Das ist dann tatsächlich

Johannes

das Interessante, was da passiert,

Johannes

weil das System

Johannes

äh,

Johannes

reduziert genug ist, findest du auf einmal

Johannes

die Ecken und Kanten. Also zum Beispiel,

Johannes

dass du, äh, dass du zwei Limits hast.

Johannes

Ja, du hast ein Requests-Limit und

Johannes

ein Limit-Limit.

Johannes

Du forderst, äh, du brauchst mindestens so

Johannes

viel RAM und aber

Johannes

auf keinen Fall mehr als so viel.

Johannes

Und manchmal brauchst du es halt aber doch.

Johannes

Und diese Worte bedeuten auch nicht das, was sie

Johannes

bedeuten, sondern dieses Requests,

Johannes

wenn du zwischen dem Requests und dem Limit

Johannes

bist, dann heißt es, dass der,

Johannes

das Kubernetes diese

Johannes

vor allem abschalten darf.

Johannes

Mhm.

Johannes

Weil du ja über dem Requests drüber bist.

Johannes

Du bist über das, was du angefordert hast.

Johannes

Die, diese Worte bedeuten

Johannes

halt nur, wenn du übers Request gehst,

Johannes

darf Kubernetes deinen,

Johannes

deinen, deinen VAM-Schalter abschalten.

Johannes

Beim Limit muss es die VAM

Dominik

abschalten. Und das heißt, es darf halt dann,

Dominik

wenn andere anfragen, ob sie neue Ressourcen

Dominik

haben können und es keiner freien mehr findet.

Johannes

Ja, beziehungsweise, wenn

Johannes

du über dein, über dein, also es gibt

Johannes

zwei wichtige Kenngrößen, ja,

Johannes

CPU und, äh, Memory.

Johannes

Mhm. Und, äh, für

Johannes

jede der beiden kannst du angeben, wie viel du

Johannes

requestest, also wie viel du anforderst

Johannes

und wie viel

Johannes

du maximal benutzen wirst,

Johannes

also wie viel du am Limit hast.

Johannes

Und, ähm, das,

Johannes

das Scheduling, also die Zuweisung,

Johannes

welche

Johannes

Arbeitslasten auf welchem System,

Johannes

auf welchem Knoten laufen, die gehen über

Johannes

das Requests.

Johannes

Das heißt, wenn du sagst, meine Anwendung

Johannes

verbraucht 500 Megabyte Hauptspeicher

Johannes

und

Johannes

maximal 1000, dann kannst du auf einen

Johannes

Rechner gesetzt werden, auf einen Knoten gesetzt werden,

Johannes

wo 500 Megabyte frei sind.

Johannes

Weil dann ist deine Anforderung erfüllt.

Johannes

Ja, du hast gesagt, ich brauche 500 Megabyte

Johannes

Hauptspeicher. Wenn du drüber

Johannes

gehst, dann kann das halt sein, dass es,

Johannes

dass es nicht geht. Du kannst nicht mehr Speicher

Johannes

reservieren oder es kann sein, dass du, äh,

Johannes

abgeschossen wirst, weil jemand anderes

Johannes

auch gerade 500 Megabyte

Johannes

angefordert hat und du halt

Johannes

aber mehr als deine 500 Megabyte verbraucht hast,

Johannes

weil du zwischen Requests und Limit bist.

Johannes

Die, die pragmatische Lösung, die sich

Johannes

bei uns in diesem Projekt ergeben,

Johannes

ist, dass du Request-Gleich-Limit setzt.

Johannes

Das heißt, du forderst einfach so viel

Johannes

an, wie du denkst, dass du maximal brauchst

Johannes

und Spitzen hast, darfst du dann halt

Johannes

nicht haben, beziehungsweise Spitzen hast du halt dadurch

Johannes

abgedeckt, dass du sie... Das kenne ich auch,

Jochen

aber das Problem ist halt, tatsächlich hat man

Jochen

aber oft irgendwie Spitzen.

Johannes

Ja, und ist auch nicht schlau, ja. Eigentlich willst du ja,

Johannes

dass sich diese Wellen so ergänzen.

Jochen

Und wenn ich jetzt einfach auf einem normalen

Jochen

Rechner sozusagen deploye und ich habe jetzt halt irgendwie

Jochen

sagen wir mal 10 Projekte, die alle unterschiedliche

Jochen

Last haben und so, und ab und zu brauche ich

Jochen

halt mal so einen Gigabyte Hauptspeicher oder

Jochen

zwei.

Jochen

Zwei für irgendwas,

Jochen

weil sie halt irgendwie zum Beispiel

Jochen

im Fall, an dem ich mich gut erinnere, wo das halt

Jochen

echt Kopfschmerzen breitet

Jochen

hat, manchmal startest

Jochen

du und du kannst es auch nicht, hast es nicht unter Kontrolle.

Jochen

Bei Python hast du es halt oft unter Kontrolle.

Jochen

Da kann man schon irgendwas machen,

Jochen

aber zum Beispiel für manche Sachen,

Jochen

wenn man dann so ein externes Binary

Jochen

startet, wie zum Beispiel FFmpeg.

Jochen

FFmpeg, du kannst nicht...

Jochen

Der isst einfach alles auf.

Jochen

Naja, also es kann auf jeden Fall passieren.

Jochen

Du hast halt, also normalerweise

Jochen

passiert nichts.

Jochen

Und dann, aber du hast halt FFmpeg mit

Jochen

irgendwie so, weiß ich nicht,

Jochen

200 Zeichen irgendwie komischen Optionen

Jochen

hintendran und meistens passiert gar nichts. Und in

Jochen

komischen Fällen manchmal braucht das dann halt zwei

Jochen

Gigabyte Hauptspeicher. Ist halt so.

Johannes

Ja, aber solltest du das dann nicht abschießen in dem Fall?

Johannes

Nein. Solltest du das nicht verbieten in diesem Fall?

Jochen

Ja, und es ist halt dummerweise sinnvoll.

Jochen

Und das braucht es halt wirklich. Und jetzt kann man

Jochen

natürlich dann irgendwie, keine Ahnung, FFmpeg

Jochen

irgendwie sich angucken und schauen, wo ist denn da das Problem?

Jochen

Aber, äh, ja.

Jochen

Aber wie geht man denn mit so einem Fall um?

Jochen

Also, wenn ich einfach auf eine normale Maschine

Jochen

deploye,

Jochen

dann, das gleicht sich alles aus.

Jochen

Das ist kein Problem. Wenn dann mal ein Prozess

Jochen

mit ein bisschen mehr Hauptspeicher läuft,

Jochen

ist nicht schlimm. Ja, das dauert auch

Jochen

nicht so lange. Dann ist es wieder gut.

Jochen

Weil Kubernetes hat mir das echt,

Jochen

das macht dann echt Kopfschmerzen. Es geht so weit, dass dann

Jochen

Leute dann hingehen und neue Maschinen kaufen, weil

Jochen

man das irgendwie nicht in den Griff kriegt sonst.

Jochen

Und das ist halt schon irgendwie so. Ja, das ist doch gut für die Hersteller.

Jochen

Ja, genau. Aber dann denke ich mir so, also irgendwie

Jochen

kann das doch nicht die Lösung sein, oder? Also,

Jochen

ja. Weil man braucht es ja

Jochen

tatsächlich eigentlich nicht. Also, es ist halt

Jochen

nicht so, dass man, also,

Johannes

er muss da eigene Pods

Johannes

starten mit FFmpeg drin.

Jochen

Ja, ja, genau. Das kann man natürlich dann auch

Jochen

machen. Du kannst dann halt irgendwie so

Jochen

dir spezielle, oder das Problem

Jochen

hast du natürlich auch, wenn du spezielle Hardware hast,

Jochen

sowas wie GPUs oder sowas. Ja, gut, klar.

Jochen

Aber dann geht auch so ein bisschen der ganze

Jochen

Vorteil irgendwie so ein bisschen wieder verloren, weil

Jochen

dann muss sich ja doch wieder um die ganze

Jochen

Ja, klar. Die

Johannes

Annahme ist halt, dass du viele

Johannes

sage ich mal gleichpräige

Johannes

Arbeitslasten hast,

Johannes

die du

Johannes

wo es nur darum geht, die irgendwie so

Johannes

mehr oder weniger gleichmäßig zu verteilen.

Johannes

Und dann ist das großartig.

Johannes

Aber

Johannes

das Interessante, was

Johannes

als ich Kubernetes gelernt habe,

Johannes

war, dass sich da so die Denke

Johannes

so ein bisschen verändert. Genauso wie wenn man SQL lernt.

Johannes

Beim SQL lernen, wenn du anfängst, SQL

Johannes

zu lernen, dann ist die Frage oft so,

Johannes

wie sorge ich denn dafür, dass

Johannes

er das aus der Tabelle holt?

Johannes

Und die Antwort ist,

Johannes

gar nicht. Du sorgst da gar nicht dafür, sondern du sagst,

Johannes

naja, ich brauche was aus der Tabelle und dann

Johannes

sorgt er schon selber dafür, dass es

Johannes

aus der Tabelle kommt.

Johannes

Und so Situationen

Johannes

gibt es bei Kubernetes auch ganz

Johannes

viele, weil du eben zu diesem deklarativen Modell

Johannes

hingehst. Zum Beispiel, eine

Johannes

der schönsten ersten Lernerfahrungen war,

Johannes

wie sorge ich denn dafür, dass diese Maschine

Johannes

neu gestartet wird? Und die Antwort

Johannes

ist, gar nicht. Du löscht

Johannes

dir einfach. Du machst einfach die, die

Johannes

jetzt gerade existiert, weg und

Johannes

Kubernetes bemerkt, oh Moment, da fehlt ja eine

Johannes

und startet eine neue.

Johannes

Und das ist

Johannes

am Anfang manchmal etwas unintuitiv,

Johannes

auf diese

Johannes

Operationen zu kommen, wenn du irgendwas erreichen

Johannes

möchtest, wie du das deklarativ machst.

Johannes

Und deklarativ ist halt, diese Maschine soll

Johannes

jetzt bitte entfernt werden.

Johannes

Ja.

Dominik

Das sind auch so ein paar Probleme.

Dominik

Was das halt auch ist, ist irgendwie so

Dominik

Rolling Release dann halt irgendwie. Du hast halt mehrere

Dominik

Versionen von einer Software, die dann

Dominik

live ist, weil die halt einfach...

Dominik

Wundervolle Sache.

Dominik

Also du hast keinerlei Verzug mehr

Dominik

zwischen neuer Version, also gefühlt,

Dominik

und 10% laufen noch auf der alten Version

Dominik

oder schon auf der neuen, und dann schalten die

Dominik

ab, wenn die Prozesse irgendwie fertig sind, alte Maschinen

Dominik

ab und neu halt irgendwie rein.

Dominik

Aber das ist auch irgendwie ein bisschen

Dominik

blöd an verschiedenen Stellen.

Johannes

Ja, aber es ist doch eine großartige Sache.

Johannes

Es gab einen super Artikel zu Blue-Green-Deployments

Johannes

mit Django, da hast du halt...

Jochen

Von Marius Flissiak.

Jochen

Genau. Wird in den

Jochen

Shownotes erscheinen.

Johannes

Wo du halt ganz arg drauf achten musst,

Johannes

dass du deine Datenbank-Migration

Johannes

so machst, dass du quasi bei jedem

Johannes

Übergang beide Versionen betreiben

Johannes

kannst. Ja, das ist ja genau das Problem.

Dominik

Was machst du in Migration, in Django?

Dominik

Und dann ist irgendwie ein Feld in der Tabelle

Dominik

auf einmal neu. Ja gut, also ich meine, es steht dir ja frei,

Johannes

das anzuhalten und dann die Migration zu

Johannes

machen und dann neu zu starten. Das darfst

Johannes

du ja machen. Ja, aber neu ist ja

Jochen

kein Problem. Also Problem ist

Jochen

halt eher, wenn ein Zweck fällt oder so.

Johannes

Aber wie gesagt, dieser Mechanismus

Johannes

kannst du ja immer noch machen. Du kannst ja alle anhalten und

Johannes

Migration machen und alle neu starten.

Johannes

Das ist ja kein Ding.

Johannes

Nur, was die jetzt auch noch machen,

Johannes

kannst, ist eben diese, ja zum

Johannes

Beispiel ein Rolling Release oder ein Blue-Green Deployment.

Johannes

Rolling Release,

Johannes

ich glaube, wir müssen das erklären, ja? Ich wusste

Johannes

diese Worte auch nicht.

Johannes

Rolling Release heißt, dass

Johannes

wenn du zum Beispiel fünf VMs in

Johannes

einer bestimmten Version laufen hast, dass

Johannes

du das Kubernetes-System anweisen kannst,

Johannes

ich möchte jetzt auf eine andere Version, auf eine höhere

Johannes

Version, und zwar Rolling.

Johannes

Das heißt, er wird

Johannes

die VMs nach und nach

Johannes

abschalten und nach und nach die neuen zuschalten.

Johannes

Das ist halt immer eine gewisse Lasse.

Johannes

Dann eine neue hochfahren. Und erst, wenn die neue

Johannes

hochgefahren ist, wird die nächste alte gestoppt.

Johannes

Das heißt, du hast

Johannes

keine Situation, wo du

Johannes

keine Availability hast.

Dominik

Ja, genau, aber das kann man ja, so ein Problem, wenn

Dominik

PostQuesta einen Gipfel aufkriegt mit einem neuen Feld oder so.

Dominik

Ja, gut, klar. Das muss halt deine

Johannes

Software dann können. Und das ist nicht

Johannes

immer so einfach.

Jochen

Ja, also, aber das kannst du auch

Jochen

mit Ensemble machen, weil dieses Problem hast du natürlich sowieso

Jochen

auch. Ich würde nur sagen, also...

Johannes

Das ist natürlich schwierig, weil es ist schon eine komplizierte Operation.

Johannes

Ja, aber, aber,

Jochen

na gut, ich weiß nicht, ob man das halt so

Jochen

einfach automatisieren kann, weil es gibt

Jochen

halt sehr unterschiedliche Arten von, also es gibt

Jochen

halt die Dinge, wo man halt ein Rolling-Update

Jochen

machen kann, wo das halt gar kein Problem ist,

Jochen

wo man sozusagen nur irgendwie

Jochen

die alten rausnimmt und die neuen

Jochen

im Loadbalancer mit hinzufügt. Aber dann gibt es

Jochen

halt auch Dinge, wo das halt nicht geht, sondern wo du

Jochen

alle auf einmal umschalten musst.

Jochen

Weil das sonst

Jochen

deine Datenbank kaputt macht, zum Beispiel.

Jochen

Ja, oder du musst halt

Dominik

zu deiner alten Datenbank eine neue Datenbank gleichzeitig

Dominik

hochfahren und dann erst die neuen

Dominik

Daten einmal spiegeln, dann rüberfahren

Dominik

und dann irgendwie aufsammeln, das, was

Dominik

in der Zwischenzeit noch in die alten Daten geschrieben wird

Dominik

und dann auch so eine Liste machen,

Dominik

die du dann in die neuen Datenbank migrierst und

Dominik

das aber dann rollen. Das heißt, während

Dominik

du die migrierst immer länger, bis du dann irgendwann

Dominik

abschalten kannst, dann kannst du nur noch die neuen, das danach fliegen

Dominik

und dann hast du vielleicht nicht mehr ganz klare Daten, weil

Dominik

welche kamen jetzt zuerst und...

Johannes

Also es eignet sich sicherlich nicht für jede

Johannes

Situation, sagen wir es mal so.

Johannes

Aber wenn du zum Beispiel irgendwo nur Konfigurationsänderungen

Johannes

machst oder nur, keine Ahnung,

Johannes

irgendwelche harmlosen Features live

Johannes

schaltest, dann ist das schon irgendwie schön, weil du dann

Johannes

halt Zero-Downtime hast. Ja, aber das hast du doch

Johannes

sonst auch.

Johannes

Also wenn ich bei mir irgendwie

Jochen

ein neues Deployment mache, habe ich

Jochen

Zero-Downtime. Du machst halt den

Jochen

neuen Server auch... Ich habe eine Sekunde Downtime in der Mitte.

Dominik

Du machst ja den einen...

Dominik

altes System läuft. Dann fährst du das neue System

Dominik

hoch. Ja gut, das ist ja Blue-Green. Und dann zeigst du

Dominik

aber dem Loadbalancer einfach

Johannes

aufs neue System. Ja genau, das ist Blue-Green-Deployment, was ihr da

Johannes

beschreibt. Das heißt, du hast ein System

Johannes

im Background laufen, was Blue ist, also

Johannes

was den Status Blue hat

Johannes

und sagst dem Loadbalancer, bitte allen Traffic

Johannes

auf Blue. Und dann startest du ein System,

Johannes

ein komplettes, was Green hat als Status

Johannes

und wenn das fertig da ist, sagst du dem Loadbalancer

Johannes

jetzt umschalten auf Green.

Johannes

Diese Technik, die ihr beschreibt, heißt Blue-Green-Deployment.

Johannes

Auf die ist es relativ leicht mit

Johannes

Kubernetes umzusetzen.

Johannes

Die eigentliche Frage,

Johannes

die sich für mich stellt, ist, braucht

Johannes

man überhaupt Zero-Downtime-Deployments?

Johannes

Ja, das ist auch so eine Frage.

Johannes

Die machen ja ungeheuer viel Arbeit und die machen ungeheuer viele

Johannes

Probleme. Also dieser Django-Artikel

Johannes

über Blue-Green-Deployments, der ist wunderbar

Johannes

zu lesen und ist auch sehr schön, aber

Johannes

es sind halt einfach acht Arbeitsschritte

Johannes

mehr, als wenn du sagst, okay, wir halten

Johannes

kurz an, dann sind wir für eine Minute da und dann machen wir

Johannes

die Migration und dann starten wir es

Johannes

einfach wieder. Das gibt da noch ganz viele schöne Reihensachen.

Dominik

Weil wenn du sowas in so einer CI-CD-Chain

Dominik

drin hast, wo man, um

Dominik

zu testen, ob das überhaupt funktioniert, noch einen

Dominik

Staging-Prozess zwischendurch hat, der

Dominik

dann aber sowas macht, wie erstmal die

Dominik

alte Version auschecken und dann darauf ein Update

Dominik

fahren, damit halt klar ist, dass das Update

Dominik

geht und er nicht direkt neue Sachen baut,

Dominik

dann kann ja sein, dass das neue Version

Dominik

bauen anders ist, als auf ein altes System Update

Dominik

setzen. Und dann musst du halt erst alte bauen und dann

Dominik

das neue Updaten. Und wenn man dann sowas macht, wie

Dominik

neue Environments oder Secrets dazu und

Dominik

die es beim Anfang noch nicht gibt, aber am Ende

Dominik

dann schon, dann musst du halt quasi, oder

Dominik

halt welche entfernt halt, größeres Problem,

Dominik

dann sind die halt auf einmal weg.

Dominik

Das sind ein paar Sachen, die so problematisch sind, weil dann musst du

Dominik

zwei Releases machen, um so Sachen rauszukriegen

Dominik

zum Beispiel. Ja, das ist

Johannes

diese Krankheit. Google macht das, also machen wir das

Johannes

auch. Wieso, also die

Johannes

allermeisten Projekte

Johannes

und Teams und Unternehmen können doch

Johannes

auf, können auch eine Minute Downtime

Johannes

hinnehmen. Ist doch egal.

Johannes

Ja, aber wenn du Service-Level-Agreements

Dominik

hast, wo 5,9,

Dominik

das hast du so 99,999%.

Dominik

Also das können ja alle haben.

Dominik

Das macht dann nur 9,5.

Johannes

Das ist mein Service-Level-Agreement, ich garantiere.

Johannes

Mindestens 55,55555%

Johannes

Abteil.

Johannes

Hauptsache viele Zahlen.

Johannes

Hauptsache viele Significantages.

Johannes

Nee, das ist eben die Sache, das ist diese Krankheit.

Johannes

Man kann das machen,

Johannes

aber muss man das

Johannes

machen. Und bloß, weil das,

Johannes

und klar, das ist so vom Engineering her, ist das schon cool.

Johannes

Hast du eine Woche

Johannes

Arbeit reingesteckt, um ein Update zu machen

Johannes

und dafür hast du

Johannes

100% Availability.

Johannes

Großartig. Aber lohnt sich das?

Jochen

Ja, genau. Es gibt Fälle, wo das so ist.

Johannes

Ja, klar, es gibt Fälle, in denen das so ist.

Johannes

Aber, also ich meine, wie viele

Johannes

Engineering-Stunden

Johannes

sind eine Minute Downtime wert?

Johannes

Oder zwei Minuten? Oder fünf Minuten? Oder zehn Minuten?

Johannes

Ja.

Johannes

Das ist eine

Johannes

Frage, die man sich stellen muss. Und bloß, weil man

Johannes

das kann und weil die Techniker das machen

Johannes

wollen, ich zähle mich da ja auch dazu.

Johannes

Ich möchte auch gerne so ein cooles Deployment-System

Johannes

bauen, wo du Zero Downtime hast und

Johannes

100% Uptime und dann geht's

Johannes

aber leider doch nicht, weil du irgendwo WebSocket verbindest.

Jochen

Ich hatte ja auch mit dem Operativen

Jochen

Teil von so größeren Systemen schon irgendwie

Jochen

intensiveren Kontakt irgendwie

Jochen

vor langer Zeit. Aber...

Jochen

Damals. Damals. Ja, als wir noch jung

Jochen

waren. Aber, also

Jochen

sozusagen mein Bauchgefühl aus der

Jochen

Zeit würde sagen, es gibt

Jochen

so viele unterschiedliche Arten von Dingen,

Jochen

die man tun muss. Das kann man

Jochen

unmöglich irgendwie abstrahieren.

Jochen

Und das ist halt von der Hardware auch abhängig, die

Jochen

darunter liegt. Das ist halt, dass man das wegabstrahieren

Jochen

kann. Aber Jochen, Google macht das doch auch.

Dominik

Und wir könnten einfach ein Managed Kubernetes-Cluster

Dominik

kaufen und dann kannst du einfach zwei Pots hochschreiben und

Dominik

die, da kannst du so einen Schieberegler

Dominik

in deinem Webinterface einstellen, der sagt dann

Dominik

sieben Pots von acht bis zehn

Dominik

Uhr und danach...

Dominik

Oder Load Balanced auch, wenn die

Dominik

CPU-Auslastung über 50%

Dominik

steigt, dann skalierst du hoch.

Jochen

Geil. Okay, es kann sein, dass man das heutzutage alles

Jochen

nicht mehr braucht. Aber was wir zum Beispiel damals hatten,

Jochen

so auch bei diesen Load Balancing-Geschichten

Jochen

ist halt sowas. Was ist denn jetzt, wenn

Jochen

dein Netzwerk-Konnektivität

Jochen

asymmetrisch ist?

Jochen

Und du kannst halt...

Jochen

Ja, genau. Jetzt muss dann halt...

Jochen

Du musst ja alle gleich behandeln können. Jetzt musst du erst mal

Jochen

bitte wieder kurz erklären, was das denn bitte

Jochen

asymmetrische Netzwerke ist. So eine natürliche

Jochen

Asymmetrie in dem Verhältnis

Jochen

von wie viel Daten kommen rein, wie viel gehen raus

Jochen

bei Web. Weil es kommt halt

Jochen

einfach viel weniger rein, als raus geht.

Jochen

Ja.

Jochen

Also ein Request ist viel kleiner als die

Jochen

Antwort auf ein Request. Antwort auf ein Request ist viel größer.

Jochen

Üblicherweise ja.

Jochen

So, das heißt

Jochen

genau, dieses...

Jochen

Deswegen haben bis bei DSL,

Jochen

also wenn man halt sich überlegt, okay, wie kann ich denn jetzt

Jochen

das halt

Jochen

noch okay aussehen lassen, obwohl es eigentlich nur Klingeldraht

Jochen

ist, dann macht man das halt so asymmetrisch.

Jochen

Und auf der anderen Seite

Jochen

hat man diese Asymmetrie aber auch.

Jochen

Und das kann man dann jetzt

Jochen

dann halt zum Beispiel so nutzen, dass man

Jochen

dass man halt

Jochen

irgendwie das rausgehende Interface

Jochen

ist halt einfach viel dicker als das reinkommende.

Jochen

Weil reinkommen tut ja nicht so viel.

Jochen

Und dann kannst du zum Beispiel auch... Also wenn du jetzt so viel

Jochen

Traffic hast, dass du den eigentlich gar nicht mehr loadbalancen

Jochen

könntest, weil das ist zu viel

Jochen

für... Damals war das halt

Jochen

ein Gigabit oder so. Mehr

Jochen

kriegte man halt nicht hin.

Jochen

Und ja,

Jochen

so, heute geht wahrscheinlich ein bisschen mehr, aber

Jochen

so, das geht halt nicht.

Jochen

Dann ist es aber kein Problem, weil ich muss ja nur

Jochen

den reinkommenden Traffic loadbalancen können.

Jochen

Und der rausgehende Traffic, der

Jochen

geht halt dann über so ein Fake

Jochen

Interface

Jochen

raus und das landet dann halt alles

Jochen

irgendwie... Und das kann halt dann deutlich dicker sein.

Jochen

Das ist dann kein Problem.

Jochen

Also sowas geht dann ja alles schon nicht mehr.

Jochen

Das kannst du gar nicht mehr machen, weil...

Jochen

Also du musst ja dann alle gleich behandeln können.

Jochen

Und der Loadbalancen geht ja auch nur so,

Jochen

also es kann ja nicht so sein, dass beim Loadbalancing

Jochen

oder ich denke mal, so in Kubernetes

Jochen

kann es ja nicht sein, dass die Pakete über den einen

Jochen

Weg rein und auch über den anderen Weg rausgehen oder sowas,

Jochen

was man ja an der Stelle gerne halt...

Jochen

Das wirst du ja vielleicht über

Johannes

Netzwerk-Policies schon irgendwie hinkriegen.

Jochen

Ich weiß es nicht, aber mir scheint das so, als ob das

Jochen

irgendwie da implizit mit drin wäre,

Jochen

dass das irgendwie alles schon egal ist,

Jochen

wenn das über das Netzwerk geht. Das ist kein Problem.

Jochen

Ja, Netzwerk hast du ja immer genug.

Jochen

Ja, genau. Das glaube ich nicht.

Jochen

Also, dass das keinen Unterschied macht,

Jochen

ja, also

Jochen

okay, ich weiß es nicht, aber ich habe

Jochen

so den Verdacht, dass das dann doch vielleicht irgendwann liegt.

Jochen

Ja, aber...

Jochen

Es tropft und abölt und...

Johannes

Eine sehr schöne Sache ist halt, dass du wirklich

Johannes

diese Trennung hast zwischen...

Johannes

Also aus...

Johannes

Ich bin ja als Softwareentwickler,

Johannes

bin ich ein Anwender von dem System.

Johannes

Und ich kann einfach

Johannes

den Betrieb des Systems wegdelegieren.

Johannes

Und ich kann sagen,

Johannes

hier, ich gehe zu Amazon und kaufe mir

Johannes

einen Managed...

Johannes

Kubernetes-Cluster. Oder ich gehe zu

Johannes

Azure und kaufe mir einen Managed-Kubernetes-Cluster.

Johannes

Und dann ist es sehr einfach.

Johannes

Ich kann dann einfach sagen, hier sind meine Workloads

Johannes

und sorg bitte dafür, dass das läuft.

Johannes

Und brauche mich darum einfach nicht mehr kümmern.

Johannes

Und klar, bezahle ich da zu viel.

Johannes

Das ist bei Amazon immer so, ja.

Jochen

Ja, ja, aber gut, okay, verstehe ich auch,

Jochen

dass das Sinn machen kann, weil...

Johannes

Aber es macht mir einfach eine Sache weg.

Jochen

Wenn mein Business halt viel Geld umsetzt

Jochen

und ich dafür gar nicht so viel IT brauche

Jochen

und ich damit keine Schmerzen haben möchte

Jochen

und sage, okay...

Jochen

Ja, oder auch eine Trennung.

Jochen

Okay.

Jochen

Du kannst eine Trennung machen

Johannes

zwischen den Leuten, die die Computer betreiben,

Johannes

die sich um so unangenehme Sachen

Johannes

wie Strom und Wärme kümmern müssen

Johannes

und wer da dran darf.

Johannes

Und du hast die Entwickler,

Johannes

die eigentlich das als abstrakte

Johannes

Computergrößen sehen und wie viele

Johannes

Milli-CPUs du da brauchst.

Johannes

Ja.

Johannes

Das ist schon für...

Johannes

Aber wieder, ja, wieder für ein Unternehmen

Johannes

einer gewissen Größe.

Johannes

Ja, ja, klar.

Johannes

Und ich möchte nicht zu Hause

Johannes

auf meinem Raspberry Pi

Johannes

oder auf meinen Raspberry Pis

Johannes

einen Computer kümmern,

Johannes

weil ich einen Kubernetes-Cluster betreiben müssen,

Johannes

bloß weil ich da ein Power-VM starten möchte.

Johannes

Das mache ich halt händisch, ja.

Johannes

Oder mit irgendwelchen Tools,

Johannes

die dann dafür geeignet sind.

Johannes

Und das ist eigentlich so,

Johannes

das finde ich so das Problem

Johannes

an diesen ganzen Enterprise-Sachen.

Johannes

Ja, ja.

Johannes

Lohnt sich das überhaupt für diese Situation?

Johannes

Und es gibt viele Situationen,

Johannes

in denen Kubernetes eingesetzt wird,

Johannes

in denen es sich einfach nicht lohnt,

Johannes

weil die Last nicht groß genug ist,

Johannes

weil die...

Johannes

Weil die Inhomogenität nicht groß genug ist.

Johannes

Wenn du tausend identische Maschinen starten möchtest,

Johannes

gibt es einfachere Wege.

Johannes

Wenn du 50 Maschinen starten möchtest,

Johannes

gibt es einfachere Wege.

Dominik

Du musst kurz so einen kleinen Elevator machen.

Dominik

Warum?

Johannes

Ja, es gibt ja ganz viele Workloads,

Johannes

die sehr computer-heavy sind.

Johannes

Wir hatten mal so ein...

Johannes

Ich war mal in so einem Projekt in Norwegen,

Johannes

wo wir einfach eine Berechnung durchführen mussten

Johannes

und wir hatten nicht viel Zeit

Johannes

und wir hatten aber terabyteweise Daten.

Johannes

Und eine Möglichkeit, die du da hast,

Johannes

ist halt, das zu verteilen.

Johannes

Du sagst, okay, wir nehmen halt mehr Computer,

Johannes

weil du mehr CPUs brauchst.

Johannes

Und diese Arbeitslast

Johannes

oder diese Dinge, die wir berechnet haben,

Johannes

die waren auf jedem Computer gleich.

Johannes

Das heißt, das ist dann sehr einfach,

Johannes

in Ansible zu gehen oder in Salt

Johannes

oder in Terraform oder in sonst was

Johannes

und halt nicht nur eine Host-Adresse zu hinterlegen,

Johannes

sondern 100.

Johannes

Und dann auf diesen 100 Hosts

Johannes

oder 1000 IP-Adressen,

Johannes

1000 IP-Adressen zu hinterlegen, ja.

Johannes

Und zu sagen, starte bitte auf allen diesen Rechnern,

Johannes

in diesem Inventory, diese Workload.

Johannes

Da brauche ich keinen Kubernetes dafür.

Dominik

Ja, aber die müssen ja trotzdem irgendwie das I.O. kümmern.

Dominik

Also wo kommt das halt her?

Dominik

Ja, gut, klar, das musst du dann immer noch managen.

Johannes

Aber das ist dann bei allen gleich.

Johannes

Und das ist das, worauf ich raus möchte.

Johannes

Wenn du 1000 identische Dinge hast,

Johannes

dann reicht ein Ansible.

Johannes

Und das ist auch nicht mal kompliziert,

Johannes

weil die alle gleich konfiguriert sind.

Johannes

Das...

Johannes

Kubernetes hat einen bestimmten Anwendungsfall

Johannes

und der ist, du hast viele verschiedene Workloads,

Johannes

die aber alle Compute-ähnlich sind

Johannes

auf vielen verschiedenen Maschinen,

Johannes

die aber Compute-ähnlich sind.

Johannes

Das muss man noch mal genau erklären.

Johannes

Auf vielen verschiedenen Leuten.

Johannes

Also vielleicht so ein reales Beispiel.

Jochen

Und am besten, am besten...

Jochen

Also auch das, würde ich denken, geht eigentlich noch sehr gut.

Jochen

Es sei denn, du hast jetzt noch...

Jochen

Die Software läuft auf sehr unterschiedlichen Betriebssystemen,

Jochen

in sehr unterschiedlichen Alterungs...

Jochen

Ja, von vielen verschiedenen Teams.

Jochen

...Verwesungsstufen auf verschiedenen Teams,

Jochen

weil dann, sodass du halt nicht sagen kannst,

Jochen

ah, ich deploye das jetzt auf eine homogene Geschichte,

Jochen

sondern man sagen muss, das geht nur mit Docker,

Jochen

das geht nicht anders, weil das halt einfach zu unterschiedlich ist.

Jochen

Ja, aber das machen Entwickler sowieso.

Jochen

Ja, das machen wir nach Docker, nur du willst das nicht.

Jochen

Na gut.

Jochen

Ja, aber dann verstehe ich das.

Jochen

Also wenn man sagt, okay, ich mache hier auf der einen Seite

Jochen

irgendwie, keine Ahnung, ein Headless-QT

Jochen

in einer sehr alten Version,

Jochen

weil ich das für irgendwas sehr Spezielles brauche.

Jochen

Und hier habe ich jetzt irgendwie, keine Ahnung,

Jochen

ein aktuelles Nix-OS und da habe ich hier ein Debian

Jochen

und das muss ich aber alles gleich auf dem gleichen Klasse.

Johannes

Und Java 17 und 18 und 21 und 8 und 2.

Jochen

Ja, und für alte Sachen, weil da sind alle Programmierer schon gestorben,

Jochen

da muss ich das, muss ich aber weiter betreiben.

Jochen

Deine Kobo-Docker-VM.

Jochen

Ja, ja, okay, okay.

Jochen

Dann, ja.

Johannes

Eine AS400-Docker-VM.

Johannes

Ja.

Johannes

Ja, also das ist...

Johannes

Also nochmal, Anwendungsfall bitte noch einmal.

Johannes

Du wolltest das kurz nochmal erläutern.

Dominik

Also was denn da...

Dominik

Ganz heterogen sind.

Dominik

Okay, aber...

Dominik

Ja, also zum Beispiel Google, ja.

Johannes

Google betreibt 35.000 verschiedene Services

Johannes

auf ihren 8 Millionen Computern oder was weiß ich.

Johannes

Und dann ist das großartig,

Johannes

weil dann kannst du einfach sagen,

Johannes

okay, es gibt jetzt eine Mannschaft,

Johannes

eine große Mannschaft, die sorgt dafür,

Johannes

dass diese Computer laufen und ans Netzwerk angeschlossen sind

Johannes

und dass die in den Kubernetes-Cluster eingeordnet sind

Johannes

und das ist deren Spezialität.

Johannes

Und auf der anderen Seite hast du eine Mannschaft von Softwareentwicklern,

Johannes

die halt auf diesem einen großen Computer,

Johannes

diesen Kubernetes-Computer-Workloads starten dürfen.

Johannes

Also die da VMs starten dürfen.

Johannes

Und zwar egal, welche sie wollen, ja.

Johannes

Und klar, wenn du 5.000 verschiedene Teams hast,

Johannes

die eben diese 5.000 verschiedenen Sachen starten,

Johannes

dann ist das großartig.

Johannes

Dann willst du nicht mehr jedem einzelnen Entwickler sagen müssen,

Johannes

okay, du kriegst jetzt die VM und du kriegst die VM

Johannes

und du kriegst die VM.

Johannes

Sondern du willst einfach sagen...

Johannes

Wir machen einfach einen großen Computer-Mischmasch

Johannes

und einen großen Kubernetes-Cluster

Johannes

und hier ist dein Quota

Johannes

und innerhalb des Quotas darfst du machen,

Johannes

was du willst.

Johannes

Bist du verantwortlich.

Johannes

Das heißt, du hast einfach diese Trennung

Johannes

zwischen den Computern, die das betreiben

Johannes

und der Software, die da laufen soll.

Johannes

Und wo die dann läuft,

Johannes

das kannst du ja meistens gar nicht sagen.

Johannes

Du kannst meistens gar nicht sagen,

Johannes

ich habe jetzt hier einen Pod,

Johannes

also eine Docker-VM,

Johannes

die hier laufen soll.

Johannes

Du kannst vielleicht sagen,

Johannes

die soll in einer bestimmten Zone laufen

Johannes

oder in einem bestimmten Cluster

Johannes

oder in einem bestimmten Datacenter.

Johannes

Aber manchmal nicht mehr das, ja.

Johannes

Wenn du einen Kubernetes-Cluster hast,

Johannes

der über viele Datacenter verteilt ist,

Johannes

dann...

Johannes

Kannst du höchstens noch sagen,

Johannes

du willst, dass die möglichst weit voneinander entfernt sind

Johannes

oder du willst, dass sie möglichst nah aneinander dran sind.

Johannes

Aber wo die dann laufen...

Johannes

Ich hätte gern mehr...

Johannes

Das ist diesen Schalter,

Johannes

den muss doch...

Jochen

Ich hätte gern mehr Netzwerk-Latenz.

Jochen

Das ist doch immer gut.

Jochen

Größere Zahlen besser,

Jochen

mehr Netzwerk-Latenz hinter meinen Microservices.

Jochen

Das muss einfach...

Jochen

Das muss doch Spaß machen.

Jochen

Und ganz ehrlich,

Jochen

für mich als Anwendungsentwickler

Johannes

ist es auch völlig egal, wo das läuft.

Johannes

Solange das halt läuft.

Johannes

Ja, ja.

Jochen

Na, also ich weiß nicht.

Jochen

Ich habe halt doch...

Jochen

Von der Erfahrung her würde ich...

Jochen

Es gibt halt Infrastruktur,

Jochen

die gut funktioniert.

Jochen

Und es gibt halt Infrastruktur,

Jochen

die nicht gut funktioniert.

Jochen

Und das hat,

Jochen

meiner Erfahrung nach,

Jochen

weniger damit zu tun,

Jochen

ob man jetzt Kubernetes verwendet

Jochen

oder, keine Ahnung,

Jochen

irgendwas anderes,

Jochen

sondern eher damit,

Jochen

welche Leute die betreiben.

Jochen

Ich sage zum Beispiel...

Jochen

Oh Gott, das hört sich so an wie...

Jochen

Ihr seid alle blöd

Jochen

und ihr könnt es nicht.

Jochen

Ja, aber mit dem Alter...

Jochen

Also das ist halt auch sowas.

Jochen

Ich weiß nicht,

Jochen

vielleicht werde ich auch einfach alt.

Jochen

Das kann auch sein.

Jochen

Aber früher hätte ich gedacht...

Jochen

Oh je, du willst wissen,

Jochen

wo deine Programme laufen.

Jochen

Nee, ja.

Jochen

Also früher hätte ich gedacht,

Jochen

also Prozesse,

Jochen

beim Softwareentwickeln Prozesse,

Jochen

ganz wichtig.

Jochen

Und das total...

Jochen

Wenn man es richtig macht,

Jochen

dann ist das voll gut.

Jochen

Und wenn man es falsch macht,

Jochen

dann ist alles eine Katastrophe.

Jochen

Und irgendwie Engineering total super,

Jochen

wenn man da halt nur die richtigen Tools verwendet.

Jochen

Und dann geht alles super.

Jochen

Und wenn man halt das Falsche macht...

Jochen

Und heute denke ich mir eher so,

Jochen

ja gut,

Jochen

die Sachen, die ich gesehen habe,

Jochen

die wirklich gut funktioniert haben,

Jochen

teilweise war das Engineering sehr grottig.

Jochen

Möglicherweise auch deswegen,

Jochen

also einfach von der Zeit her geschuldet,

Jochen

weil man hatte nichts Besseres.

Jochen

Also ich, wie gesagt...

Jochen

Wir hatten ja damals nichts anderes.

Jochen

Wir hatten, also ich kann mich noch erinnern,

Jochen

ich sage vielleicht besser nicht bei wem,

Jochen

aber da lief die ganze Operations-Geschichte

Jochen

halt über Shell-Skripte,

Jochen

die von einem gemeinsam gemounteten

Jochen

NFS-Ding halt liefen und so.

Jochen

Wo man sich sagt,

Jochen

oh mein Gott,

Jochen

das ist ja alles total schrecklich.

Jochen

Aber das war es nicht.

Jochen

Es war ziemlich cool.

Jochen

Das hat richtig gut funktioniert.

Jochen

Das hat richtig gut funktioniert alles.

Jochen

Es hat richtig,

Jochen

auch mit richtig vielen...

Johannes

Da habe ich selber ein Proto-Kubernetes gebaut.

Johannes

Ja, das war kein Kubernetes.

Johannes

Das war irgendwie...

Jochen

Und die Shell-Skripte waren auch teilweise ein bisschen...

Jochen

Aber es war...

Jochen

Das hat richtig gut funktioniert.

Jochen

Und ich habe auch schon Kubernetes gesehen.

Jochen

Auch große Infrastruktur,

Jochen

großes Unternehmen mit groß viel...

Jochen

Und das war scheußlich,

Jochen

weil man hatte...

Jochen

Also dieses Versprechen wurde nicht eingelöst,

Jochen

dass halt man sich nicht mehr darum kümmern muss,

Jochen

sondern ein größerer Anteil der Zeit,

Jochen

als ich das gemacht habe,

Jochen

als ich mir oft hätte,

Jochen

muss ich mich damit verbringen,

Jochen

warum der Kram denn jetzt nicht so funktioniert,

Jochen

wie ich mir das denke

Jochen

und was denn da jetzt das Problem ist

Jochen

und warum ich das nicht sehen kann,

Jochen

was da das Problem ist,

Jochen

weil ich es nicht darf.

Dominik

Da musst du so ein bisschen ranchern oder so.

Dominik

Ja, genau, weil du es nicht darfst.

Johannes

Weil du es nicht sollst

Johannes

und deshalb darfst du es auch nicht.

Johannes

Ja, und dann versuchen wir mit den Leuten zu reden,

Johannes

die verantwortlich sind

Johannes

und dann denkt man sich so...

Johannes

Und Performance und Latenz sind auch so Sachen,

Johannes

wo du halt einfach plötzlich viel weniger Einblick reinhörst.

Johannes

Ja, genau.

Johannes

Man sieht einfach viel weniger,

Jochen

was ja kann ja ein Feature sein,

Jochen

aber...

Jochen

Ja, klar.

Johannes

In vielen großen Organisationen ist es ja ein Feature.

Johannes

Du willst die Leute nicht zu nah

Johannes

an die gefährlichen Dinge ranlassen.

Johannes

Also lieber schlecht betrieben,

Johannes

als gar nicht betrieben.

Johannes

Ja, aber...

Johannes

Operation ist Schlüssel.

Jochen

Also es wäre einfach so,

Jochen

es ist halt,

Jochen

wenn das Leute sind,

Jochen

die das betreiben,

Jochen

die das halt irgendwie,

Jochen

denen das Spaß macht,

Jochen

die da Interesse dran haben,

Jochen

die das irgendwie auch versuchen zu optimieren,

Jochen

die sich da reinfuchsen oder so,

Jochen

dann kann es sein,

Jochen

dass die halt auch,

Jochen

keine Ahnung,

Jochen

mit einem Stock und einem Feuerstein

Jochen

irgendwie den Raum warmen.

Jochen

Kriegen, ja?

Jochen

Während halt irgendwie,

Jochen

also keine Ahnung,

Jochen

dann irgendwie,

Jochen

weil es gibt halt Leute,

Jochen

die nehmen halt den Schaufelradbagger

Jochen

und baggern halt das falsche Dorf weg.

Jochen

Ja, das ist halt irgendwie so,

Jochen

das muss nicht unbedingt dann besser sein,

Jochen

wenn man ein besseres Tool hat,

Jochen

wenn man halt,

Jochen

wenn die falschen Leute das steuern.

Jochen

Das ist halt, ja.

Johannes

Das ist aber so ein bisschen eine Tautologie,

Johannes

oder Jochen?

Johannes

Also die guten Leute kriegen Dinge gut hin

Johannes

und die schlechten Leute kriegen Dinge schlecht hin.

Johannes

Ja, aber ich glaube,

Jochen

aus so einer 10.000 Fuß irgendwie,

Jochen

weiß ich nicht,

Jochen

Übersichtsperspektive,

Jochen

sieht das halt zu einfach aus.

Jochen

Das sieht halt so aus,

Jochen

wie wir machen das,

Jochen

was alle machen

Jochen

und das funktioniert dann schon.

Jochen

Wir haben auch viel Geld ausgegeben jetzt.

Jochen

Ja.

Jochen

Dann muss das auch gut sein.

Jochen

Ja, aber vielleicht funktioniert es auch nicht.

Jochen

Und zwar aus anderen Gründen,

Jochen

als man jetzt sagte.

Jochen

Also ich muss sagen,

Jochen

aus Anwendungsentwicklersicht,

Jochen

ich finde es sehr angenehm,

Jochen

weil ich einfach nur noch sagen muss,

Jochen

hier ist ein Docker-Image,

Jochen

sorgt dafür, dass das läuft.

Jochen

Ja.

Jochen

Und dann.

Jochen

Der Rest ist dir egal.

Jochen

Der Rest ist mir egal, ja.

Dominik

Du hast einen Passierschein unterschrieben.

Dominik

Irgendjemand anders ist dafür verantwortlich.

Dominik

Ja, aber was passiert denn,

Dominik

wenn das nicht,

Dominik

also funktioniert das dann tatsächlich auch?

Dominik

Also ich meine,

Jochen

dann wäre das ja wahrscheinlich ein Fall für,

Jochen

das betreiben dann halt auch Leute,

Jochen

die sich da irgendwie.

Jochen

Ja, Amazon, AWS.

Jochen

Ja, aber okay.

Jochen

Ja, die können das wahrscheinlich sogar.

Jochen

Azure, ja, ist genauso.

Jochen

Ja, da habe ich dann schon häufiger gehört,

Jochen

dass das vielleicht dann.

Jochen

Kriegt man bei Google Compute

Jochen

oder bei Google Cloud,

Johannes

kriegt man da auch Kubernetes-Kluster?

Johannes

Ja, ja.

Johannes

Kriegt man da auch Kubernetes-Kluster mit?

Johannes

Okay.

Johannes

Ja.

Johannes

Wäre ich mir jetzt aber nicht so sicher,

Johannes

ob die gut sind.

Johannes

Weiß ich auch nicht.

Johannes

Also bei Azure habe ich auch schon gehört,

Johannes

dass da waren Leute auch nicht so,

Johannes

so etwas unter.

Johannes

Ja, gut.

Johannes

Dann bezahlst du halt bei dem großen A,

Johannes

zahlst halt auch den Premium-Preis.

Dominik

Ja, das ist schon alles nicht günstig.

Dominik

Aber es ist halt die Frage,

Dominik

wenn man das eh bezahlen kann.

Dominik

Egal.

Dominik

Ja, genau.

Dominik

Möchtest du vielleicht noch einen Manager haben,

Dominik

der vielleicht nicht so technisch affin ist,

Dominik

der aber dann so ein Load-Binding-Scene

Dominik

mal kurz in einem Web-Interface hochschieben kann,

Dominik

weil der gerade eine Spitze am Wochenende erwartet oder so?

Johannes

Ja, das ist aber so ein bisschen der Trend, oder?

Johannes

Dass du weggehst von den eigenen Data-Centern

Johannes

und hin in die Cloud.

Johannes

Ja, das ist ja das Versprechen der Cloud,

Johannes

dass das jemand anders für dich besser managt.

Johannes

Ich.

Johannes

Ich unterschreibe das nicht immer so.

Johannes

Und ich glaube auch nicht,

Johannes

dass das immer eine gute Idee ist,

Johannes

in die Cloud zu gehen.

Johannes

Und ich glaube auch nicht,

Johannes

dass es immer billiger ist,

Johannes

in die Cloud zu gehen.

Johannes

Ganz im Gegenteil.

Johannes

Ja.

Johannes

Aber es ist der Trend gerade.

Johannes

Es ist der Trend weg vom eigenen Data-Center hin zu.

Johannes

Das Hauptproblem ist halt,

Dominik

wenn du eine Konzernstruktur hast

Dominik

mit einer sehr heterogenen Infrastruktur-Welt,

Dominik

dann ermöglicht dir halt dieser Weg in die Cloud

Dominik

eine Homogenisierung deines ganzen Geschäfts.

Dominik

Ja, aber für Geld.

Dominik

Ja, natürlich für Geld.

Dominik

Und danach kannst du vielleicht wieder hingehen

Dominik

und kannst es wieder machen.

Dominik

Und kannst es wieder lokal machen.

Dominik

Aber diese Fortentwicklung quasi,

Dominik

dass halt diese ganzen heterogenen Teams

Dominik

alle abgelöst werden müssen durch was Neues,

Dominik

da verlierst du natürlich Know-how.

Dominik

Es ist vielleicht auch.

Dominik

Aber du kannst halt so Prozesse,

Dominik

Skaleneffekte erzeugen irgendwie.

Dominik

Und dann vielleicht doch merken,

Dominik

wo du halt was nicht mehr so brauchst.

Dominik

Ja, ich weiß nicht.

Jochen

Also dieses Skaleneffekte erzeugen klingt ganz falsch.

Johannes

Ja, das hört sich immer gut an.

Johannes

Also ja, das klingt gut.

Johannes

Das hört sich in so Business-Präsentationen immer gut an.

Johannes

Aber funktioniert das wirklich?

Johannes

Also da habe ich so meine...

Johannes

Ich glaube tatsächlich,

Johannes

dass das so eine Cost-Center-Frage ist.

Johannes

Naja, aber ich glaube,

Dominik

du kriegst halt die Leute dazu,

Dominik

dass sie dann das alles Gleiche machen müssen.

Dominik

Du fährst halt dann vier Hunden runter,

Dominik

was du halt vorgemacht hast,

Dominik

selbst wenn es gut war, möglicherweise, ja.

Dominik

Aber du hast alle auf dem gleichen Stand.

Dominik

Also du würdest sagen,

Johannes

der kleinste gemeinsame Nenner ist immer noch besser,

Johannes

als wenn du...

Johannes

Nein, das würde ich nicht sagen.

Dominik

Das kann notwendig sein für bestimmte Dinge halt.

Dominik

Also auch für eine Bewegung.

Dominik

Weil das Problem ist ja,

Dominik

dass du gerade in so Konsensusstunden

Dominik

oft so Silos hast, die sich halt bilden,

Dominik

die politisch sind

Dominik

und die sich nicht mehr aufbrechen lassen,

Dominik

außer mit Gewalt.

Dominik

Und das ist halt eine der Methoden...

Jochen

Ja, soziale Probleme mit Technik lösen.

Jochen

Wertes Prinzip funktioniert immer super.

Jochen

Ganz einfach.

Dominik

Ja, aber du hast diese Silos halt tatsächlich aufgebrochen

Dominik

und du brauchst halt dann tatsächlich,

Dominik

musst du halt wieder von vorne anfangen.

Dominik

Du kannst das wieder neu bauen, ne?

Jochen

Ja, es kommt wahrscheinlich drauf an.

Jochen

Aber ich würde auch,

Jochen

ich würde immer dazu sagen,

Jochen

also klar, okay,

Jochen

das mag sein, dass das alles super ist

Jochen

und es kann sein,

Jochen

dass das, wenn man das an AWS oder sonst wen gibt,

Jochen

dass es dann besser ist,

Jochen

als das, was vorher da war

Jochen

und dass man diese...

Jochen

Ja, vielleicht.

Jochen

Kann alles sein.

Jochen

Vielleicht ist das dann auch super viel besser als vorher.

Jochen

Und wenn du so Spitzen hast,

Jochen

kann es ja auch sein,

Johannes

dass du da mehr machen kannst,

Johannes

als du vorher machen kannst.

Johannes

Ja, weil du halt einfach

Johannes

ungeheuer viel Kapazität jetzt kurz...

Jochen

Aber ich würde immer mit dazu sagen wollen,

Jochen

dass es halt auch so Dinge gibt,

Jochen

wie eben Stack Overflow zum Beispiel,

Jochen

die das halt in einem halben Rack machen.

Jochen

Ja.

Jochen

Und einer der Gründe,

Jochen

warum sie das können,

Jochen

ist halt,

Jochen

dass da jemand irgendwie

Jochen

ein totaler Switch-Nerd ist

Jochen

und sich halt mit dem Netzwerk-Kram auskennt.

Jochen

Und das wäre...

Jochen

Das kannst du nie...

Jochen

Dieses System kannst du in keine Cloud deployen,

Jochen

weil die hat halt die Hardware nicht.

Jochen

Und die haben auch nicht die Kenntnisse

Jochen

über das, was man da...

Jochen

Die können das nicht.

Jochen

Willst du damit sagen,

Jochen

die können das nicht?

Jochen

Ja, bei bestimmten Sachen,

Jochen

die man da so in den Spannungsnäht,

Jochen

wenn die irgendwie so ein Redis

Jochen

irgendwie im Nisch dahin hängen,

Jochen

dann müssen die manuell hingehen

Jochen

und dann musst du eine halbe Stunde warten,

Jochen

weil irgendjemand da runter rennt

Jochen

und das Rack reinschiebt oder so, ja.

Jochen

Ja, das ist dann vielleicht noch viel schlechter.

Jochen

Ja, man muss ja planen vorher.

Jochen

Ich glaube auch,

Jochen

Stack Overflow ist inzwischen tatsächlich

Jochen

irgendwie irgendwo hin in eine Cloud umgezogen.

Jochen

Insofern kann ich das auch vielleicht

Jochen

nicht mehr als Beispiel...

Jochen

Nicht mehr das beste Beispiel.

Jochen

Aber sagen wir so,

Jochen

für viele, die halt unterhalb

Jochen

der Google-Größe sind

Jochen

oder, weiß ich nicht,

Jochen

konzernpolitische Probleme haben.

Jochen

Gibt es so kleine?

Jochen

Könnte sein,

Jochen

dass manchmal vielleicht der eine oder andere

Jochen

hat schon mal sowas gesehen.

Dominik

Was mich ja auch noch interessiert,

Dominik

also ich meine,

Dominik

hey, dann haben wir jetzt

Dominik

so ein Managed Criminalist Cluster

Dominik

irgendwie gemietet,

Dominik

aber wie kriege ich denn vom Entwickler

Dominik

den Pod dahin?

Johannes

Ja, da gibt es verschiedene Möglichkeiten.

Johannes

Ah ja, Moment,

Johannes

aber jetzt sind wir ja irgendwie

Johannes

wieder bei so einem anderen Thema.

Johannes

Das müssen wir irgendwie

Johannes

so eine Kette haben,

Johannes

so eine CI,

Johannes

die das dann baut

Johannes

oder das dahin deployt

Johannes

oder auf dem Branch.

Johannes

Nee, da gibt es wieder

Johannes

verschiedene Möglichkeiten.

Johannes

Also ich meine,

Johannes

du kannst es natürlich

Johannes

prinzipiell manuell machen.

Johannes

Yay.

Johannes

Großartig.

Johannes

Ist auch genau der Verwendungszweck.

Johannes

Ja, genau.

Johannes

Von so einem völlig

Johannes

automatisierten System.

Johannes

Ey, einmal bitte hier

Johannes

diesen Pod bitte neu.

Johannes

Dann musst du halt einmal starten.

Johannes

Oder du hast ein CI-System,

Johannes

ja, was das dann halt irgendwie

Johannes

einen Push.

Johannes

Oder du hast ein Jenkins-System

Johannes

oder du hast ein was-weiß-ich-System.

Johannes

Wo kriegt man dieses CI-System her?

Johannes

Das kannst du auch mieten.

Johannes

Ja, ach so.

Johannes

Automatisch.

Johannes

Du betreibst es

Johannes

auf deinem Kubernetes-Cluster.

Johannes

Aha.

Dominik

Ach so, das ist ein Drone.

Dominik

Habe ich tatsächlich gesehen.

Dominik

Also ich meine,

Johannes

dass du Jenkins

Johannes

auf einem Kubernetes-Cluster startest.

Johannes

Oder ein Drone-CI oder sowas?

Johannes

Ja, oder irgendein CI.

Johannes

Ja, da gibt es halt tausende.

Johannes

Egal, genau.

Johannes

Da gibt es ganz viele.

Johannes

Also das ist dann,

Johannes

also nochmal,

Johannes

ein CI ist noch wie

Johannes

so ein anderer Server,

Johannes

auf dem eigentlich

Johannes

nichts anderes passiert.

Johannes

Also irgendwie sind so

Johannes

Diplom-Skript-Ablaufen oder?

Johannes

Ja, das kommt drauf an.

Johannes

Also ich meine,

Johannes

kann man auf verschiedene Arten

Johannes

und Weisen verwenden.

Johannes

Das Erste, was du machst,

Johannes

ist ja Continuous Integration.

Johannes

Ja.

Johannes

Ja.

Johannes

Das heißt,

Johannes

da hast du auf jeden Fall

Johannes

deine Tests laufen

Johannes

und deine Checks.

Dominik

Und dann musst du eigentlich

Dominik

noch irgendwie.

Johannes

Also die Integration heißt ja nur,

Johannes

dass du immer

Johannes

eine getestete Version hast.

Johannes

Und der nächste Schritt

Johannes

ist dann Continuous Deployment.

Johannes

Delivery, oder?

Johannes

Delivery oder Deployment.

Johannes

Ich meine Delivery.

Johannes

Irgendwas mit D halt.

Johannes

CD, C-I-C-D.

Johannes

Dass du eben diese

Johannes

Continuous Delivery

Johannes

oder Deployment machst.

Johannes

Wo du halt sagst,

Johannes

gut, jedes Mal,

Johannes

wenn eine fertig gebaut ist

Johannes

und korrekt,

Johannes

korrekt getestet,

Johannes

dann kannst du ja auch

Johannes

gleich ausrollen.

Johannes

Aber ich frage jetzt halt,

Johannes

wer sagt denn genau,

Johannes

korrekt getestet?

Johannes

Sind das nur die automatischen Tests,

Johannes

die durchlaufen müssen

Johannes

oder muss noch irgendwie

Johannes

mal das abnehmen?

Johannes

Ja gut, es kommt drauf an.

Johannes

Kommt drauf an.

Johannes

Aber muss noch jemand

Johannes

auf den grünen Knopf drücken

Johannes

oder nicht?

Johannes

Okay, aber das ist genau der Punkt,

Johannes

da muss halt so verschiedene Systeme

Johannes

dann gebaut werden.

Johannes

Das muss ja dann

Johannes

irgendwer dann wieder übernehmen

Johannes

und das muss halt dann eigentlich,

Johannes

wie das halt gestartet wird.

Johannes

Also ich würde sagen,

Johannes

ideal wäre es,

Johannes

du hast einen Production Branch

Johannes

irgendwie und du pushst dann irgendwie

Johannes

und dann gibt es eine Action

Johannes

auf deinem GitHub

Johannes

oder auf deinem GitLab,

Johannes

die dann das Ding anspricht.

Johannes

Ja, das ist ja schon

Johannes

sehr spezifisch.

Johannes

Das ist viel zu spezifisch

Jochen

für deine Umgebung.

Jochen

Da gibt es viele,

Jochen

da kann ich mir viele

Jochen

verschiedene Umgebungen vorstellen,

Jochen

wo das sowas nicht geht.

Jochen

Oder wo du es auch

Jochen

nicht machen darfst

Jochen

oder wo du es auch

Jochen

nicht machen kannst.

Jochen

Oh, wie machen wir das denn dann?

Jochen

Ja, mit anderen Prozessen.

Jochen

Ja, aber davon hat doch

Jochen

vorhin geschrieben drüber,

Jochen

dass du Prozesse haben musst

Jochen

und dass das dann,

Jochen

wenn du genügend Prozesse hast.

Jochen

Ja, aber das ist ja genau der Punkt,

Jochen

da muss er sich irgendwie

Jochen

dann umkümmern,

Jochen

da muss er ja dann was machen,

Jochen

da brauchst du ja wieder

Jochen

Also, sag mal so,

Jochen

das kann auch

Jochen

ein Entwicklungsteam machen.

Jochen

So ist es ja nicht.

Jochen

Ja, aber du brauchst halt

Jochen

ein Team, genau.

Jochen

Und du brauchst halt jemanden,

Jochen

der sich damit auskennt.

Jochen

Auf jeden Fall muss das

Jochen

ein Entwicklungsteam sein.

Jochen

Wenn das aber jemand

Jochen

sich damit nicht auskennt,

Jochen

dieser ganze Quatsch

Jochen

irgendwie gar nicht da ist,

Dominik

wie, ja, dann hast du

Dominik

das Problem.

Dominik

Ja, gut, also wie gesagt,

Dominik

alleine möchte ich das

Dominik

nicht betreiben müssen

Dominik

und alleine möchte ich es

Dominik

mir auch nicht ausdenken müssen.

Johannes

Aber als Entwickler

Johannes

in einem großen Konzern

Johannes

ist das doch bequem,

Johannes

weil da gibt es ja die Leute

Johannes

schon, die das machen.

Johannes

Ach, da gibt es die schon?

Johannes

Ja, klar.

Johannes

Oh ja, wirklich?

Johannes

Außer du bist in der Abteilung,

Johannes

die das macht.

Johannes

Dann kannst du noch nicht.

Johannes

Ja, DevOps.

Johannes

Aber dann ist es besser auch,

Johannes

irgendwas, was du kannst.

Johannes

Irgendwer kann bestimmt

Johannes

DevOps oder so.

Johannes

Nee, das ist ja tatsächlich

Johannes

mehr Ops.

Johannes

Das ist ja nicht DevOps.

Johannes

Nicht DevOps, nur Ops.

Johannes

Das ist ja nur Ops, genau.

Johannes

Du sorgst ja nur dafür,

Johannes

dass der Cluster da ist

Johannes

und auch funktioniert.

Johannes

Die DevOps-Schicht

Johannes

ist ja eine oben drüber.

Johannes

Ja, aber das CICD

Dominik

ist DevOps, oder?

Dominik

Ja, genau.

Dominik

Aber das ist ja

Dominik

in den Anwendungsteams,

Dominik

weil die entscheiden müssen,

Dominik

was zu ihnen passt.

Dominik

Aber wenn du jetzt

Dominik

nur Devs hast,

Dominik

die kein Ops können,

Dominik

dann ...

Dominik

Ja, gut.

Dominik

Aber das musst du

Dominik

auf der Scale,

Dominik

wo du so einen Cluster einsetzt,

Dominik

musst du davon ausgehen,

Dominik

dass du dann halt auch

Dominik

das machen musst.

Dominik

Ja, genau.

Dominik

Aber das ist genau der Punkt.

Dominik

Ich glaube,

Dominik

das ist bei vielen so.

Dominik

Die denken halt,

Dominik

hey, ich kaufe mir jetzt

Dominik

so einen Managed Kubernetes Cluster

Dominik

und dann habe ich ...

Dominik

Ja, muss ich gar nichts mehr machen.

Dominik

Genau.

Dominik

Und dann die Arbeit,

Dominik

das passt schon irgendwie.

Dominik

Und die vergessen diesen ...

Dominik

Ja, gut.

Johannes

Das kann auch gut

Johannes

und schlecht sein, ja.

Johannes

Also das,

Johannes

was ich vorhin meinte

Johannes

mit dieser Cost-Center-Mentalität,

Johannes

dass du halt sagst,

Johannes

okay, früher haben wir

Johannes

ein Data-Center betrieben

Johannes

und es war so teuer

Johannes

und heute betreiben wir Cloud

Johannes

und dann ist das verteilt

Johannes

auf die Teams

Johannes

und jedes hat seinen Quota

Johannes

und dann muss jedes Team

Johannes

die Kosten tragen

Johannes

und ist selber verantwortlich.

Johannes

Und die Kosten sind aber

Johannes

immer noch da

Johannes

und die sind höher.

Johannes

Nur hast du sie jetzt

Johannes

anders verteilt,

Johannes

sodass du sie nicht mehr

Johannes

in einer Spalte siehst,

Johannes

sondern halt im Team

Johannes

auf die Teams

Johannes

oder auf die Anwendung

Johannes

oder wie auch immer du es spielst.

Johannes

Ja, aber dann hast du

Johannes

im Controlling

Johannes

die Aggregationsspalte vergessen.

Johannes

Ja, genau.

Johannes

Beziehungsweise die ist halt

Johannes

jetzt woanders.

Johannes

Die ist nicht mehr

Johannes

im Data-Center-Kosten-Center,

Johannes

sondern im Development-Center.

Jochen

Das ist halt da möglicherweise

Jochen

eine ganz andere Seite

Jochen

der Bilanz halt.

Jochen

Ja, aber das ist ja eigentlich

Jochen

vom Controlling ja eher so Fail,

Jochen

weil eigentlich müssen ja auch

Jochen

Tickets und das hier

Jochen

irgendwie erlöst werden.

Jochen

Ja, aber das ist real.

Jochen

Ja, ja, ich glaube auch,

Jochen

solche Fails haben

Jochen

reale Konsequenzen.

Jochen

Also ob du das jetzt,

Jochen

also genau,

Jochen

es kann sein,

Jochen

dass auf der einen Seite

Jochen

Am Ende des Tages

Jochen

bezahlst du es ja auch immer noch.

Jochen

Du zahlst halt irgendwie

Jochen

einen guten Teil

Jochen

deines Umsatzes

Jochen

an Amazon

Jochen

oder an Microsoft

Jochen

oder so

Jochen

und du zahlst halt

Jochen

und du zahlst halt

Jochen

und das wird verbucht

Jochen

als Investition,

Jochen

die halt,

Jochen

wo irgendwie Geld zurückkommt,

Jochen

was falsch ist.

Jochen

Ist ja auch so.

Jochen

Also vielleicht, ja.

Jochen

Beziehungsweise du könntest

Jochen

dir weniger investieren

Jochen

und könntest trotzdem

Jochen

genauso viel umsetzen.

Jochen

Und auf der anderen Seite

Jochen

sieht das so aus wie,

Jochen

oh, das ist halt,

Jochen

das sind halt bloß Kosten,

Jochen

die da rausgehen und

Jochen

Da brauchst du Leute,

Jochen

die da hingehen

Jochen

und ein Gebäude,

Johannes

das ist ja sowieso tote Kosten

Johannes

und dann brauchst du Hardware

Johannes

und was machst du mit der

Johannes

nach zwei Jahren,

Johannes

wenn du die nicht mehr

Johannes

verkaufen kannst?

Johannes

Strom und Kühlung

Johannes

und diese ganzen Kosten,

Johannes

die der da hat.

Johannes

Du musst halt irgendwie

Johannes

einen Teil

Johannes

Das ist doch der klassische

Johannes

Kauf versus Mieten.

Johannes

Ja, genau,

Johannes

aber wo findest du genau

Johannes

das intern?

Johannes

Also du bist jetzt mal

Johannes

ein Konzern, ne?

Johannes

Du hast jetzt von Tech

Johannes

keine Ahnung.

Johannes

Die verkaufen ihr Zeugs

Johannes

und mieten es zurück

Johannes

zu einem teureren Preis.

Johannes

Ja, aber du hast

Johannes

von Tech keine Ahnung.

Dominik

Du machst halt irgendwas

Dominik

anderes und dann musst du

Dominik

eigentlich so ein,

Dominik

brauchst du irgendwas

Dominik

mit Cloud.

Dominik

Dann hast du überlegt,

Dominik

okay, du musst jetzt

Dominik

irgendwie Anwendung,

Dominik

wir sind jetzt irgendwie

Dominik

so ein globaler Konzern.

Dominik

Ja, ja, genau.

Dominik

Irgendwas mit Cloud.

Dominik

Das ist ja Buzzword,

Dominik

Cloud, KI und so,

Dominik

dies, das.

Dominik

Und dann sagst du,

Dominik

ja, okay, dann müssen

Dominik

jetzt aber schon alle

Dominik

so modern sein

Dominik

und ein bisschen Cloud machen

Dominik

und wenn wir jetzt

Dominik

aber unser eigenes

Dominik

Datacenter irgendwie betreiben,

Dominik

das müssen wir dann

Dominik

irgendwie offshoren

Dominik

und das funktioniert

Dominik

aber auch nicht so richtig,

Dominik

weil da die guten Leute

Dominik

irgendwie dann doch

Dominik

irgendwie nur ja

Dominik

und dann baust du dann

Dominik

irgendwie so ein Datacenter

Dominik

und merkst dann irgendwie so,

Dominik

ja, wenn wir jetzt

Dominik

irgendwie in Deutschland

Dominik

irgendwie sowas bauen,

Dominik

was ja irgendwie total gut ist,

Dominik

ist aber schon teuer

Dominik

und das festigt sich dann

Dominik

da alles

Dominik

und könnt ihr jetzt

Dominik

globaler es betreiben

Dominik

und die kennen ja

Dominik

die ganzen Sachen nicht

Dominik

und wie bieten die das

Dominik

jetzt für Services

Dominik

in Brasilien an und so

Dominik

und dann könnt ihr ja

Dominik

gar nicht mit denen

Dominik

und gar nicht kommunizieren

Dominik

und warum machen wir das

Dominik

dann nicht alles in der Cloud

Dominik

und das ist ja total einfach,

Dominik

einfaches Interface

Dominik

für alle gleich

Dominik

und benutzen das dann einfach

Dominik

und dann haben wir

Dominik

dieses Controlling-Problem,

Dominik

dann, ja, brauchst du halt

Dominik

diese ganzen Sachen nicht mehr,

Dominik

aber das ist ja tatsächlich,

Dominik

du musst das nicht

Dominik

selber vorhalten die ganze Zeit,

Dominik

du brauchst nicht

Dominik

das ganze Team vor Ort

Dominik

an der gleichen Stelle,

Dominik

das diese ganzen Sachen managt

Dominik

und irgendwelche Schnittstellen

Dominik

nach außen anbietet, oder?

Dominik

Ja, das ist operativ

Dominik

sicherlich wesentlich einfacher

Johannes

von Amazon Services zu mieten,

Johannes

anstatt ein eigenes

Johannes

Datacenter zu betreiben,

Johannes

nur ab einer gewissen Größe,

Johannes

ich meine, es gibt ja auch

Johannes

Schritte dazwischen,

Johannes

es gibt ja auch Co-Location

Johannes

und es gibt ja auch so

Johannes

Meet-Racks und so weiter,

Johannes

aber ab einer gewissen Größe

Johannes

lohnt es sich halt

Johannes

und ich, und ganz ehrlich,

Johannes

ich sehe die Vorteile

Johannes

von vielen von diesen

Johannes

Cloud-Diensten nicht,

Johannes

die sind sehr teuer

Johannes

und die haben viele

Johannes

so fiktive Vorteile,

Johannes

ja, aber du kannst

Johannes

die hochskalieren so viel wie du willst,

Johannes

ja, gut, okay,

Johannes

aber ich habe 12 Visitor im Monat

Johannes

und ich muss niemals

Johannes

etwas hochskalieren,

Johannes

ich würde es gerne,

Johannes

dann machst du Serverless,

Johannes

noch weiter,

Johannes

ja, genau, mache ich Serverless,

Johannes

das kann ich,

Johannes

die für die gleiche,

Johannes

die gleiche Latenz

Johannes

wie vorher,

Johannes

nur für einen höheren Preis,

Johannes

voll gut.

Dominik

Ja, aber da musst du

Dominik

jetzt nicht die ganze Zeit an sein,

Dominik

du bezahlst ja nur

Dominik

für die genutzte Minute.

Dominik

Ja, gut,

Dominik

aber dafür muss ich auch

Dominik

das Ein- und Ausschalten mitbezahlen

Johannes

und wenn dann mal 100.000 kommen,

Johannes

dann muss ich auf einmal

Johannes

alles bezahlen.

Johannes

Nee, das will ich gar nicht.

Johannes

Also,

Johannes

das ist so eine,

Johannes

ja, da wird ja viel

Johannes

Buzzword-Bingo gespielt,

Johannes

ja, und gerade auch so.

Johannes

Ich verstehe zum Beispiel gar nicht,

Johannes

warum Amazon,

Johannes

Entschuldigung,

Johannes

dass ich nicht gerade noch spreche,

Dominik

aber nicht einfach so eine

Dominik

tolle Strategie fährt,

Dominik

wie zu sagen,

Dominik

hey, wir könnten

Dominik

unseren Umsatz hochbekommen,

Dominik

wir gucken einfach mal

Dominik

bei allen unseren Kunden,

Dominik

dann stellen wir irgendwelche

Dominik

Server in Russland auf

Dominik

und machen einfach

Dominik

ganz klasse viele Requests

Dominik

auf die ganzen Servers,

Dominik

dass die per Alarm

Dominik

da angeboten sind oder so

Dominik

und hauen einfach da mal

Dominik

so die Quotas so massiv hoch,

Dominik

weil wir benutzen das alles

Dominik

einfach mal.

Dominik

Wenn die mal Geld brauchen,

Dominik

machen die das vielleicht.

Dominik

Ja, aber bisher brauchen sie

Dominik

das noch gar nicht.

Dominik

Voll einfach.

Dominik

Du kannst einfach dann dadurch

Dominik

so deinen Umsatz voll hoch.

Dominik

Das ist eine gute Idee.

Dominik

Sie können auch einfach

Jochen

die Preise erhöhen oder so,

Jochen

aber das braucht jetzt auch so.

Jochen

Voll viele Leute nutzen

Jochen

unsere Sachen.

Dominik

Und dann merken sie, oh, der kommt ja kein Umsatz mehr raus, oder?

Johannes

Es gab vor einer Weile so einen Artikel,

Johannes

ich kann den auch für die Shownotes wieder raussuchen,

Johannes

dass Amazon Prime,

Johannes

dieses Video-Hosting, die sind umgestiegen

Johannes

von Serverless

Johannes

auf

Johannes

quasi reservierte Instanzen.

Johannes

Weil die halt auch so

Johannes

FFM-Pack-Lasten haben, ja?

Johannes

Und weil die da auch so Transcoding machen und

Johannes

das über dieses

Johannes

Serverless-Verteilte total cool ist, weil

Johannes

jede einzelne Komponente

Johannes

des Systems kann einzeln skalieren.

Johannes

Aber brauchst du gar nicht, weil du hast nur eine in der Mitte,

Johannes

die halt dick Rechenkraft verbraucht

Johannes

und dann außen so ein bisschen Gewürz

Johannes

außenrum.

Johannes

Aber auch die Abstraktionsleder, die da tolle,

Johannes

brauchst du eigentlich gar nicht mehr.

Johannes

Die haben irgendwie ihr Budget um 90% gesenkt und

Johannes

die Latenzen auch.

Johannes

Und

Johannes

das finde ich so ein bisschen gruselig, ja?

Johannes

Wenn so die Amazon-internen Teams sagen,

Johannes

also wir wollen das nicht benutzen,

Johannes

dann ist da doch

Johannes

schon was im Argen. Aber klar,

Johannes

also ich meine, das ist ja das Problem bei

Johannes

diesen ganzen Technologien. Die sind cool und

Johannes

neu und man will die mal ausprobieren

Johannes

und auch im Unternehmensumfeld ist es ja so,

Johannes

die sind cool und neu und man will die mal ausprobieren.

Johannes

Genau wie bei Kubernetes auch,

Johannes

ja? Das ist auch cool und neu

Johannes

und damit kannst du alles das machen, was

Johannes

Google auch macht.

Johannes

Aber brauchst du es wirklich?

Johannes

Ja, also meistens so dieses

Dominik

wie du sagtest, dieses Deklarative

Dominik

hat halt was für sich. Man schreibt zwei, drei

Dominik

Konfigurationsdateien und wenn man sich jetzt ein

Dominik

Minikube auf dem Server deployt, dann ist auch das relativ

Jochen

einfach. Da muss man auch dazu sagen, ehrlicherweise

Jochen

ist es Jammer, was man schreiben muss an

Jochen

Konfigurationsdateien.

Jochen

Naja, ist das schlimm?

Jochen

Ich weiß nicht, ich muss ja immer

Jochen

an dieses Meme-Bild denken

Jochen

von dem Typen, der halt irgendwie

Jochen

vor einem Haufen Soldaten

Jochen

steht und

Jochen

die dann

Jochen

sagen, ja, schieß den oder so

Jochen

und der so, hey, aber ich kann irgendwie

Jochen

Kubernetes, oder ich kann

Jochen

mit Computern Dinge machen

Jochen

und

Jochen

dann sagen die, ja, kannst du auch Jammer

Jochen

für Kubernetes schreiben und dann so, äh, schieß mich

Jochen

bitte.

Johannes

Da gibt's auch dieses Bild mit der Schlange

Johannes

und der Maus,

Johannes

wo die Maus sagt, bitte friss mich nicht und die Schlange

Johannes

sagt, nee, ich will dich gar nicht fressen.

Johannes

Dann sagt die Maus, okay, was willst du denn stattdessen?

Johannes

Dann sagt die Schlange, kannst du nicht Kubernetes-Engineer

Johannes

bei uns werden? Dann sagt die Maus, bitte friss mich.

Johannes

Also,

Johannes

ich glaube

Johannes

mit Schlange und Maus, ich glaube, dass das mal ein

Johannes

Python, eine Python-Metalle

Johannes

Tafel war.

Dominik

Jason, genau das, wie man es eigentlich

Jochen

jetzt machen sollte? Nee, auch nicht.

Jochen

Ja, ach, alles.

Jochen

Ist alles nicht so schön. Tommel.

Jochen

Tommel ist auch nicht schön.

Jochen

Ist auch nicht schön, aber ist der beste Kandidat vielleicht.

Dominik

Ihr ist vielleicht nochmal, erklärt bitte kurz den

Dominik

Unterschied zwischen Jammel und Tommel.

Johannes

Jammel ist yet another Markup Language

Johannes

und Tommel ist Toms Markup Language.

Jochen

Also, die Probleme

Jochen

bei Jammel sind halt, dass, wenn man da nicht vorsichtig

Jochen

ist, dann bedeutet halt eine Jammel-Dateiparsen

Jochen

halt Code ausführen, was

Jochen

vielleicht für die Leute nicht so klar ist.

Johannes

Ja, auch so Ambiguitäten, ja, das Norwegen-Problem.

Johannes

Oh, das tolle

Dominik

Norwegen-Problem, jetzt musst du noch unterzeichnen, was das Norwegen-Problem ist.

Dominik

Tops versus Spaces. No, no, no.

Dominik

Das Norway-Problem. Das No.

Dominik

Wenn man

Dominik

eine Liste von Ländern

Johannes

speichern möchte und dann

Johannes

dazu die ISO-Länder-Codes verwendet,

Johannes

dann sind das ja zwei buchstabige

Johannes

Länder-Codes und das geht bei den allermeisten

Johannes

Ländern sehr gut, außer bei Norwegen,

Johannes

weil der norwegische Länder-Code ist

Johannes

NO und das

Johannes

von Jammel als FALSE geparst,

Johannes

weil NO ist ja ein Synonym für FALSE.

Johannes

Das heißt, du hast dann so eine Liste von Ländern,

Johannes

Deutschland,

Johannes

Dänemark, Schweden,

Johannes

Nein.

Johannes

Das kann einem auch echt das Deployment kaputt machen,

Johannes

wenn man das Held da drin hat.

Johannes

Ja, oder auch

Johannes

Tops versus Spaces, ja, und generell

Johannes

so Significant White Space, das ist ja

Johannes

generell abzulehnen,

Johannes

gerade in der Python-Welt.

Johannes

Ja, das ist halt,

Johannes

Jammel-Problem.

Johannes

Ja, das ist halt, Jammel-Problem.

Johannes

Ja, das ist halt, Jammel-Problem.

Johannes

Jammel ist halt so eine,

Johannes

ja, das krankt halt an den

Johannes

an den gleichen Problemen, die

Johannes

viele solche Datenbeschreibungssprachen

Johannes

haben, dass, wenn man

Johannes

genügend Daten da durchschickt oder wenn

Johannes

genügend Leute damit arbeiten, dann siehst du ja alle

Johannes

Ecken und Kanten.

Johannes

Und wenn die nur so ein kleines

Johannes

Loch haben, ja, wo sie nicht genügend spezifiziert

Johannes

sind, dann fallen dir da

Johannes

gigabyteweise die Daten raus.

Johannes

Und das ist bei allen

Johannes

Sprachen so, das ist bei Jason so,

Johannes

Jason hat seine Probleme, ja,

Johannes

und auch seine, seine

Johannes

Ungereimtheiten, ja, es gibt nur Floats.

Johannes

Ja, es gibt überhaupt

Jochen

nur so vier Dat-Typen, ne, das ist vielleicht

Jochen

mancher, also es ist einfach

Jochen

elegant, oder halt auch

Jochen

irgendwie. Ja, und auch die Wiederholung,

Johannes

ja, du kannst nicht, wenn du irgendwie

Johannes

eine Million gleiche Objekte hast,

Johannes

dann die alle 10 Byte

Johannes

benutzen, aber die Keys, die du da halt reinschmeißt,

Johannes

die sind alle diesen gigabyteweise

Johannes

Keys reingeschrieben.

Johannes

Das Komma, keine Kommentare.

Johannes

Und auch die Pausen-Geschwindigkeit.

Johannes

Komma und...

Jochen

Jason Pausen geht inzwischen

Jochen

quasi schneller, als du

Jochen

von der Platte lesen kannst. Also da,

Jochen

ich lese ja mal das Blog von

Jochen

Daniel

Jochen

Lemire, ich weiß nicht genau,

Jochen

wie man das ausspricht, kanadischer

Jochen

Computer Science.

Jochen

Ich habe das auch in meinem

Jochen

RSS-Reel drin, dieses Blog,

Johannes

aber der schreibt so viele gute Sachen.

Jochen

Ja, das muss man auch irgendwie mal lesen.

Jochen

Der war letztens

Jochen

in irgendeinem, war das in einer

Jochen

von dem IEEE-Podcast

Jochen

Software Engineering Radio oder so,

Jochen

wo er auch drüber geschrieben hat,

Jochen

geredet hat.

Jochen

Der hat

Jochen

SIMD-Jason, glaube ich, geschrieben.

Jochen

Und wie man

Jochen

das halt machen kann und wo man aufpassen muss

Jochen

und man kann Jason

Jochen

Pausen quasi beliebig schnell hinbekommen.

Jochen

Also sie waren über mehrere

Jochen

Gigabyte pro Sekunde und...

Johannes

Ja gut, aber mehrere Gigabyte pro Sekunde

Johannes

impliziert ja immer noch, dass du mehrere Gigabyte hast.

Johannes

Ja, ja, klar.

Johannes

Und wenn du dann stattdessen Protobuff hast

Johannes

und nur 100 Megabyte hast, dann ist das natürlich

Johannes

weniger. Gut, aber sei es drum.

Johannes

Die eigentliche Aussage

Johannes

ist ja, jede von diesen Beschreibungssprachen

Johannes

hat Vor- und Nachteile und jede hat

Johannes

ihre Krankheiten. Und Tommel ist da nichts anderes.

Johannes

Tommel ist halt eine relativ

Johannes

simple Sprache,

Johannes

so ein bisschen an INI angelehnt,

Johannes

damit man auch das schön im Texteditor

Johannes

haben kann und damit du auch schön so

Johannes

auf quasi Dateiebene das machen kannst.

Johannes

Aber Jochen, würdest du tatsächlich irgendwo

Johannes

eine Schnittstelle machen, die Tommel verwendet?

Johannes

Also würdest du Tommel irgendwo

Johannes

schreiben?

Johannes

Ich habe das Gefühl, dass

Johannes

Tommel sowas ist, so eine Konfigurationssprache ist.

Johannes

Die wird manuell geschrieben und maschinell ausgelesen.

Johannes

Ich weiß

Johannes

nicht, ob ich auf die Idee käme, Tommel maschinell

Johannes

zu schreiben. Nee, wahrscheinlich nicht.

Dominik

Message-Spec oder sowas mit Python

Dominik

und dann eine genaue...

Dominik

Für automatische Sachen würde ich

Dominik

eher tatsächlich sowas wie JSON nehmen.

Jochen

Aber für Menschen

Jochen

ist JSON halt nicht so toll.

Johannes

Als die Default-Wahl ist.

Johannes

Ja.

Johannes

Und wenn es für Menschen nicht so toll ist,

Johannes

dann kannst du auch...

Johannes

XML nehmen.

Johannes

Ach, Dominik.

Johannes

Nein, Protobuf oder Message-Spec.

Jochen

Das würde ich gerne noch...

Jochen

Wir sind jetzt auch schon ein bisschen dran,

Jochen

aber das würde ich gerne noch...

Jochen

Das habe ich versucht zu sagen und habe es

Jochen

irgendwie 20 Minuten lang nicht hingekriegt.

Jochen

Und das hat mich irgendwie dann noch verfolgt.

Jochen

Also XML,

Jochen

ja, warum das halt...

Jochen

Also alle jammern immer drüber,

Jochen

aber warum das

Jochen

halt unter Umständen eine schlechte Idee ist

Jochen

oder was überhaupt.

Jochen

Das ist auch wieder ein schönes Beispiel für...

Jochen

Das hat mir ja auch schon ein paar Mal...

Jochen

Warum Abstraktion ist immer so Fluch und Segen.

Jochen

Das ist immer so schwierig.

Jochen

Und XML hat halt auch so fiese Probleme.

Jochen

Warum jammern da Leute immer so?

Jochen

Und ich habe dann irgendwie gesagt so,

Jochen

ja, CSV gefällt mir viel besser als XML,

Jochen

weil ich war ja lange

Jochen

in diesem Datenexport-Import-Geschäft tätig.

Jochen

Und nach viel Schmerzen

Jochen

wurde jedem,

Jochen

der halt irgendwie an diesem Datenaufbau

Jochen

Austauschpunkt teilnehmen wollte,

Jochen

geraten von den Kundenberatern halt immer so,

Jochen

nimm CSV, nimm nicht XML.

Jochen

Wir können XML, klar.

Jochen

Du kannst uns auch XML geben, das geht.

Jochen

Mach es nicht.

Jochen

Nimm CSV.

Jochen

Und ich dachte auch nur so,

Jochen

ja, ich würde immer CSV vorziehen

Jochen

gegenüber XML.

Jochen

Wieso das denn?

Jochen

CSV ist ja noch viel schrecklicher.

Jochen

Da ist ja gar nichts definiert und so.

Jochen

Denn auf Python,

Dominik

Readability counts?

Jochen

Nee, das ist gar nicht so der Punkt.

Jochen

Sondern der Punkt ist eher

Jochen

dieses Abstraktionsding aus meiner Perspektive

Jochen

jetzt sozusagen.

Jochen

Also es gibt möglicherweise auch Anwendungen,

Jochen

es gibt auch Anwendungen,

Jochen

nicht möglicherweise, ganz sicher,

Jochen

wo XML viel besser ist

Jochen

und wo CSV schrecklich ist.

Jochen

Aber...

Johannes

Jochen, du verkaufst gerade alle Zuhörer.

Johannes

Das ist ganz schlimm, dir zuzuhören.

Johannes

Haben wir jetzt noch welche jetzt gerade?

Johannes

CSV ist besser, XML ist besser.

Jochen

Nein, nein, aber vielleicht schon interessant,

Jochen

wo dann so Probleme passieren.

Jochen

Weil oft hast du halt kaputte Prozesse

Jochen

innerhalb von Unternehmer.

Jochen

Das hatten wir auch schon.

Jochen

Und wenn du jetzt XML erzeugst

Jochen

und das irgendwo hinschiebst,

Jochen

dann bist du ja gezwungen.

Jochen

Zum Beispiel, wenn du das auch

Jochen

gegen eine DTD validierst oder so.

Jochen

Das musst du überhaupt irgendwie...

Jochen

Die meisten XML-Schreibbibliotheken

Jochen

weigern sich halt einfach,

Jochen

irgendwie was rauszuschreiben,

Jochen

was halt nicht okay ist als XML.

Jochen

Das heißt, wenn du irgendwie Mist machst

Jochen

und dann aber was rausschreiben willst,

Jochen

dann funktioniert das halt nicht.

Jochen

Und dann kann es sein,

Jochen

dass die Probleme,

Jochen

dass es halt aus einem kleinen Fehler

Jochen

ein großer Fehler wird.

Jochen

Und das ist halt das eigentlich üble Problem.

Jochen

Also sozusagen das praktische Beispiel,

Jochen

was immer und immer wieder passiert,

Jochen

ist halt oft sowas wie,

Jochen

wir kriegen CSV

Jochen

und dann passieren da so Dinge drin wie,

Jochen

naja, also ein Teil der Zeilen

Jochen

ist halt UTF-8 irgendwie encoding verwendet,

Jochen

ein Teil der Zeilen irgendwie Windows,

Jochen

ein Teil der Zeilen Latin One.

Jochen

Großartig.

Jochen

Großartig kann man sagen,

Jochen

ja so, naja, das nehme ich nicht.

Jochen

Das geht nicht.

Jochen

Das ist irgendwie kaputt.

Jochen

Ja, kann man machen.

Jochen

Validiert nicht.

Jochen

Aber ist halt auch Geld,

Jochen

das dann verloren geht unter Umständen.

Jochen

Und ehrlich gesagt,

Jochen

wenn ich jetzt sage,

Jochen

so, ich passe jetzt diese Zeile

Jochen

und dann kriege ich halt irgendwie eine Exception

Jochen

oder ich weiß nicht,

Jochen

ich merke halt so,

Jochen

oh, das ist hier was ganz anderes,

Jochen

das ist kein UTF-8,

Jochen

dann zu sagen,

Jochen

na gut, dann probiere ich halt mal Latin One.

Jochen

Okay, geht.

Jochen

Ja, oder so.

Jochen

Das ist nicht so schlimm.

Jochen

Das geht, das kann man programmieren.

Jochen

Das geht.

Jochen

Ich kann jetzt immer noch parsen.

Jochen

Ja, selbst wenn solche Dinge passieren wie,

Jochen

ja, das ist halt jetzt nicht mehr Semikolon

Jochen

der Spalten-Trenner,

Jochen

sondern Komma oder Tab

Jochen

oder da gab es auch nicht so ein Zeichen für.

Jochen

Husky Separated Values.

Jochen

Das ist mein eigener,

Jochen

mein eigener Kreuzzug.

Jochen

Genau.

Jochen

Das kann ich auch irgendwie erkennen

Jochen

und dann kann ich damit irgendwie umgehen.

Jochen

Und wenn man das halt ein paar Jahre macht,

Jochen

dann hat man halt irgendwie einen Parser.

Jochen

Da kannst du gegenschmeißen,

Jochen

was du willst.

Jochen

Der passt, ist alles egal.

Jochen

Geht.

Jochen

So.

Jochen

Okay, ist Aufwand und ist hässlich

Jochen

und macht keinen Spaß,

Jochen

aber es geht irgendwie.

Jochen

Und die meisten Probleme bei CSV sind so,

Jochen

dass man die schon irgendwie in den Griff kriegt.

Jochen

Man muss halt irgendwie wollen,

Jochen

aber ja, es geht auf jeden Fall.

Jochen

Man kann sich aus diesem Problem

Jochen

wieder rausrecovern.

Jochen

Bei XML ist es oft so,

Jochen

dass du Probleme,

Jochen

halt dann siehst,

Jochen

aus denen du dich überhaupt nicht mehr rausrecovern kannst.

Jochen

Wie zum Beispiel,

Jochen

es kommt halt ein syntaktisch korrektes XML,

Jochen

aber das ist halt leer.

Jochen

Und jetzt bedeutet halt leer halt zum Beispiel so was wie,

Jochen

naja, lösche alle Dinge,

Jochen

die halt vorher da waren.

Jochen

Was halt ein katastrophaler Fehler sein kann.

Jochen

Wo dann Rechtsstreit draus wird.

Jochen

Update oder Lead.

Jochen

Ja, so die Frage ist,

Jochen

was machst du denn an der Stelle?

Jochen

Du siehst halt,

Jochen

okay, jetzt kommt hier dieses Ding

Jochen

und dann denkst du dir so,

Jochen

okay,

Jochen

was willst du denn jetzt

Jochen

als Programmlogik machen?

Jochen

Willst du sagen,

Jochen

nö, das führe ich jetzt nicht aus,

Jochen

weil das kommt mir irgendwie komisch vor.

Jochen

Landest du im Rechtsstreit.

Jochen

Du führst es aus,

Jochen

irgendwie viel Geld geht verloren,

Jochen

du landest in einem Rechtsstreit.

Jochen

Du hast nur schlechte Optionen.

Jochen

Du hast nicht die Option so,

Jochen

okay, wir machen das Encoding

Jochen

nochmal ein bisschen anders

Jochen

und dann versuchen wir das irgendwie anders zu parsen,

Jochen

dann geht's.

Jochen

Sondern du bist eigentlich nur bei,

Jochen

eigentlich wahrscheinlich

Jochen

müsstest du dann irgendwie alarmieren

Jochen

oder müsstest du jemanden irgendwie anrufen oder so.

Jochen

Aber das ist halt auch dann einfach,

Jochen

das ist einfach Kacke, ja.

Jochen

Das ist einfach.

Jochen

Und solche Sachen hast du halt bei,

Jochen

wenn die Fehler nicht mehr,

Jochen

also die Idee bei XML ist so ein bisschen,

Jochen

wenn du auf der syntaktischen,

Jochen

wenn man sagt halt,

Jochen

ah, wir haben so viele Probleme

Jochen

mit diesen Syntax und so,

Jochen

wir machen jetzt ein Format,

Jochen

wo das validiert ist,

Jochen

dass das nicht mehr passieren kann.

Jochen

Ja, und dann hast du halt sozusagen

Jochen

mit dieser Art Wacky Mole zu spielen,

Jochen

ja, dann kommt das Ding halt

Jochen

an einer anderen Stelle wieder hoch

Jochen

und zwar auf einer semantischen Ebene,

Jochen

wo du gar nichts mehr machen kannst

Jochen

oder wo es viel schwerer ist,

Jochen

damit umzugehen mit dem Fehler.

Jochen

Und ja,

Jochen

das ist halt so ein bisschen mein,

Jochen

mein Problem mit XML

Jochen

und dass man das halt,

Jochen

man kriegt die Probleme nicht so einfach weg.

Jochen

Es ist,

Jochen

also wenn da,

Jochen

wenn da Abteilungen sind

Jochen

und die eben verwenden alle Excel

Jochen

und dann in unterschiedlichen Formaten,

Jochen

dann ziehst du das irgendwie zusammen

Jochen

und versuchst es rauszuschreiben,

Jochen

dann, ja,

Jochen

dann besser,

Jochen

du schreibst es irgendwie raus

Jochen

und es ist halt falsch

Jochen

und du kannst es hinterher noch irgendwie wieder fixen,

Jochen

als da fehlen dann halt bei zwei Abteilungen,

Jochen

die fehlen die Daten einfach

Jochen

und du weißt halt nicht,

Jochen

was passiert ist, ja.

Johannes

Das ist so ein bisschen die Debatte

Johannes

zwischen be lenient with what you accept

Johannes

and strict with what you don't.

Johannes

Strict with what you create.

Johannes

Robustness.

Jochen

Robustness-Principle.

Jochen

Ja,

Jochen

versus Programming by Contract

Johannes

und wenn du das nicht 100% erfüllst,

Johannes

dann ist es halt weg.

Johannes

Ja,

Johannes

also.

Johannes

Ja,

Johannes

schmeiße ich alles weg,

Dominik

wenn ich halt irgendwie Mist bekomme

Dominik

auf meiner API,

Dominik

sage ich harte Begegnungen.

Dominik

Ja,

Dominik

oder riskierst du,

Dominik

dass halt jemand,

Dominik

die gar nicht benutzen kann,

Dominik

die API,

Dominik

weil das ausgründet.

Dominik

Ja,

Dominik

vielleicht weiß ich ja noch gar nicht,

Dominik

was da alles kommen soll.

Dominik

Vielleicht möchte ich das ja einfach irgendwie

Dominik

als Zeichenkette konvertieren,

Dominik

da trotzdem irgendwie reinschreiben

Dominik

und wieder rausgeben,

Dominik

wenn da jemand erfragt.

Dominik

Das heißt,

Dominik

wenn das irgendwie gar nicht dem entspricht,

Dominik

was ich eigentlich dachte,

Dominik

was ich haben brauche.

Dominik

Das,

Dominik

das kommt auch so ein bisschen in Wellen,

Dominik

oder,

Dominik

dieses Robustness-Principle.

Johannes

Für eine Weile lang war das total,

Johannes

ja,

Johannes

wir akzeptieren alles

Johannes

und dann hast du so lustige Modibake

Johannes

in deinem Notepad drin.

Johannes

Shit in,

Johannes

shit out,

Johannes

sagt man ja.

Johannes

Ja,

Johannes

ja,

Johannes

glaube ich.

Johannes

Internet Explorer zeigt alle auf einmal

Johannes

alles auf Koreanisch an

Johannes

und dann schwingt das wieder,

Johannes

das pendelt wieder in die andere Richtung,

Johannes

wo alles XML,

Johannes

XHTML sein muss

Johannes

und nur wenn das validiert,

Johannes

kannst du die Webseite auch überhaupt anzeigen

Johannes

und dann,

Johannes

dann schwingt es wieder rum

Johannes

zu HTML5,

Johannes

wo das so,

Johannes

ja gut,

Johannes

wenn da ein HTML5-Teig drin ist,

Johannes

dann kannst du schon irgendwas draus machen

Johannes

und,

Johannes

ja.

Johannes

Ja,

Johannes

so,

Johannes

so,

Jochen

persönlich ist mir aber das irgendwie,

Jochen

wir versuchen es irgendwie hinzukriegen,

Jochen

ist mir sympathischer als,

Jochen

wir machen jetzt eine Bürokratie

Jochen

und,

Jochen

dann fällt uns auch das.

Jochen

Nein,

Jochen

der Kunde ist schuld,

Jochen

der Benutzer ist schuld,

Jochen

das ist immer die richtige Antwort.

Jochen

Ja.

Jochen

Naja.

Jochen

Ja,

Jochen

schwierig,

Jochen

schwierig da auch,

Jochen

ja.

Jochen

Wieder wie vorhin,

Jochen

ja,

Jochen

es gibt Situationen,

Jochen

in denen es so ist

Jochen

und es gibt Situationen,

Jochen

in denen es so ist.

Jochen

Ja,

Jochen

insofern.

Jochen

Nee,

Jochen

aber klar,

Jochen

vor allem,

Jochen

also ich meine,

Johannes

viele von diesen Datenschnittstellen

Johannes

sind ja zwischen,

Johannes

sag ich mal,

Johannes

Entitäten,

Johannes

die mehr oder minder professionell sind

Johannes

und,

Johannes

dann ist es halt einfach pragmatisch zu sagen,

Johannes

okay,

Johannes

das kann halt sein,

Johannes

dass die das nicht 100% richtig generieren können

Johannes

und wie geht man damit um?

Johannes

Ja.

Johannes

Und,

Johannes

ja.

Johannes

Ja, okay.

Johannes

Hat jetzt aber nichts mehr

Johannes

mit Kubernetes zu tun, oder?

Johannes

Ich wollte gerade sagen,

Johannes

CubeControl,

Johannes

nein.

Johannes

In gewisser Weise,

Johannes

in gewisser Weise schon,

Johannes

weil bei Kubernetes

Jochen

hast du halt auch so eine Abstraktionsschicht,

Jochen

die dann halt irgendwie,

Jochen

wo du sagst,

Jochen

okay,

Jochen

ich zwinge dich dazu,

Jochen

dass du sagen kannst,

Jochen

wie viel Hauptspeicher du denn brauchst,

Jochen

ne?

Jochen

Ja, okay, gut.

Jochen

Und dann kann es sein,

Jochen

dass du halt ein anderes Problem kriegst,

Jochen

weil.

Jochen

Das ist quasi das,

Johannes

was du vorhin sagen wolltest,

Johannes

ja?

Johannes

Genau.

Johannes

Dass es Situationen gibt,

Johannes

in denen kannst du gar nicht sagen,

Johannes

wie viel Hauptspeicher du brauchst.

Johannes

Also zumindest nicht dauerhaft

Johannes

oder zumindest nicht so richtig im Voraus.

Johannes

Oder das,

Johannes

das ist ein gutes Argument.

Jochen

ist halt so viel aufwendiger,

Jochen

als.

Jochen

Ja, beziehungsweise du überprovisionierst.

Johannes

Du musst halt einfach quasi

Johannes

vom Worst Case ausgehen

Johannes

und der Worst Case ist halt,

Johannes

alle Menschen auf der Welt

Johannes

rufen gleichzeitig dieses Video ab

Johannes

und das.

Johannes

Das musst du dann auch gehen.

Johannes

Das musst du jetzt einplanen.

Johannes

Ja, und das musst du dann halt auch bezahlen.

Johannes

Ja, genau.

Johannes

Und das musst du dann auch bezahlen,

Johannes

weil so viel hast du ja requested.

Johannes

Also zum Beispiel

Johannes

so ein Konzertticketanbieter

Johannes

wäre das vielleicht

Johannes

ein relevantes Problem.

Johannes

Ja, oder überall,

Johannes

wo du es spielst.

Johannes

Ja, oder überall,

Johannes

wo du Spitzenspitzen hast.

Johannes

Es gibt ja überall Saisonalität.

Johannes

Es gibt ja überall Zeitpunkte,

Johannes

wo mehr Traffic ist

Johannes

und wo weniger Traffic ist

Johannes

und Spannungsspitzen.

Johannes

Aber das ist ja auch das Versprechen,

Johannes

das ist ja das Versprechen von Cloud,

Johannes

dass du diese Spitzen abfangen kannst

Johannes

für die realen Kosten,

Johannes

sage ich mal.

Johannes

Ja.

Johannes

Weil in dem Moment

Johannes

mietest du dann halt

Johannes

mehr Rechenleistung

Johannes

als in anderen Momenten.

Johannes

Du mietest ja auf einmal halt

Dominik

250.000 Rechner,

Dominik

die du normalerweise brauchst

Dominik

nur fünf.

Dominik

Ja, genau.

Dominik

Aber für das Wochenende,

Dominik

wo halt dann die Konzertkarten

Dominik

Genau, wo Taylor Swift

Dominik

eine Milliarde Dollar

Dominik

umsetzt,

Dominik

mit ihren Konzertkarten,

Dominik

dann bricht dein System

Dominik

halt trotzdem zusammen.

Dominik

Weil so war es ja.

Dominik

Ja gut, aber das,

Dominik

ja,

Dominik

das ist so ein bisschen

Dominik

das eigentlich Frustrierende,

Dominik

finde ich,

Dominik

dass man aus technischer Sicht

Dominik

so viele Sachen sieht,

Dominik

die man machen könnte

Johannes

und dann macht aber trotzdem jemand

Johannes

so viel Geld mit

Johannes

Shell-Skripten,

Johannes

die jede Nacht

Johannes

alles neu starten

Johannes

und diese Personen,

Johannes

die sitzen an der richtigen Stelle.

Johannes

So ärgerlich.

Johannes

Wir könnten es alles viel besser.

Dominik

Das war ein Kauf-mich-Vortrag.

Johannes

Ja, jede Unterhaltung ist,

Johannes

jedes Gespräch ist ein Kauf-Mich-Vortrag.

Johannes

Was meinst du,

Johannes

warum ich immer herkomme, Dominik?

Johannes

Ach so, natürlich.

Dominik

Für die ganzen großen Aufträge.

Dominik

Ja, die ich alle schon

Dominik

über den Podcast

Dominik

an Landtag hergezogen habe.

Johannes

Funktioniert jedes Mal.

Johannes

Immer.

Johannes

Also, liebe Zuhörer,

Johannes

wenn auch Sie Interesse haben

Johannes

an einem

Johannes

An einem Pick.

Johannes

An einem Pick?

Johannes

Ach so, ein Pick.

Johannes

Dominik, hast du einen Pick?

Johannes

Environs.

Dominik

Kennt ihr das?

Dominik

Was ist Environs?

Dominik

Kennt ihr Django Environ

Dominik

oder kennt ihr

Dominik

ja,

Dominik

wie heißt der?

Dominik

Python.env oder sowas?

Dominik

Genau.

Dominik

Das ist was anderes.

Dominik

Egal.

Dominik

Also Environ,

Dominik

ja, nicht ganz.

Dominik

Environ ist so ein anderes Paket,

Dominik

wo man halt

Dominik

Environment-Dateien

Dominik

lesen kann

Dominik

oder halt aus der

Dominik

Environment-Variablen

Dominik

dann irgendwann

Dominik

seine Sachen ins Playbook kommt.

Dominik

Das ist so ein bisschen

Dominik

anders als Django Environ irgendwie.

Dominik

Und das macht halt auch sowas,

Dominik

dass man halt irgendwie,

Dominik

äh,

Dominik

quasi

Dominik

auf das

Dominik

Environment irgendwie

Jochen

geordneter Form zugreifen kann.

Jochen

Genau, also mit

Jochen

Konvertierung direkt

Jochen

in die richtigen Datentypen

Jochen

und sowas.

Jochen

Ah, okay.

Jochen

Und ja.

Jochen

Finde ich ganz nett.

Jochen

Also, weil Django Environ

Jochen

habe ich sonst immer benutzt.

Jochen

Ich versuche gerade alles umzuziehen

Jochen

und, äh,

Jochen

ist irgendwie schön.

Jochen

Ich weiß noch nicht,

Jochen

ist das einfach, intuitiv

Jochen

funktionierend?

Jochen

Du machst ein Env auf

Jochen

und machst dann Read Env

Jochen

von den DotFiles,

Jochen

die du haben willst.

Dominik

Apropos DotFiles,

Dominik

wie benutzt ihr es?

Dominik

Schreibt ihr einfach tatsächlich

Dominik

Stumpf-Secrets irgendwo rein

Dominik

oder habt ihr da

Dominik

irgendwie,

Dominik

irgendwelche, äh,

Dominik

Secret-Vaults oder, äh,

Dominik

es gibt ja noch ganz andere Sachen.

Dominik

Also man muss ja

Dominik

irgendwem vertrauen.

Dominik

Weiß ich nicht,

Dominik

ob ich das jetzt hier sagen will.

Dominik

Doch,

Dominik

und Secrets liegen

Dominik

auf einem offenen

Dominik

S3-Packet,

Dominik

wo nur er

Dominik

die ID kennt.

Dominik

Ja.

Dominik

Nee,

Dominik

verschlüsselt im Git.

Dominik

Gut,

Dominik

das sind zwei

Dominik

unterschiedliche Probleme, ne?

Dominik

Einmal,

Jochen

wie hält man die Secrets,

Jochen

äh,

Jochen

vor,

Jochen

bevor man

Jochen

deployed hat,

Jochen

sozusagen?

Jochen

Äh,

Jochen

und wie hält man

Jochen

die Secrets eigentlich,

Jochen

wenn,

Jochen

deployed ist,

Jochen

weil die,

Jochen

die,

Jochen

die Applikation,

Jochen

ja,

Jochen

irgendwie,

Jochen

sie kennen muss?

Jochen

Und dafür können sie ja

Jochen

nicht mehr verschlüsselt sein.

Jochen

Ja,

Jochen

aber das ist doch das DRM-Problem,

Jochen

oder?

Jochen

Du kannst eine Nachricht

Jochen

nicht vor dem Empfänger

Jochen

verschlüsseln.

Jochen

Genau,

Jochen

genau,

Jochen

genau.

Jochen

Aber der Empfänger

Jochen

muss sie auch irgendwie

Jochen

kriegen,

Jochen

also wie,

Jochen

ja.

Jochen

Ich benutze ja gerade

Jochen

einen proprietären Service

Jochen

für,

Jochen

den ich ganz gut finde.

Jochen

Aha.

Jochen

Doppler.

Jochen

Doppler.

Jochen

Und,

Jochen

also natürlich kennen die dann

Jochen

halt auch die ganzen Sachen,

Jochen

aber die machen sowas wie

Jochen

Automatic Rotation

Jochen

oder sowas,

Jochen

da musst du nicht mehr

Jochen

anfassen und du kannst halt

Jochen

für jeden Entwickler

Jochen

irgendwie so eigene Sachen

Jochen

haben,

Jochen

da musst du einfach nur noch

Jochen

sagen,

Jochen

Doppler Lock-In,

Jochen

Doppler Setup fertig

Jochen

für so ein Projekt

Jochen

oder halt Doppler Use

Jochen

und der schreibt dann,

Jochen

wenn du willst,

Jochen

seine Dot-Amps rein

Jochen

oder so.

Jochen

Aber,

Jochen

Moment,

Jochen

aber da liegen dann

Jochen

deine Secrets getrennt

Jochen

von allem anderen,

Jochen

also auch von deinen

Jochen

Repositories

Jochen

und deine Produktionsmaschine

Jochen

geht halt auch zu Doppler

Jochen

und zieht da die Secrets

Jochen

und schreibt sie nochmal

Jochen

irgendwo lokal hin

Jochen

oder holt sich die einfach?

Jochen

Oder zumindest in den Haupt.

Jochen

Oder du musst auch irgendwie

Jochen

auf Doppler zugreifen.

Jochen

Genau,

Jochen

du musst halt,

Jochen

du musst,

Jochen

dieses Secrets

Jochen

mit dem Token,

Jochen

das Token,

Jochen

musst du aber die Applikation

Jochen

irgendwie kennen.

Jochen

Das ist dein Master Key.

Jochen

Ja,

Jochen

wenn ich den kenne,

Jochen

dann kann ich

Jochen

alle deine Secrets abgreifen.

Jochen

Ja.

Dominik

Wie schreibst du

Dominik

dieses Token?

Dominik

Du machst vorher

Dominik

ein Hissignor

Dominik

und schreibst das dann

Dominik

ins Deployment-Skript.

Johannes

Du hast ein sekundäres System,

Johannes

wo dieses Token drin ist.

Johannes

Genau,

Johannes

eben,

Johannes

weil wenn du das schon

Johannes

ein System hast,

Johannes

um dieses Secret,

Johannes

was sehr wichtig ist,

Johannes

zu deployen,

Johannes

warum deployst du denn nicht

Johannes

einfach auch alle anderen Sachen damit?

Jochen

wo ist jetzt der Vorteil?

Dominik

also du musst ja,

Dominik

also du kannst das ja

Dominik

irgendwie mit,

Dominik

also ich muss gerade

Dominik

kurz überlegen,

Dominik

also wo ist das Problem?

Dominik

Ja,

Dominik

also ja,

Dominik

wie willst du die anderen Sachen

Dominik

da reinbekommen dann?

Dominik

Ja.

Dominik

Also wenn ich jetzt

Dominik

so ein Deploy-Token hab,

Dominik

ne,

Dominik

das halt dann einfach so zugreift

Dominik

auf die ganzen anderen Keys,

Dominik

die da irgendwo rumliegen

Dominik

und die vielleicht

Dominik

auch rotated sind oder was,

Dominik

das ist ein Token,

Dominik

okay,

Dominik

dann hab ich lesende Zugriff

Dominik

auf die ganzen Geheimnisse,

Dominik

aber wenn du die sonst

Dominik

eh nicht hinschreibst,

Dominik

weil ich verstehe

Dominik

den Unterschied nicht,

Dominik

dann muss ich,

Dominik

ne,

Dominik

ich auch nicht,

Jochen

also mein Punkt wäre halt gerade,

Jochen

wenn du eine,

Jochen

dieses Ding muss ja auch geheim bleiben

Jochen

und wenn du einen Weg haben musst,

Jochen

wie du dieses Geheimnis

Jochen

deiner Applikation mitteilst,

Jochen

warum kannst du diesen Weg,

Jochen

und geheim hältst,

Jochen

und geheim,

Jochen

ja genau,

Jochen

warum kannst du diesen Weg

Jochen

nicht benutzen,

Jochen

um alle anderen Geheimnisse,

Jochen

die du halt auch hast,

Jochen

der Applikation auch mitzuteilen,

Jochen

weil,

Jochen

ja,

Jochen

musst du die ja eh haben.

Jochen

Es ist dieser Weg

Jochen

oder machst du das einmal

Jochen

beim Setup?

Dominik

Manuelle Eingabe einmal

Dominik

irgendwie mit HIST?

Dominik

Ja,

Dominik

man kann sich ja auch

Dominik

ändern,

Dominik

also,

Dominik

also du hast eigentlich

Dominik

nur die Menge der Secrets,

Johannes

die du mitgeben möchtest,

Johannes

verringert.

Johannes

Ja,

Johannes

aber,

Johannes

na,

Johannes

ich verlege gerade.

Johannes

Du hast die Secrets komprimiert.

Johannes

Also du kannst halt zum Beispiel

Dominik

jetzt GitHub irgendwie sagen,

Dominik

bei den Secrets steht es drin,

Dominik

da könntest du aber auch

Dominik

dann sagen,

Dominik

du sagst dann halt,

Dominik

okay,

Dominik

dann machst du alle bei Secrets,

Dominik

bei GitHub Secrets.

Dominik

Ja.

Dominik

Ja.

Dominik

Okay,

Dominik

ich wollte ja gar nicht,

Dominik

es ist halt einfach nur so,

Dominik

es ist ein blödes Problem,

Dominik

ne,

Dominik

aber ich,

Dominik

also was ich tatsächlich mache,

Dominik

ist ich,

Dominik

oh doof,

Dominik

das ist echt doof,

Dominik

das zu sagen,

Dominik

ne,

Dominik

aber.

Dominik

Don't do it,

Dominik

erzähl es mir gleich rein,

Dominik

Geheimnis von später.

Dominik

Ich habe,

Dominik

ich habe Sachen oft in,

Dominik

in Voice drin,

Dominik

drin liegen und dann,

Dominik

schreibe ich das halt tatsächlich

Dominik

in so einen Endfile

Jochen

und dann hat die Applikation das.

Jochen

Der Nachteil,

Jochen

also der Vorteil dabei ist,

Jochen

es ist eigentlich total einfach,

Jochen

ich muss mir keine Gedanken machen

Jochen

über irgendwelche externen Services

Jochen

oder so,

Jochen

ich habe auch kein System

Jochen

neben dem Repository,

Jochen

es ist alles im Repository drin,

Jochen

aber halt verschlüsselt.

Jochen

So,

Jochen

zack.

Jochen

Genau,

Jochen

aber der,

Jochen

der,

Jochen

der,

Jochen

die Nachteile sind,

Jochen

äh,

Jochen

tja,

Jochen

wenn ein Angreifer irgendwie

Jochen

in meine Applikation reinkommt,

Jochen

dann.

Jochen

Ja,

Jochen

der muss auch da entschlüsseln halt,

Jochen

einfach dann.

Jochen

Nein,

Jochen

nein,

Jochen

der muss nichts entschlüsseln,

Jochen

das,

Jochen

das ist halt das,

Jochen

was ein Angreifer dann.

Jochen

In der Applikation ist es ja.

Jochen

In der Applikation.

Jochen

Aber das ist ja immer so.

Jochen

Ja,

Jochen

aber er hat es halt besonders einfach,

Jochen

weil,

Jochen

äh,

Jochen

er muss einfach nur,

Jochen

er nimmt einmal

Jochen

das komplette Environment,

Jochen

ne,

Jochen

macht da Jason raus

Jochen

und schickt es an irgendeinen,

Jochen

ich hier alle Secrets in,

Jochen

äh,

Jochen

alle Environments von allen irgendwie

Jochen

stormen.

Jochen

Und dann hinterher guckt er,

Jochen

ob da vielleicht ein ABS-Key drin war

Jochen

oder sowas.

Jochen

Äh,

Jochen

ja,

Jochen

aber,

Jochen

genau,

Jochen

also,

Jochen

aber das würde ich sagen,

Jochen

dass der Nachteil ist,

Jochen

es ist halt besonders,

Jochen

also ich,

Jochen

ich werde,

Jochen

wenn jemand meine Applikation schafft

Jochen

aufzumachen,

Jochen

dann

Jochen

habe ich ein Problem.

Jochen

Ja gut,

Jochen

aber genau.

Jochen

Er hat ja alle Secrets sofort.

Dominik

Also Environments macht ja auch nichts anderes

Dominik

als aus irgendeiner File

Dominik

oder irgendwie anders die Sachen reinzuschreiben.

Jochen

Man könnte es ja auch anders machen.

Jochen

Man könnte ja auch sowas machen wie,

Jochen

äh,

Jochen

man packt es in ein

Jochen

Modul

Jochen

mit komischem Namen,

Jochen

äh,

Jochen

irgendwie

Jochen

und schreibt das halt als Python-Code

Jochen

irgendwo hin.

Jochen

Security by Obscurity.

Jochen

Und,

Jochen

äh,

Jochen

versteht den Kram,

Jochen

ja,

Jochen

also,

Jochen

sag mal so,

Jochen

wirklich helfen tut es nicht,

Jochen

weil du kommst immer noch in den Kram ran,

Jochen

aber die automatischen Dinge,

Jochen

die halt über irgendwie eine,

Jochen

es wird eine Sicherheitslücke in Django gefunden

Jochen

und es,

Jochen

alle,

Jochen

es läuft über alle Dinge,

Jochen

wo man erkennen kann,

Jochen

oh,

Jochen

das ist ein Django,

Jochen

läuft das halt drüber

Jochen

und holt alle Environments

Jochen

und damit alle Secrets.

Jochen

Das ist offensichtlich, ja.

Jochen

Das wird da nicht funktionieren.

Jochen

Das ist genauso,

Dominik

wenn ich den Standard-SSH-Port

Dominik

auf 2224 ändere,

Dominik

damit das nicht,

Dominik

ja,

Dominik

okay,

Jochen

es ist Security by Obscurity so ein bisschen.

Johannes

Was du dann eigentlich machen müsstest,

Johannes

ist,

Johannes

dass du irgendwelche Capabilities hast,

Johannes

also,

Johannes

dass du die Datenfangverbindung

Johannes

nicht mehr direkt über Django machst,

Johannes

wo das Datenbankpasswort drinsteht,

Johannes

sondern,

Johannes

dass es da einen getrennten Service gibt,

Johannes

der ein anderer Benutzer ist,

Johannes

der eine andere Technologie hat,

Johannes

den du nicht automatisch mit aufgemacht hast,

Johannes

der nur von dem Django-System erreichbar ist,

Johannes

wo du quasi sagen kannst,

Johannes

ich möchte jetzt eine Datenbankverbindung haben.

Johannes

Aber,

Johannes

das ist ja dann auch schon wieder so viel Aufwand.

Johannes

Ja,

Johannes

ja,

Johannes

genau.

Johannes

Ja,

Johannes

das ist halt.

Johannes

Ja,

Johannes

ich überlege auch noch was.

Johannes

Andererseits vielleicht fehlt da eine Standardlösung.

Johannes

Vielleicht fehlt da eine Security-Onion,

Johannes

um Django außenrum.

Johannes

Ja,

Johannes

ich weiß es nicht.

Johannes

Aber das,

Johannes

ich überlege immer noch was für diesen

Johannes

profitären Service spricht,

Johannes

weil das sind halt verschiedene Sachen,

Johannes

die halt dann davon getrennt sind,

Johannes

die vielleicht gar nicht so schlecht sind,

Johannes

weil,

Dominik

wenn ich halt aufs Repo zugreifen kann

Dominik

oder auf die SQL-Server komme,

Dominik

ich dann trotzdem an die SQLs nicht dran.

Dominik

Also,

Dominik

irgendwie,

Dominik

ja,

Dominik

ist halt die Frage,

Dominik

wo liegt denn dieser Key zum

Dominik

Produktionsdeployment?

Dominik

Dann kann man ja noch per Netzwerk

Dominik

irgendwo davon und so.

Dominik

Na,

Dominik

ich muss mir nochmal genau überlegen,

Dominik

was davon der coole Vorteil ist.

Dominik

Also,

Dominik

weil alternativ,

Dominik

die anderen Lösungen finde ich alle

Dominik

nicht so convenient

Dominik

und

Dominik

insbesondere,

Dominik

also,

Dominik

es gibt halt diesen

Dominik

Level von,

Dominik

ich habe jetzt DevSecrets

Dominik

für den einen Entwickler,

Dominik

die anderen als die anderen DevSecrets.

Dominik

Ich habe noch SessionSecrets,

Dominik

die stehen alle drin.

Dominik

Die kannst du einfach mit einem

Dominik

Kommando aufsetzen,

Dominik

das funktioniert,

Dominik

das wird eingetragen

Dominik

und es ist nutzbar,

Dominik

es ist übertragbar.

Dominik

Du kannst einfach,

Dominik

wenn irgendwie ein Entwickler aussteigt,

Dominik

kannst du einfach den Account

Dominik

da rausnehmen oder so.

Dominik

Das sind alles Sachen,

Dominik

die ziemlich easy sind

Dominik

und du kannst automatisch dann halt

Dominik

so Sachen migrieren und so.

Dominik

Das ist schon nice.

Dominik

Und das hast du zum Beispiel

Dominik

alles bei diesen anderen Walls

Dominik

nicht mit drin,

Dominik

da musst du alles selber anfassen.

Dominik

Ja,

Dominik

okay.

Dominik

Okay,

Dominik

was ist denn dein Pick?

Johannes

Mein Pick ist ein Artikel

Johannes

mit dem Titel

Johannes

An Interactive Intro to CRDTs.

Johannes

Ich bin ja ein großer Fan von CRDTs,

Johannes

also Concurrent Replicated Data Types.

Johannes

Wie sagt ihr dieses Wort?

Johannes

CRDT.

Johannes

WTF?

Johannes

Everpad?

Johannes

Also ich sage,

Johannes

keine Ahnung,

Johannes

Cravities.

Johannes

Cravities,

Johannes

ja.

Johannes

Also,

Johannes

Conflict-Free Replication,

Johannes

Resolution-Dependent Data Types,

Johannes

irgendwie so.

Johannes

Wo du Datenstrukturen hast,

Johannes

die sich selbst wieder

Johannes

in einen synchronen Zustand bringen.

Johannes

Also sowas wie Etherpad

Johannes

oder Hedge-Doc

Johannes

oder Google Documents,

Johannes

wo zwei Leute gleichzeitig bearbeiten können

Johannes

und am Ende ist ein Dokument da,

Johannes

was bei beiden gleichzeitig.

Johannes

Oh ja,

Johannes

Google Wave.

Johannes

Google Wave war großartig.

Johannes

Live Share.

Johannes

Ja,

Johannes

und da gibt es viele Anwendungsfälle dafür

Johannes

und diese Anwendungsfälle,

Johannes

und diese Artikel

Johannes

ist eben eine interaktive Erklärung,

Johannes

wie diese Datentypen funktionieren

Johannes

und wie man die umsetzen kann.

Johannes

Und weil ich CRDTs großartig finde

Johannes

und jeder sollte die verwenden

Johannes

und überall

Johannes

und ich kann es aber auch nicht,

Johannes

hat mir das sehr weitergeholfen

Johannes

und ich finde das sehr großartig.

Johannes

Und es ist auch schön so

Johannes

mit eben interaktiv.

Johannes

Also du kannst dann,

Johannes

hast dann zwei Malfenster

Johannes

und kannst im einen malen

Johannes

und kannst im anderen malen

Johannes

und kannst auch zwischendurch

Johannes

die Verbindung abschalten

Johannes

und dann sehen,

Johannes

wie die sich synchronisieren

Johannes

und das ist sehr,

Johannes

sehr schön gemacht

Johannes

und sehr anschaulich.

Johannes

Das muss ich unbedingt mal spielen.

Johannes

Das ist sehr gut.

Johannes

Das empfehle ich jedem.

Johannes

Deshalb ist das mein Pick

Johannes

von dieser Episode.

Johannes

Ja,

Johannes

ich hatte ja letztes Mal

Jochen

etwas gepickt,

Jochen

was ich in der Episode davor

Jochen

schon mal gepickt habe.

Jochen

Du musst jetzt eigentlich zwei.

Jochen

Es war auch ein sehr leckerer Pick.

Jochen

Daher dachte ich mir heute,

Jochen

okay,

Jochen

mache ich mal etwas,

Jochen

was ich noch nicht gepickt habe

Jochen

und etwas,

Jochen

das absichtlich besonders

Jochen

unappetitlich und unverdrohlich

Jochen

daherkommt.

Jochen

Und das ist,

Jochen

ich weiß nicht,

Jochen

ob ihr das kennt.

Jochen

Man sollte,

Jochen

man sollte es aber trotzdem

Jochen

mal konsumieren.

Jochen

Nämlich

Jochen

das W-Bock.

Jochen

Oh,

Jochen

das Software Engineering

Jochen

Body of Knowledge.

Jochen

Genau.

Jochen

Haben wir doch alle

Jochen

schon mal konsumiert,

Jochen

sonst wären wir doch gar

Jochen

keine Software Engineer.

Jochen

Also,

Jochen

ja,

Jochen

ich habe es mir jetzt auch

Jochen

irgendwie mal,

Jochen

es sind auch nicht viele Seiten.

Dominik

Ich bin eh in der Ticketschubse

Dominik

Code-Monkey

Dominik

und da gibt es ja andere noch.

Dominik

Ja.

Dominik

Es ist,

Dominik

es ist ein bisschen kompliziert

Dominik

reinzukommen.

Dominik

Man muss halt irgendwie

Dominik

so ein Formular ausfüllen

Dominik

und dann kann man,

Dominik

kriegt man einen Download-Link

Dominik

geschickt,

Dominik

aber genau,

Dominik

und dann kann man,

Dominik

da steht halt,

Dominik

da sind halt alle solche,

Dominik

was ist eigentlich,

Dominik

wenn man sich diese Fragen,

Dominik

die wir ja auch schon

Dominik

öfter diskutiert haben,

Dominik

was sind eigentlich

Dominik

die unterschiedlichen Arten

Dominik

von Tests,

Dominik

irgendwie Unit Integration

Dominik

oder sonst irgendwas,

Jochen

da wird das alles definiert.

Jochen

Und,

Jochen

also ob das jetzt stimmt,

Jochen

Da wird einfach die Wahrheit

Jochen

festgelegt.

Jochen

Genau,

Jochen

aber sozusagen,

Jochen

um diese Diskussion zu beenden,

Jochen

kann man immer sagen,

Jochen

ja,

Jochen

ich verwende jetzt die Definition

Jochen

hier aus dem Ding,

Jochen

sondern auch die ganzen Prozesse

Jochen

und so,

Jochen

das ist alles definiert

Jochen

und was sind die Requirements

Jochen

und wie funktioniert das

Jochen

und was gibt es alles für,

Jochen

weiß ich nicht,

Jochen

Dinge, die man so tun kann

Jochen

und welche Version.

Jochen

Das große Glossary ist das.

Jochen

Nummer drei,

Jochen

Version 3.0

Jochen

ist jetzt die aktuelle,

Jochen

gerade, ja.

Jochen

Das ist das große Glossar

Jochen

für alle Dinge,

Jochen

die Software entwickelt.

Jochen

Ja,

Jochen

die Festlegung der Wahrheit.

Jochen

Ja.

Dominik

Die einzig wahre Wahrheit TM.

Dominik

Die ist hier festgelegt.

Dominik

Na dann.

Dominik

Ja,

Dominik

sehr appetitlich auch

Dominik

und sehr schön.

Dominik

Ja,

Dominik

das war auch schon der Trick,

Dominik

oder?

Dominik

Wohl bekommens.

Dominik

Na gut.

Dominik

Ja,

Dominik

dann eine

Dominik

nicht so Kybernetis-Kybernetis-Folge.

Dominik

Aha.

Dominik

Oh,

Dominik

doch.

Dominik

Ja,

Dominik

doch.

Dominik

Nicht so viel dazu zu sagen.

Dominik

Ja,

Dominik

wir haben nicht so viel erklärt,

Dominik

wie man das benutzt,

Dominik

aber das müsst ihr selber rausfinden.

Johannes

Aber wenn ihr wirkliche Dinge wissen wollt,

Johannes

dann dürft ihr nicht hierher zukommen.

Johannes

Ja,

Johannes

es gibt da so ein paar einfache Sachen,

Johannes

den Golo hatte irgendwie noch.

Johannes

Vielleicht können wir das auch noch verlinken.

Dominik

So ein schöner YouTube-Einsteiger-Ding.

Dominik

Ja,

Dominik

vielleicht nochmal,

Dominik

wie du dein Minikube aufgesetzt hast

Dominik

und was man damit macht.

Dominik

Ja,

Dominik

genau.

Dominik

Also ich habe eigentlich

Dominik

Golos Tutorial so ein bisschen gemacht.

Dominik

Ist das dann dein zweiter Pick?

Dominik

Ist das der Pick,

Dominik

der Jochens letztwöchige?

Dominik

Ja,

Dominik

der Kanal,

Dominik

der die Woche irgendwie so Sachen macht.

Dominik

Na gut,

Dominik

es ist relativ einfach auf Deutsch,

Dominik

ein bisschen langsamer als wir reden

Dominik

und es ist ganz nett.

Dominik

Vielleicht sollte man das am Anfang sagen.

Dominik

Alles klar?

Dominik

Okay.

Dominik

Dann,

Dominik

ja,

Dominik

bleibt uns gewogen.

Dominik

Haltet uns ein,

Dominik

wann auch immer ihr hört.

Dominik

Mittags,

Dominik

morgens,

Dominik

abends,

Dominik

nachts.

Dominik

Einen guten Tag

Dominik

und gute Zeit.

Dominik

Bis zum nächsten Mal.

Dominik

Tschüss Johannes,

Dominik

bis bald.

Dominik

Ciao.

Dominik

Tschö.