Become a Creator today!Start creating today - Share your story with the world!
Start for free
00:00:00
00:00:01
Secrets Not Included: Automatisierte Deployments sind kein Luxus mehr image

Secrets Not Included: Automatisierte Deployments sind kein Luxus mehr

S1 E14 · Secrets Not Included
Avatar
28 Plays11 days ago

In dieser Folge von Secrets Not Included knüpfen Daniel und Ole direkt an den Cliffhanger der letzten Episode an — und sprechen darüber, warum automatisierte Deployments, standardisierte Entwicklungsumgebungen und reproduzierbare Setups heute kein Nice-to-have mehr sind, sondern die Grundlage für saubere Softwareentwicklung.

Es geht um lokale Dev-Umgebungen, die möglichst nah an Produktion sind, um Makefiles, Container, Testdaten, reproduzierbare Fehlerbilder und um die Frage, warum „works on my machine“ endlich aussterben sollte. Daniel und Ole zeigen dabei aus zwei unterschiedlichen Perspektiven, warum Standardisierung nicht zu weniger Flexibilität führt, sondern im Gegenteil zu mehr Geschwindigkeit, weniger Fehlern und deutlich weniger Chaos im Alltag.

Eine Folge über Entwicklungsrealität statt Romantik: direkt, technisch und mit genug Trauma aus FTP-, SVN- und Produktivsystem-Zeiten, um zu wissen, warum man es heute besser machen sollte.

--

Ole ist Gründer der Moselwal Digitalagentur & OnlyOle und Beschäftigt sich mit Hyperautomatisierurng (auch mit KI), Sicherheit und CMS.

Daniel ist Geschäftsführer der xebro GmbH und sein Schwerpunkt liegt auf PHP, Symfony, E Commerce, DevOps und AWS.

Recommended
Transcript

Einleitung und Auflösung des Cliffhangers

00:00:01
Kai Ole Hartwig
Willkommen zu einer weiteren wunderbaren Folge Secrets Not Included, nachdem ich letztes Mal Daniel abrupt in seinen Diplomates unterbrochen habe.
00:00:12
Daniel Langemann
Ja, wir lösen endlich den Cliffhanger auf.
00:00:12
Kai Ole Hartwig
Wieder zurück mit Daniel und Ole und ich glaube, wir steigen einfach nahtlos ein in das Ende der letzten Woche.
00:00:13
Daniel Langemann
So, nach der letzten Folge geht es jetzt nicht weiter, mitten im Plot.

Diskussion über Deployment-Standardisierung

00:00:22
Kai Ole Hartwig
und reden einfach mal so ein bisschen über Deployment und Standardisierung, auch was Entwicklungsumgebung angeht.
00:00:40
Kai Ole Hartwig
Sehr gut.
00:00:41
Kai Ole Hartwig
Ich glaube, wir waren dabei stehen geblieben, dass wir gesagt haben, automatisierte Deployments sind heute das Bare Minimum und kein Princess Treatment mehr.
00:00:52
Kai Ole Hartwig
nicht nur für Entwickler, sondern für die gesamte Company.
00:00:56
Kai Ole Hartwig
Und Und ja, aber was müssen wir denn eigentlich machen, außer diese Pipelines und dass das alles mal so fluffig daherkommt und tatsächlich funktioniert?
00:01:09
Daniel Langemann
Ja, also wir reden ja immer viel von Secrets und wie Sachen zu funktionieren haben.
00:01:15
Daniel Langemann
Und es fängt, also Pipeline, das war das Fazit vom letzten Mal ja so ein bisschen, je schneller wir deployen können, umso schneller können wir auf Änderungen, Patches, Inzidenz und sowas reagieren.
00:01:27
Daniel Langemann
Aber...
00:01:29
Daniel Langemann
Das fängt ja nicht nur beim Deployment an, sondern eigentlich viel früher.
00:01:33
Daniel Langemann
Und zwar ist es, es fängt mit der Entwicklerumgebung an.
00:01:36
Daniel Langemann
Also wie ich auf dem lokalen Rechner entwickle,
00:01:40
Daniel Langemann
Habe ich die gleichen Abhängigkeiten installiert?
00:01:44
Daniel Langemann
Gibt es Testdaten?
00:01:46
Daniel Langemann
Wie sind Sachen aufgebaut?
00:01:48
Daniel Langemann
Und wie komme ich theoretisch von?
00:01:50
Daniel Langemann
Oder ich sage mal, theoretisches Beispiel ist, Chef ruft an, oh mein Gott, im Shop ist irgendwas kaputt.
00:01:52
Kai Ole Hartwig
Mhm.
00:01:56
Daniel Langemann
Ein Icon, ein Bild ist verrutscht, ein Button ist rot und nicht grün.
00:01:59
Daniel Langemann
Irgendwie solche Sachen gibt es ja immer so.
00:02:00
Daniel Langemann
Man ist gerade schön in seinem Thema und dann wird man so komplett rausgerissen.
00:02:05
Daniel Langemann
Erste Frage ist, okay, auf welchem Stand ist denn das Produktivsystem gerade?
00:02:08
Daniel Langemann
Weil ich bin ja gerade aktiv am Entwickeln, ein anderer Kollege ist was am Machen.
00:02:12
Daniel Langemann
Es gibt schon zwei Features, die sind fertig, die sollen ausgerollt werden, die habe ich auch mitgetestet.
00:02:16
Daniel Langemann
Und schon hast du so erstmal, was ist gerade die Produktivversion?
00:02:22
Daniel Langemann
Vielleicht hast du auch irgendeinen komischen Fall, den du lokal hast, das Feature gebaut.
00:02:27
Daniel Langemann
So ein üblicher Fall mit Works on my Machine.
00:02:27
Kai Ole Hartwig
Mhm.
00:02:30
Daniel Langemann
Das ist bis auf Produktiv gekommen und da knallt das.
00:02:33
Daniel Langemann
wo du sagst, komisch, es hat doch mit meinen Testdaten funktioniert, wie kriege ich jetzt eine Umgebung hergestellt, die exakt wie Prod ist, mit Testdaten, wo ich sagen kann, vielleicht gibt es da irgendein Produkt, was ich, oder irgendeine Kombination an Flags, die ein Produkt haben kann, zum Beispiel im Online-Shop, die dann mir einfach durchgegangen sind und dann ein Problem verursachen oder sowas, ne.
00:02:54
Kai Ole Hartwig
Ach Daniel, du machst das alles viel zu kompliziert, weißt du, ne?
00:02:57
Kai Ole Hartwig
Wir haben früher direkt auf dem Produktivsystem noch mit FTP deployed, warum sollten wir nicht einfach drauf gehen?

Herausforderungen durch inkonsistente Entwicklungsumgebungen

00:03:04
Daniel Langemann
Ja, war das... Ich darf jetzt öffentlich keine Gewalt androhen.
00:03:04
Kai Ole Hartwig
Aufs Produktivsystem, dann entwickeln wir kurz da mit Cloud Code oder Open Code oder whatever welcher KI und das löst doch alle Probleme.
00:03:13
Kai Ole Hartwig
Ich weiß gar nicht, was du da jetzt... Gut, dass uns ein paar Kilometer trennen.
00:03:23
Daniel Langemann
Nein, also jeder hat das schon mal gemacht, ich natürlich auch.
00:03:30
Daniel Langemann
Es führt einfach dazu, wenn ich alleine als Entwickler arbeite, dann kann sowas fast noch funktionieren.
00:03:36
Daniel Langemann
Also ich bin zu schlampig dafür, ich schaffe das selbst alleine nicht, aber es gibt ordentliche Leute, die schaffen das.
00:03:42
Daniel Langemann
spätestens ab zwei oder drei Entwicklern ist das so, irgendjemand macht was, lädt was hoch, vergisst die Datei.
00:03:47
Daniel Langemann
Und schon hast du auf jedem Rechner, also jeder Entwickler hat eine andere Version.
00:03:51
Daniel Langemann
Der eine hat seine Version hochgeladen, Entwickler B lädt seine, also eine Version von einer anderen Datei hochgeladen.
00:03:57
Kai Ole Hartwig
Nein, nein.
00:03:58
Kai Ole Hartwig
Also ich sage nicht, wir gehen zurück zu FTP-Uploads, sondern ich sage, lass uns doch die Cloud-Session von einer KI einfach auf dem Produktivsystem laufen und die KI da arbeiten.
00:04:11
Daniel Langemann
Du möchtest dich bald trennen sehen.
00:04:12
Kai Ole Hartwig
Also ich kenne jemand, der tut das.
00:04:12
Daniel Langemann
Ja, ich versuche gerade,
00:04:13
Kai Ole Hartwig
Also es bin nicht mal ich selber.
00:04:17
Kai Ole Hartwig
Bevor mir das jemand unterstellt, die Person schreibt das auch gerne selber öffentlich im Internet, dass sie es genauso macht und das komplette Produkt eine große Index-PHP-Datei ist.
00:04:33
Kai Ole Hartwig
Jetzt habe ich dich kurz geschockt.
00:04:35
Kai Ole Hartwig
Ich trinke kurz einen Tee zwischendrin.
00:04:38
Kai Ole Hartwig
Ohne Rum.
00:04:40
Daniel Langemann
Ich versuche gerade den nächsten Shitstorm zu vermeiden, indem ich mich zu sehr dazu äußere und... Wie kann ich denn da... Hm.
00:04:47
Kai Ole Hartwig
Nein, aber wir sind uns ja einig, wenn man, also zugegebenerweise ist es ein einzelner Entwickler.
00:04:53
Kai Ole Hartwig
Ich finde das ein crazy Ansatz.
00:04:55
Kai Ole Hartwig
Mir ist der zu verrückt.
00:04:57
Kai Ole Hartwig
Ähm.
00:04:58
Daniel Langemann
Nee.
00:04:59
Daniel Langemann
Ja, hm.
00:04:59
Kai Ole Hartwig
Da gibt es auch keine Pipelines, ne?
00:05:00
Kai Ole Hartwig
Übrigens fällt mir dabei so auf.
00:05:02
Kai Ole Hartwig
Brauchst du ja nicht, wenn du auf dem Produktivsystem arbeitest.
00:05:05
Kai Ole Hartwig
Aber jeder hat ja halt ein Testsystem, ne?
00:05:08
Kai Ole Hartwig
Um mal den Bogen zu bekommen.
00:05:10
Kai Ole Hartwig
Wenn das Produktivsystem natürlich nicht das Testsystem ist, gewinnt man schon viel.
00:05:14
Daniel Langemann
Ja, ja.
00:05:16
Kai Ole Hartwig
Und, ähm, hey, ja, natürlich entwickelt man auch mit KI gar nichts dagegen, aber vielleicht auch nicht auf dem Produktivsystem.
00:05:21
Kai Ole Hartwig
Wir haben mal festgestellt, ähm,
00:05:25
Kai Ole Hartwig
die KI-produktive Infrastruktur managen zu lassen, selbstständig ohne Review ist auch keine gute Idee.
00:05:32
Kai Ole Hartwig
Aber erst.
00:05:32
Kai Ole Hartwig
Also, nicht, dass mir das nicht letztens selber passiert ist.
00:05:34
Daniel Langemann
Ihr räumt gerne auf, so Produktivdatenbanken habe ich gehört.
00:05:45
Daniel Langemann
Hat mir ein Freund erzählt.
00:05:45
Kai Ole Hartwig
Es war aber nur das Testsystem, also nicht so schlimm.
00:05:45
Daniel Langemann
Ja.
00:05:45
Daniel Langemann
Genau.
00:05:48
Kai Ole Hartwig
Auf dem Produktivsystem der KI Zugriff geben, dafür bin ich nicht mutig genug.
00:05:53
Kai Ole Hartwig
Aber auf dem Testsystem hat sich tatsächlich einfach mal die Datenbank weggeschmissen.
00:05:58
Kai Ole Hartwig
Sehr gut.
00:06:00
Kai Ole Hartwig
Aber heißt ja, das, was, glaube ich, wir beide bevorzugen, sind starke Entwicklungsumgebungen, die im Prinzip das Produktivsystem vollständig nachbilden.
00:06:13
Kai Ole Hartwig
oder zumindest in dem Teil vollständig nachbilden, in dem wir arbeiten.
00:06:17
Kai Ole Hartwig
Also es gibt ja sehr große Systeme, wo CMS, Shop und diverse andere Services rumfliegen, in einem Kubernetes-Cluster oder in mehreren Clustern, in mehreren Namespaces und so weiter und so fort, geografisch natürlich hervorragend verteilt, damit es auch spannender wird.
00:06:38
Kai Ole Hartwig
Ähm...
00:06:40
Kai Ole Hartwig
Und dann müssen wir ja darüber nachdenken, was machen wir denn damit, die Entwickler auch irgendwie parat kommen.
00:06:46
Kai Ole Hartwig
Miteinander, aber auch mit der Umgebung an sich.
00:06:50
Kai Ole Hartwig
Das heißt, wir brauchen ja auch eine Standardisierung dieser Entwicklungsumgebung.
00:06:53
Kai Ole Hartwig
Das war ja die Richtung, in die du gerade gehen wolltest, bevor ich gesagt habe, hey, ein Index-PAP-File auf dem Produktivsystem mit der KI.
00:07:02
Daniel Langemann
Da werde ich heute Nacht von träumen, danke.
00:07:05
Kai Ole Hartwig
Bitte, den Psychiater musst du aber bitte selber bezahlen.
00:07:09
Daniel Langemann
Ja, ja, mache ich.
00:07:10
Daniel Langemann
Ja, also die Entwicklungsumgebung ist einfach so, ich möchte ja erst mal
00:07:16
Daniel Langemann
etwas ausprobieren können.
00:07:18
Daniel Langemann
Also wenn ich ein Feature baue oder ein Bug fixe, ich möchte etwas ausprobieren können.
00:07:19
Kai Ole Hartwig
Ja, also nur wenn du in Deutschland Zug fährst.
00:07:22
Daniel Langemann
Wie weit kann ich das denn lokal?
00:07:25
Daniel Langemann
Und dann ist zum Beispiel die Frage, gerade wenn man remote arbeitet, nicht immer ist eine gute Internetverbindung da.
00:07:30
Daniel Langemann
Also es könnte Leute geben, die arbeiten aus dem Zug.
00:07:33
Daniel Langemann
Zum Beispiel, da kannst du gar nicht per SSH irgendwie auf den Server und da andauernd tun und machen.
00:07:41
Daniel Langemann
Ja, das ist jetzt meine Annahme.
00:07:44
Daniel Langemann
In anderen Ländern vielleicht nicht, aber
00:07:47
Kai Ole Hartwig
Also ich kann dir sagen, sobald der Eurostar über die Gänze ist, funktioniert Internet tadellos im Zug.
00:07:55
Daniel Langemann
Schalten wir es dann an?
00:07:55
Kai Ole Hartwig
Selbst unterm Ärmelkanal, alles kein Thema.
00:07:56
Daniel Langemann
Ja, also...
00:08:00
Kai Ole Hartwig
Da kannst du auch deinen Videolivestream machen, das ist kein Thema.
00:08:07
Kai Ole Hartwig
Also nehmen wir an, du bist irgendwo in Deutschland unterwegs und hast eine schlechte Internetverbindung, was ja ein realistisches Szenario ist, da wird jeder, der hier unterwegs ist, zustimmen.
00:08:19
Kai Ole Hartwig
Oder halt nicht so viel Datenvolumen, um mal eben mal wieder Container-Dependencies oder sonst irgendwas runterzuladen.
00:08:26
Daniel Langemann
Andersrum ist es ja auch so, externe Dienste sind auch nicht zuverlässig.
00:08:29
Daniel Langemann
Also es kann ja immer wieder mal sein, also nicht nur das Internet weg ist, sondern es gibt genug Gründe, dass irgendwelche Verbindungen mal nicht da sind, dass es entweder keine Testumgebungen gibt, da kannst du dann auch schlecht irgendwie Produkte testen, wenn es nur das Produktivsystem gibt.
00:08:45
Daniel Langemann
Also erstmal die Abhängigkeiten nach außen hin möchte man natürlich nicht haben.
00:08:49
Kai Ole Hartwig
Mhm.
00:08:49
Daniel Langemann
Man möchte aber auch möglichst nah, also ich sage möglichst nah, 100%ig geht eigentlich selten, aber möglichst nah am Produktivsystem sein.
00:08:59
Daniel Langemann
Ich möchte zum Beispiel sagen können, was passiert, wenn die Datenbank nicht da ist?
00:09:03
Daniel Langemann
Wie verhält sich meine Applikation?
00:09:05
Daniel Langemann
Das kann ich zum Beispiel, wenn ich lokal alles nachgebaut habe, einfach mal die Datenbank abschießen und die Seite aufrufen und gucken, was passiert.
00:09:13
Daniel Langemann
Im Produktivsystem testen wäre jetzt nicht so cool und in anderen Setups ist das auch schwer dann zu testen zum Beispiel.
00:09:20
Daniel Langemann
Oder wie ich vorhin gesagt habe, Fixture-Daten finde ich zum Beispiel für mich super hilfreich, weil ich einfach

Bedeutung von Makefiles und Docker für konsistente Umgebungen

00:09:27
Daniel Langemann
immer wieder mich durch Sachen durchklicken muss.
00:09:27
Kai Ole Hartwig
Ja.
00:09:29
Daniel Langemann
Und wenn es darum geht, irgendwas zu löschen in der Datenbank und ich baue gerade das Feature, was zum Löschen da ist.
00:09:35
Daniel Langemann
wenn ich da tausendmal klicken muss und das wieder von Hand anlegen muss, da werde ich verrückt dabei.
00:09:42
Daniel Langemann
Und so ist es so, wenn du Fixstandaten zum Beispiel hast und kannst sagen, das Schönste, was dir als Entwickler passieren kann, ist, du gehst morgens hin und sagst, start, web-server startet, eine Datenbank startet, vielleicht hast du ein Redis mit im System, irgendwie, 3 Local Storage oder so ist noch mit eingebunden, also irgendwelche Sachen und die ploppen alle auf, es läuft
00:10:03
Kai Ole Hartwig
Ne?
00:10:05
Daniel Langemann
du hast einen Quelltext, kannst im Browser Local Host eingeben oder vielleicht sogar mit PSSH auf irgendeine lokale Domain zugreifen und kannst dann entwickeln.
00:10:14
Daniel Langemann
Machst irgendwas kaputt, gerade die Jüngeren oder die Neueren müssen ja auch keine Angst haben, was kaputt zu machen.
00:10:20
Daniel Langemann
Ja, das war am Anfang für mich ein großes Problem.
00:10:23
Daniel Langemann
Wir haben zum Beispiel in einer Agentur, war früher so üblich, zentral auf einem Server gearbeitet,
00:10:29
Daniel Langemann
in einem Verzeichnis mit vier Entwicklern.
00:10:32
Daniel Langemann
Ich habe irgendwas ausprobiert, war halt ein altes Drupal und das hat direkt dazu geführt, dass die Entity nicht zur Datenbank passt.
00:10:40
Daniel Langemann
Bumm, fünf Leute arbeitslos.
00:10:42
Daniel Langemann
Also nicht in der Lage zu arbeiten, weil ich sie blockiert habe.
00:10:45
Daniel Langemann
Und das hat dazu geführt, dass ich immer mehr Angst hatte.
00:10:46
Kai Ole Hartwig
Ich dachte, das war die Datenbank mit den Arbeitsverträgen.
00:10:52
Kai Ole Hartwig
Alle entlassen.
00:10:52
Kai Ole Hartwig
Nein, aber, ja.
00:10:52
Daniel Langemann
Ja, okay, nicht ganz, also arbeitslos im Sinne von die Band.
00:10:57
Daniel Langemann
Die haben sich gefreut über meine Hilfe, ne?
00:10:58
Kai Ole Hartwig
Ja, genau.
00:11:01
Kai Ole Hartwig
Da kommt Freude auf.
00:11:02
Kai Ole Hartwig
Ich habe auch so Dinge erlebt zu SVN-Zeiten noch, Subversion-Zeiten, wo halt alle Projekte in einem Ding drin lagen.
00:11:12
Daniel Langemann
Hm.
00:11:13
Kai Ole Hartwig
Und dann hat da jemand mit Certification einen Fehler gemacht und schon konnten x Leute nicht arbeiten.
00:11:19
Kai Ole Hartwig
Das ist so.
00:11:23
Kai Ole Hartwig
Da sind wir ja, wir beide.
00:11:26
Kai Ole Hartwig
Andere möchte ich da jetzt nicht inkludieren.
00:11:28
Kai Ole Hartwig
Zum Glück sehr weit weg von.
00:11:29
Kai Ole Hartwig
Und ich kenne auch viele andere Leute, die da sehr weit weg von sind.
00:11:32
Kai Ole Hartwig
Ich möchte aber nicht ausschließen, dass so etwas noch irgendwo überlebt hat die letzten Jahrzehnte.
00:11:38
Kai Ole Hartwig
Und ich finde...
00:11:41
Kai Ole Hartwig
Deswegen muss man auch so sehr über Standardisierung nachdenken, nicht nur in der Softwareentwicklung, sondern auch in der Entwicklungsumgebung.
00:11:47
Kai Ole Hartwig
Wir machen das zum Beispiel so, ich bin ja extrem faul, was sowas angeht, wir haben standardisiert im Makefiles, die dann, und jetzt kommt's, aber Teile der Compose-Datei auslesen, der Composer-JSON, Composer-JSON, und anhand dessen hingehen,
00:11:57
Daniel Langemann
Dito?
00:11:57
Daniel Langemann
Dito?
00:12:11
Kai Ole Hartwig
mir meine Compose ja mal aus der OCI Hürge Street ziehen.
00:12:17
Kai Ole Hartwig
Also zum Beispiel wissen, dieses Projekt benutzt Laravel und Postgres oder Typo3 und Postgres und MariaDB und so.
00:12:27
Daniel Langemann
Mhm.
00:12:28
Kai Ole Hartwig
Und dann...
00:12:30
Kai Ole Hartwig
halt die Entwicklungsumgebung mit den richtigen Compose-Files quasi aufbauen und starten.
00:12:37
Kai Ole Hartwig
Und dann aber auch abhängig davon die richtigen Make-Files noch einbinden, damit ich natürlich in Typo-3-Projekts die Typo-3-Klamotten habe und nicht die Laravel-Sachen und umgekehrt.
00:12:49
Kai Ole Hartwig
Und ganz ehrlich, es ist einfach ein extremer, entspannter Luxus, morgens hinzugehen und zu sagen, Make, Start.
00:12:59
Daniel Langemann
Make Restart ist noch geiler, wenn nichts mehr läuft.
00:13:01
Daniel Langemann
Ja.
00:13:01
Daniel Langemann
Hm.
00:13:03
Kai Ole Hartwig
Genau, und halt importier mir eine Datenbank, exportier mir die Datenbank, mach mal die ganzen Tests, prüf mal dieses, mach mal jenes.
00:13:13
Kai Ole Hartwig
Ich liebe es einfach, mit diesen Make-Files zu arbeiten und damit auch komplett unsere eigenen Container zu benutzen.
00:13:22
Kai Ole Hartwig
Das sind am Tagesende mehr oder weniger die Container, die wir auch deployen und ausrollen.
00:13:26
Kai Ole Hartwig
Das heißt, ich habe
00:13:29
Kai Ole Hartwig
die gleichen Probleme wie auf Prod habe ich lokal.
00:13:34
Kai Ole Hartwig
Natürlich habe ich gar keine Probleme, weil das natürlich alles total immer auf Anhieb funktioniert und ich niemals hingehen muss und sagen muss, importiere mir die Datenbank nochmal neu.
00:13:35
Daniel Langemann
Niemals.
00:13:44
Kai Ole Hartwig
Ich habe das jetzt
00:13:44
Daniel Langemann
ein schönes Beispiel wäre zum Beispiel, du brauchst irgendeine PHP-Extension, SQL-E, weiß ich nicht, Intel oder was auch immer, packst du mit deinem Setup sozusagen einmal in die Docker-File und sobald du das durchdeployst, werden ja auch die Container neu gebaut in der Pipeline später und das purzelt automatisch bis in Pod durch, ohne dass du jetzt irgendwie noch ein Pull-Request-Infos machen musst mit auf Pod, muss noch das vorher installiert werden, du musst nicht einer anderen Abteilung Bescheid sagen, das ist so, das ist alles in einem Code und
00:14:14
Daniel Langemann
Rutscht bis auf Prott, wenn ich das richtig verstanden habe, ne?
00:14:16
Daniel Langemann
Mhm.
00:14:17
Kai Ole Hartwig
Ja, genau.
00:14:18
Kai Ole Hartwig
Das ist sehr unabhängig davon, ob du jetzt irgendwie ein standardisiertes lokales Setup fährst oder ob du ernsthaft Container machst.
00:14:25
Kai Ole Hartwig
Wenn du ernsthaft Containerisierung machst und die Container
00:14:29
Kai Ole Hartwig
überall einsetzt, dafür brauchst du ja noch keine standardisierte Entwicklungsumgebung mit den Makefiles und hast du nicht gesehen, dann kommst du, ich schaute das auf dem Sofa runter, egal, dann hast du ja auch diese Vorteile, das sind ja einfach Vorteile von Containern und die Makefiles machen dir halt das Leben so schön einfach, indem du deine Standardaufgaben ähm
00:14:49
Daniel Langemann
Ich kann mir sowas nicht merken.
00:14:58
Kai Ole Hartwig
automatisiert hast.
00:14:59
Kai Ole Hartwig
Du musst nicht mehr darüber nachdenken, wie funktioniert denn jetzt, dass ich den Datenbankdump einspiele?
00:15:05
Kai Ole Hartwig
Oder wie komme ich denn in diesen Container rein?
00:15:07
Kai Ole Hartwig
Ja, Make, Shell oder SSH oder whatever.
00:15:13
Kai Ole Hartwig
Mache Pizza.
00:15:14
Daniel Langemann
Ich nutze Make gerne dafür, um einfach mehrere Befehle zu verketten, die ich immer wieder eingeben muss und die ich mir entweder nicht merken kann oder halt um so ein bisschen Magie mit einzubauen, entweder Find oder sowas, wo man sagt, man sucht nach gewissen Dateien und führt auf diesen dann was aus, was einfach so in der Shell so ein gepipter Befehl wäre, den packe ich einfach bei Make rein und ich kann mir einfach dann Make, weiß ich nicht, Clean oder sowas zum Beispiel viel einfacher merken.
00:15:20
Kai Ole Hartwig
Das habe ich auch zum Beispiel.
00:15:42
Daniel Langemann
Oder andere Befehle, ne?
00:15:43
Kai Ole Hartwig
Ja, ich kombiniere auch im Make tatsächlich unterschiedliche Make-Befehle.
00:15:43
Daniel Langemann
Mhm.
00:15:43
Daniel Langemann
Mhm.
00:15:47
Kai Ole Hartwig
Ich sage jetzt mal Make Start hat auch zum Beispiel Make Frontend Build drin.
00:15:54
Kai Ole Hartwig
Und so Sachen, damit so Sachen dann halt auch mitlaufen.
00:15:56
Kai Ole Hartwig
Was interessiert mich, wie dieser Frontend Build funktioniert?
00:15:58
Kai Ole Hartwig
Da liegt ein Bash-Script, das das aufruft und macht und tut, dass dann irgendwie die...
00:16:04
Kai Ole Hartwig
Packages oder so.
00:16:06
Kai Ole Hartwig
Das ist jetzt wieder der Part, wo ich nicht Frontend-Entwicklung, aber aufruft und da die Bildbefehle ausführt.
00:16:12
Kai Ole Hartwig
So, I don't care am Tagesende, weil das ist nicht mein Spielbereich, wo ich mich gut auskenne.
00:16:18
Daniel Langemann
Ja.
00:16:18
Daniel Langemann
Ja.
00:16:18
Kai Ole Hartwig
Das ist standardisiert, das liegt da drin, das funktioniert in jedem Projekt.
00:16:24
Kai Ole Hartwig
Und dann ist auf einmal das Leben so entspannt, ja, du hampelst da nicht mehr rum.
00:16:30
Kai Ole Hartwig
Genauso wie halt Composer Update, Composer Install und NPM und der ganze Kram wird halt im Container ausgeführt.
00:16:36
Kai Ole Hartwig
Der Container bringt die passende NPM-Version mit.
00:16:39
Kai Ole Hartwig
Das war früher, fand ich, das Schlimmste wirklich irgendwie für mich zum Entwickeln war,
00:16:49
Kai Ole Hartwig
Frontend-Build-Stack und dann wollte ich irgendwas einbauen und testen, ob mein Backend-Zeugsets funktioniert und dann hat aber das Frontend nicht gebaut und dann sah alles aus wie Kraut und Rüben
00:17:04
Kai Ole Hartwig
Und dann findest du das Formular nicht oder so.
00:17:06
Kai Ole Hartwig
Also als Backendentwickler ist mir relativ egal.
00:17:08
Kai Ole Hartwig
Aber dann kannst du es ja auch niemandem zeigen mit, hey, schau mal, das funktioniert jetzt.
00:17:12
Kai Ole Hartwig
Ist das so, wie wir das besprochen haben?
00:17:14
Kai Ole Hartwig
Sondern es sieht direkt alles scheiße aus.
00:17:16
Kai Ole Hartwig
Wenn du das im PM zeigst, dann zumindest in meinen Agenturzeiten früher, dann
00:17:20
Kai Ole Hartwig
nee, so können wir aber nicht.
00:17:23
Kai Ole Hartwig
Ja, aber das ist doch gar nicht meine Arbeit.
00:17:23
Daniel Langemann
Ja.
00:17:23
Daniel Langemann
Ja, das macht vieles einfacher.
00:17:25
Kai Ole Hartwig
Das ist der Frontend-Bild.
00:17:26
Kai Ole Hartwig
Keine Ahnung, da gab es irgendein Update.
00:17:27
Kai Ole Hartwig
Was weiß ich denn, wie das funktioniert?
00:17:30
Kai Ole Hartwig
Diese Themen hast du halt alle nicht mehr.
00:17:32
Kai Ole Hartwig
Du hast nicht mehr dieses, ja, aber bei mir hat das funktioniert, weil es halt immer in dem Container war und der Container wird halt genommen, verschickt und kommt halt da an und fertig.

Modulare und standardisierte Entwicklungsumgebungen

00:17:43
Kai Ole Hartwig
Was machst du denn noch?
00:17:45
Kai Ole Hartwig
Fancy Stuff mit deinen Makefights.
00:17:47
Daniel Langemann
Also ich habe, bei mir ist über die Jahre etwas gewachsen, sage ich mal, wie ich glaube, jeder hat so sein eigenes Bildsystem und ich habe mir meins mittlerweile so aufgebaut, dass ich gesagt habe, ich möchte möglichst wenig Technik haben.
00:17:47
Kai Ole Hartwig
Jetzt alle Geheimnisse auf den Tisch hier heute.
00:18:00
Daniel Langemann
Also es soll fast nichts auf dem Host ausgeführt werden.
00:18:04
Daniel Langemann
Bei mir ist es, glaube ich, aktuell einmal Make.
00:18:08
Daniel Langemann
Ich habe einmal YQ, also um Jason so ein bisschen zu manipulieren für die ganzen Composer-Yamels.
00:18:14
Daniel Langemann
Und eigentlich
00:18:15
Kai Ole Hartwig
Ja, und halt auch, um auszulesen halt vor allem, ne?
00:18:19
Daniel Langemann
Was meinst du mit auslesen?
00:18:20
Daniel Langemann
Also, ja, da mache ich möglichst wenig mit.
00:18:20
Kai Ole Hartwig
Ja, die JSON- und HTML-Files auszulesen, um halt darauf zu reagieren, was das ist.
00:18:26
Daniel Langemann
Also ich habe wirklich ein Make-File, was über einen Unterordner, der auch Docker heißt, einfach drüber iteriert.
00:18:33
Daniel Langemann
Für mich war dieser Modul-Gedanke da, dass es da so ein Paket, also ein Ordner PHP gibt, ein Postgres, ein Node.js.
00:18:40
Daniel Langemann
Da liegen immer so die passenden Dateien drin, also Config für einen Apache, wenn im Projekt einer gebraucht wird oder weiß ich nicht, Franken-PAP, Caddy-Config.
00:18:50
Daniel Langemann
Irgendwelche Sachen liegen dann immer in dem passenden Ordner.
00:18:52
Daniel Langemann
Make macht per Find einfach einen Docker-Compose, sucht alle Compose-Jammels, die da drin liegen und macht einen Docker-Compose ab.
00:19:00
Daniel Langemann
Dann verteile ich noch Umgebungsvariablen, die benötigt werden fürs Dev-Setup, also damit zum Beispiel die Database-URL im Container gesetzt ist für die lokale Entwicklung, damit PHP auf, ne?
00:19:01
Kai Ole Hartwig
Ja.
00:19:13
Daniel Langemann
Und der Rest, also da versuche ich möglichst wenig Logik.
00:19:16
Daniel Langemann
Also ich habe ein bisschen Bash-Skripte und ein bisschen Farbe noch mit reingemacht, damit es hübsch aussieht.
00:19:22
Daniel Langemann
Und viel mehr versuche ich da aktuell nicht.
00:19:26
Kai Ole Hartwig
Ja, dann machen wir tatsächlich mal ein bisschen unterschiedlich.
00:19:28
Kai Ole Hartwig
Ich mache ja in der Composer-JSON steht die PHP-Version.
00:19:32
Kai Ole Hartwig
Sorry.
00:19:33
Daniel Langemann
Mmh.
00:19:33
Daniel Langemann
Mmh.
00:19:38
Kai Ole Hartwig
Das löst aus, welchen Container ich benutze vom PHP.
00:19:45
Kai Ole Hartwig
Ja, das war gerber.
00:19:47
Kai Ole Hartwig
Aber ich habe halt zum Beispiel auch keine Compose-Files bei mir im Repository liegen.
00:19:51
Kai Ole Hartwig
sondern die sind so verallgemeinert, dass ich jetzt, ich sag jetzt mal, ein Basisding habe und dann Ergänzungs-Compose-Files.
00:19:59
Kai Ole Hartwig
Und je nachdem, was dann halt in der Composer-JSON an Sachen drinstehen, die ich auslese über Make, ändert sich halt mein Compose ab quasi, welche Dateien, also welche...
00:20:06
Daniel Langemann
Ja.
00:20:06
Daniel Langemann
Ja.
00:20:16
Kai Ole Hartwig
wie heißen sie gleich, Compose, jemals aus der OCI Registry geladen werden, die werden auch gar nicht lokal abgelegt dabei, um das ganze Ding zu starten.
00:20:27
Kai Ole Hartwig
Also wirklich so weit standardisieren und abstrahieren, dass man halt wirklich sagen kann, mein Projekt ist im Prinzip, wird definiert aus drei Dateien.
00:20:41
Kai Ole Hartwig
Das Basis Make-File,
00:20:43
Daniel Langemann
Mhm.
00:20:43
Daniel Langemann
Mhm.
00:20:44
Kai Ole Hartwig
eine NVMRC heißt sie glaube ich, da steht die MPM-Version drin, die für das Projekt gilt und dann die Composer JSON, wo auch die PHP-Version drin steht.
00:20:57
Kai Ole Hartwig
Und damit zieht er sich dann aus der Registry die passenden Container, beziehungsweise baut die passenden Container,
00:21:06
Kai Ole Hartwig
für die Entwicklungsumgebung, ne?
00:21:07
Kai Ole Hartwig
Die Entwicklungsumgebung zieht sich den Port-Container quasi und geht dann hin und updatet den Container mit meinen Dev-Dependencies, die ich brauche.
00:21:14
Daniel Langemann
Ja.
00:21:14
Daniel Langemann
Ja.
00:21:18
Kai Ole Hartwig
Und ich muss sagen, ich liebe es, weil das halt bedeutet, wir haben die gleichen Befehle in allen Projekten,
00:21:26
Kai Ole Hartwig
Wir haben im Prinzip die gleichen Container, also bis auf minimale Abweichungen für da brauchst du mal ein anderes Paket als hier noch zusätzlich.
00:21:37
Kai Ole Hartwig
Oder das ist ein Multi-Domain-Projekt und das ist ein Single-Domain-Projekt.
00:21:41
Kai Ole Hartwig
Ja, da gibt es dann kleine Abweichungen, aber so vernachlässigbar im Großen und Ganzen.
00:21:44
Daniel Langemann
Mhm.
00:21:50
Kai Ole Hartwig
Und damit ist halt alles so überschaubar und gleich geworden.
00:21:56
Kai Ole Hartwig
Und zum Beispiel die eigenen Pakete liegen dann halt natürlich auch nicht in Vendor drin, sondern werden gesimmelinkt in eine andere Verzeichnisstruktur und werden auch mit Git-Repository gezogen, damit ich drin arbeiten kann.
00:22:10
Kai Ole Hartwig
Was dann natürlich wieder Composer macht, nicht Make.
00:22:13
Kai Ole Hartwig
Und ich sage jetzt mal, die einzige Arbeit, die wir zum Beispiel haben, um ein neues Projekt aufzusetzen, ist,
00:22:21
Kai Ole Hartwig
wir ziehen uns unser basis make file legen dort ent datei an mit sowas wie okay das ist der fahrt in git lab und so sachen sachen und hier die composer die für das minimum composer quasi mit okay hier ist das drin oder hier ist das drin und dann sagen wir
00:22:34
Daniel Langemann
Ja.
00:22:50
Kai Ole Hartwig
make in it it und die ganze Magie passiert, dass du dann halt, ich sag jetzt mal 20 Minuten später, dein fertiges, also fertiges Entwicklungsumgebungsprojekt da stehen hast und anfangen kannst zu entwickeln mit allen Containern, mit allen Abhängigkeiten, mit allem, was du brauchst und wenn du updaten willst, ja, ich sag jetzt mal PHP von 8.4 auf 8.5, dann änderst du das an einer Stelle
00:23:19
Kai Ole Hartwig
Dann wird das ganze Graffel neu gebaut, wenn du dann natürlich sagst, hey, ich brauch's jetzt einmal neu, ne?
00:23:22
Daniel Langemann
Ja, klar.
00:23:22
Daniel Langemann
Ja.
00:23:25
Kai Ole Hartwig
Nicht so magisch, die Datei hat sich geändert und jetzt mach ich was.
00:23:30
Kai Ole Hartwig
Und ja, natürlich, wenn du die Abhängigkeiten in der falschen Reihenfolge updatest, dann bekommst du Probleme.
00:23:40
Kai Ole Hartwig
Kein Wunder, aber wenn du das in der richtigen Reihenfolge machst, dann steht das System halt mit der neuen PHP-Version da.
00:23:45
Kai Ole Hartwig
Mit den neuen Dependencies, die für die neue PHP-Version sind.
00:23:48
Kai Ole Hartwig
Die Versionen sind da und alles ist fein.
00:23:52
Daniel Langemann
Ja.
00:23:52
Kai Ole Hartwig
So, und okay, dieses Dependency-Update dauert halt, weil, hatten wir mal besprochen, läuft über die Pipeline bei uns.
00:23:59
Kai Ole Hartwig
Aber du baust, dann gibt es halt den neuen Container und dann wird das halt gebaut, gezogen, dann dauert das halt eine Zeit.
00:24:05
Kai Ole Hartwig
Das ist eher etwas, was man abends starten sollte, damit es über Nacht dann quasi fertig läuft.
00:24:11
Kai Ole Hartwig
Und am nächsten Morgen hast du das da stehen und kannst weitermachen.
00:24:14
Kai Ole Hartwig
Oder hast ganz viele rote Pipelines, die sagen, nee, Junge, jetzt hast du aber hier Mist gemacht.
00:24:19
Kai Ole Hartwig
Ja, so.
00:24:20
Daniel Langemann
Dann machst du einen Laptop, den du da zugehörst und nimmst frei.
00:24:25
Daniel Langemann
Aber ich glaube, also ich finde interessant, dein Ansatz ist anders wie meiner und ich glaube, der Use Case war bis jetzt auch komplett anders, weil ich als Externer immer in andere Projekte reingekommen bin und da unterstützt habe, habe ich dieses, also sagen wir mal, mein Sammelsorium mitgebracht und so ist das auch die Zeit über gewachsen.
00:24:30
Kai Ole Hartwig
Mhm.
00:24:44
Daniel Langemann
Weil ich halt immer gesehen habe, es gibt Linux-Rechner, es gibt Mac OS, es gab auch Windows-Rechner, die dann auch irgendwie versuchen, da mitzuspielen.
00:24:54
Daniel Langemann
Und das musste halt irgendwie funktionieren.
00:24:55
Daniel Langemann
Und gerade externe Abhängigkeiten, also wenn ich jetzt zum Beispiel als Externer reinkomme und sage, hier, das Ding zieht aus meinem Repository irgendwas, das wäre so uncool.
00:25:03
Kai Ole Hartwig
Ja.
00:25:03
Kai Ole Hartwig
Ja.
00:25:03
Kai Ole Hartwig
Ja.
00:25:03
Daniel Langemann
Deswegen war...
00:25:05
Daniel Langemann
Mein Ansatz immer so, ich bringe alles mit, es wird eingecheckt, weil ich habe eine Zeit lang auch mit Git-Submodules da ein bisschen rumgespielt, aber das hat nie so richtig funktioniert und ich mag das, wenn das mit eingecheckt ist.
00:25:16
Daniel Langemann
Wenn ich Sachen ändere, kann ich das im Feature-Branch pushen.
00:25:20
Daniel Langemann
pullen und kann dann sagen, guck mal, es gab ein Update, morgen machen die alle Make Start und dann baut das automatisch die Container neu, weil natürlich neuer Quelltech-Code auch in dem Docker-Ordner mit drin ist.
00:25:31
Daniel Langemann
Bei dir macht das aber natürlich viel mehr Sinn, wenn du aus deiner Sicht mehrere Projekte betreust und die Mitarbeiter da immer das gleiche Setup vorfinden.
00:25:40
Daniel Langemann
Also bei euch ist
00:25:42
Kai Ole Hartwig
Ja, genau, also das, klar, wenn du immer in wechselnde Projekte reinkommst, kannst du natürlich sagen, no, wir bauen jetzt ja erstmal alles um.
00:25:51
Daniel Langemann
Ich bringe mal meine Dependency mit und mache mich unaustauschbar.
00:25:53
Daniel Langemann
Ja.
00:25:53
Daniel Langemann
Ja.
00:25:57
Kai Ole Hartwig
Abgesehen davon, dass diese Makefiles auch einfach ein Composer-Package bei uns sind, ne, also, und man die einfach öffentlich machen könnte, wenn man wollte.
00:26:05
Kai Ole Hartwig
Naja, mal drüber nachdenken.
00:26:06
Kai Ole Hartwig
Aber, ähm,
00:26:10
Kai Ole Hartwig
Natürlich, wenn du ständig in neue Projekte reinkommst, dann veränderst du nicht einfach alles und die ganze Welt.
00:26:17
Kai Ole Hartwig
Anderer Anwendungsfall, wenn ich in externe Projekte reinkomme, dann habe ich das auch nicht.
00:26:21
Kai Ole Hartwig
Aber ich kann mir ja immer, wenn ich, ich sage jetzt mal, wenn ich in meinem Wohnzimmer sitze, dann kann ich mir ja mein Wohnzimmer so gestalten, wie ich es gerne hätte.
00:26:27
Daniel Langemann
Ja.
00:26:29
Kai Ole Hartwig
Und da ich irgendwie sehr viel Zeit mit diesem Zeug zubringe jeden Tag, und das ist mehr Zeit, als ich in meinem Wohnzimmer sitze,
00:26:38
Kai Ole Hartwig
und zwar pro Tag mehr als ich in der Woche im Wohnzimmer sitze, wenn ich so drüber nachdenke, dann darf das auch schön komfortabel und einfach sein.
00:26:50
Kai Ole Hartwig
Ich habe auch mal drüber nachgedacht, oder was wir auch machen, ist, wir arbeiten mit Devcontainers, das ist auch so ein Standard,
00:26:58
Kai Ole Hartwig
mal ein bisschen weniger, dass wir eben als quasi Fallback-Backup-Lösung haben, wenn ich mal unterwegs bin, dass ich jedes Projekt benutzen kann, das nämlich in einem Cluster starten kann und da eine normale Entwicklungsumgebung vorfinde mit VS Code, in dem Fall nicht mit meiner Lieblings-IDE, aber das ist vernachlässigbar an der Stelle.
00:27:15
Daniel Langemann
Ja.
00:27:20
Kai Ole Hartwig
Das heißt, ich kann halt ein Entwicklungssystem in einem Cluster,
00:27:25
Kai Ole Hartwig
gesonderten Entwicklungskluster starten, ganz normal entwickeln und arbeiten und mein Zeugs machen, ohne dass ich das lokal auf dem Rechner brauche.

Anpassung an bestehende Setups in externen Projekten

00:27:36
Kai Ole Hartwig
Das ist quasi die Variante für, ich habe geiles Internet, aber ich sitze jetzt quasi nur am iPad oder so, muss jetzt aber schnell was ändern, dann kann man das machen.
00:27:48
Kai Ole Hartwig
Oder die Variante mit, irgendwie bricht meine Verbindung ständig beim Download aus der Registry ab.
00:27:57
Kai Ole Hartwig
weil ich jetzt gerade am anderen Ende der Welt sitze und dann die Verbindung nicht so stabil ist, die ist zwar schnell, aber nicht stabil, dann funktioniert, ich starte das im Entwicklungskluster und arbeite da stabiler und zuverlässiger, weil unsere Browser irgendwie viel besser damit klarkommen als so ein Docker-Pull, wenn die Verbindung zwischendrin weg ist.
00:28:04
Daniel Langemann
Ja.
00:28:22
Kai Ole Hartwig
und klar, die Herangehensweise, aus welcher Richtung wir jetzt kommen für diese Makefights und so, ist halt gerade, ich sag, ich mach schöner Wohnen in meinem Wohnzimmer, und genau, so, und ja, das ist ja auch völlig okay, wenn ich das möchte, ist das gut,
00:28:30
Daniel Langemann
Ich mache schöner Wohnen in deinem Wohnzimmer.
00:28:37
Daniel Langemann
Aber ich bin auch der Raumausstatter, den du gekauft hast, damit es hübsch aussieht, ne?
00:28:40
Daniel Langemann
Hm.
00:28:45
Kai Ole Hartwig
Und genauso, wenn ich natürlich irgendwo reinkomme in ein Projekt, dann gehe ich da ja auch anders vor.
00:28:49
Kai Ole Hartwig
Dann sage ich jetzt nicht so, wir updaten jetzt alles auf das und das ist der einzige Weg, der existiert.
00:28:56
Kai Ole Hartwig
Dann bringe ich vielleicht auch Teile meiner Sachen mit, aber da macht es dann wahrscheinlich auch gar keinen Sinn, diesen Puls-Deck-Komfortmodus zu wählen.
00:29:05
Kai Ole Hartwig
Sondern da macht es dann wahrscheinlich Sinn, so ein paar Make-Befehle zu haben für, okay, ich fange jetzt mal morgens an, ich höre abends auf, ich mache hier irgendwelche Updates, vielleicht dann doch nicht so wie bei uns mit der Pipeline.
00:29:12
Daniel Langemann
Der passt sich dem Gastgeber an.
00:29:16
Kai Ole Hartwig
Das ist ja einfach ein anderes Leben, wenn man in ein, ich sage mal, wenn du zu jemand anderen als Besuch kommst, kommst, dann fängst du jetzt ja auch nicht an und baust das Wohnzimmer ungefragt um.
00:29:31
Kai Ole Hartwig
Und gestalte es um.
00:29:33
Kai Ole Hartwig
Wenn natürlich jemand sagt und kauft mich jetzt sogar als Raumausstatter ein und sagt, hier, mach mal schön, ganz andere Baustelle, wie du schon sagst.
00:29:41
Daniel Langemann
Ja, aber trotzdem, ich würde dann, also, um bei der Analogie zu bleiben, ich komme hin und sage, guck mal, das wären coole Vorhänge, das wäre eine coole Couch und ich komme nicht hin mit dem Maurer und irgendwie anderen Bauarbeitern und fange an, das Wohnzimmer zu zerlegen, ohne dass der Besitzer weiß, was da passiert.
00:29:57
Kai Ole Hartwig
Ja, vor allem komme ich nicht hin als Gast, der ja nur eingeladen ist, da mal, ich sag jetzt mal, Kuchen zu essen und zu sagen, ob der Kaffee jetzt ist.
00:30:03
Daniel Langemann
Ja, ja.
00:30:03
Daniel Langemann
Hm.
00:30:06
Kai Ole Hartwig
Dann komme ich ja nicht hin und sage, na, du brauchst andere Vorhänge.
00:30:11
Kai Ole Hartwig
Also, vielleicht ist das zum Schluss so ein Fazit, wo ich sage, mir ist noch aufgefallen, ihr könntet hier die und die Sachen ja verändern, wenn ich dann quasi in dieser beratenen Rolle eingekauft bin für, ey, sag mal, würdest du hier unser Ding nutzen, testen?
00:30:25
Daniel Langemann
Ja, aber um von der Analogie zurückzukommen, ich finde interessant, obwohl wir unterschiedliche Anforderungen haben, also für dich die Reproduzierbarkeit und immer die gleiche Umgebung, für mich also auch Reproduzierbarkeit natürlich, aber Individualisierbarkeit eigentlich, haben wir trotzdem sehr ähnliche Lösungsansätze gewählt, dass wir einen Ordner haben, wo, sagen wir mal, modulbasiert
00:30:25
Kai Ole Hartwig
Also, oder
00:30:28
Kai Ole Hartwig
ja, da hinkt jetzt das Wohnzimmer, da wäre eine Party-Location besser, aber du verstehst, was ich meine, ne?
00:30:32
Kai Ole Hartwig
So.
00:30:55
Daniel Langemann
die Sachen drin landen, wo mit Docker Compose werden Docker Container gestartet.
00:30:58
Kai Ole Hartwig
Ja.
00:31:01
Daniel Langemann
Zum Beispiel ist es auch so, dass bei meinem Ansatz, ich denke mal bei deinem wird es auch so sein, dass man make.php.bash bei mir aufrufen kann und dann landest du in dem PHP Container und kannst dann
00:31:13
Daniel Langemann
mit PHP alles Mögliche machen.
00:31:15
Daniel Langemann
Du kannst genauso in den Node-Container oder in den Postgres-Container reingehen und da auf der Konsole Sachen machen.
00:31:21
Daniel Langemann
Also du musst nicht von außen in den Container und dann irgendwelche komischen Sachen da rum pushen, sondern mein Grundgedanke war einfach so, ich arbeite in dem Container, als ob das ein Remote-Server wäre.
00:31:32
Daniel Langemann
Also zwar nicht per SSH, aber...
00:31:32
Kai Ole Hartwig
Ja, und ich muss ja auch ein bisschen noch enttäuschen, ne, also wir setzen keine Dockerfiles mehr ein, sondern Containerfiles.
00:31:35
Daniel Langemann
Ich komme auf die Bash, kann da Sachen machen, kann das Shell-Skript, also eine BIN-Konsole zum Beispiel unter Symfony ausführen und solche Sachen.
00:31:42
Daniel Langemann
Und das macht es schon sehr angenehm.
00:31:52
Daniel Langemann
Angeber.
00:31:52
Daniel Langemann
Mhm.
00:31:54
Kai Ole Hartwig
Kein Docker-Compose, sondern bei uns ist es tatsächlich Portman, auf das wir migrat haben.
00:32:00
Kai Ole Hartwig
So, ähm,
00:32:02
Daniel Langemann
Wäre mal wieder ein neues Thema.
00:32:03
Daniel Langemann
Warum?
00:32:04
Kai Ole Hartwig
Neues Thema, ja.
00:32:06
Kai Ole Hartwig
Für die nächste Woche oder so.
00:32:08
Daniel Langemann
Ja.
00:32:08
Daniel Langemann
Mhm.
00:32:10
Kai Ole Hartwig
Passt das?
00:32:10
Kai Ole Hartwig
Haben wir alles gesagt oder möchten wir noch was sagen?
00:32:12
Kai Ole Hartwig
Wir können doch noch weiter reden.
00:32:13
Kai Ole Hartwig
Ich glaube, wir haben jetzt ja aus unterschiedlichen Richtungen sind wir gekommen.
00:32:17
Kai Ole Hartwig
Was ich auch noch kurz, bevor ich es vergesse, zu sagen in dieser Folge, was ich hervorragend cool finde, ist die Individualisierbarkeit geht ja nicht kaputt.
00:32:27
Kai Ole Hartwig
Du kannst ja durchaus sagen, in dem Projekt hier, selbst wenn ich die Dependency halt hier lade aus, ich sage jetzt mal mein Dev-Paket von meinem Makefile,
00:32:35
Kai Ole Hartwig
kannst du den einzelnen make job in deiner lokalen make einem lokalen make file verändern und überschreiben und halt sagen ja pass auf dass hier funktioniert aber dieser job ich sag jetzt mal frontend bild halt anders du rufst nicht dass das bild sh auf sondern hier machst du jetzt mpx bla bla bla so das
00:32:50
Daniel Langemann
Ja.
00:33:01
Kai Ole Hartwig
geht alles.
00:33:02
Kai Ole Hartwig
Du verlierst halt durch diese Paketierung, die wir haben, nie die Möglichkeit, individuell zu sein.
00:33:08
Kai Ole Hartwig
Es ist halt...
00:33:11
Kai Ole Hartwig
ich sage jetzt mal, ein starker Standard, auf den wir aufbauen, den wir aber auch grundsätzlich jederzeit an allen Ständen individualisieren können und das mit wenig Aufwand.
00:33:18
Daniel Langemann
Ja.
00:33:18
Daniel Langemann
Nicht immer die gleichen Fehler lösen.
00:33:21
Kai Ole Hartwig
Das heißt, wir gehen hin und ich glaube, das ist auch dein Grundgedanke, wenn ich dich richtig verstanden habe, wir machen uns das Leben einfacher
00:33:33
Kai Ole Hartwig
bei uns mit dem Ziel, das möglichst häufig auch zu verwenden, für dich das Ziel, möglichst einfach in die Projekte reinzukommen und überall auch ja eine Standardisierbarkeit vorzufinden oder ein standardisierteres Setup vorzufinden, damit sie es, ja, und wo wollte ich denn jetzt hin?
00:33:53
Kai Ole Hartwig
Oh, verdammt.
00:33:55
Daniel Langemann
Machen wir wieder Cliffhanger diesmal.
00:33:55
Daniel Langemann
Ich weiß es nicht, wo du hin wolltest.
00:33:56
Daniel Langemann
Überschreibbarkeit.
00:33:58
Kai Ole Hartwig
Ja, ja.
00:34:04
Kai Ole Hartwig
Ja, Standardisierbarkeit, immer das Gleiche.
00:34:10
Kai Ole Hartwig
Und... Ach genau, du bist halt trotz dieser Standardisierung
00:34:16
Kai Ole Hartwig
jederzeit in der Lage, individuell zu arbeiten.
00:34:18
Kai Ole Hartwig
Aber mit diesem Standardisieren sparen wir uns im Prinzip sehr, sehr viel Zeit im täglichen

Fazit: Zeitersparnis durch automatisierte Setups

00:34:24
Kai Ole Hartwig
Arbeiten.
00:34:24
Kai Ole Hartwig
Das heißt, wir reduzieren diesen Zeit-Overhead durch dieses Standardisieren massiv, sind aber genauso flexibel und bei diesem Flexibelsein schneller als diejenigen, die nicht standardisieren.
00:34:34
Daniel Langemann
Ja, ja, also genau, weil man nicht immer wieder die gleichen Fehler macht und weil man mit so einem Dev-Setup schon eine gute Grundlage für alle weiteren Schritte hat.
00:34:42
Daniel Langemann
Du kannst aus diesem Dev-Setup bei uns beiden direkt Container fürs Produktivsystem bauen, die gleich sind.
00:34:48
Daniel Langemann
Und wenn du solche Unterschiede nicht hast, spart dir das viel Lebenszeit bei Fehlersuche später.
00:34:53
Kai Ole Hartwig
Ja, wobei die Pipeline ja die Containerarbeit, aber du hast halt deinen... Ja, genau.
00:34:57
Daniel Langemann
Ja, aber zumindest bei mir ist es die Docker-File, die in diesem Ordner liegt.
00:35:02
Daniel Langemann
Das Basis-Image ist sozusagen das Produktiv-Image.
00:35:05
Daniel Langemann
Dahinter kommen dann die Dev-Setup-Sachen nochmal rein.
00:35:07
Daniel Langemann
Also hier, ne?
00:35:08
Kai Ole Hartwig
Ja, ich wollte nur betonen, dass du ja nicht lokal das Produktiv-Image baust, sondern das baut ja die Pipeline.
00:35:13
Daniel Langemann
Nein, okay.
00:35:14
Daniel Langemann
Ja, du hast natürlich recht, das mache ich nicht.
00:35:17
Daniel Langemann
Das wäre ja dumm.
00:35:19
Kai Ole Hartwig
das ist ja nicht unbedingt dumm, aber keine gute Idee.
00:35:24
Daniel Langemann
Ja, also definitiv machen wir das nicht.
00:35:25
Kai Ole Hartwig
Wenn wir die Pipeline haben mit Sicherheitschecks und so weiter, dann wäre es einfach keine gute Idee zu sagen, jetzt baue ich aber lokal das Pod-Image, weil bei mir funktioniert ja alles, habe meine Dev-Dependencies und alles drin, am besten noch irgendwelche Dev-Secrets mit reinkopiert und dann sitze ich nämlich da und dann läuft es produktiv halt doch nicht so gut.
00:35:35
Daniel Langemann
Bitbox on my machine.
00:35:36
Daniel Langemann
Hm.
00:35:36
Daniel Langemann
Ah, nee.
00:35:48
Kai Ole Hartwig
Das machen wir nicht, aber wir sagen halt, dass es so standardisiert, dass es startet, man eine gute Entwicklungsumgebung hat und alle Fights irgendwie drin liegen damit daraus in der Pipeline, die produktive Umgebung entsteht.
00:36:01
Daniel Langemann
Und was auch wichtig ist, ist dadurch, dass ich vieles abstrahiert habe, brauche ich fast keine Produktiv-Secrets mehr, weil ich Tests erstmal fahren kann, ohne dass ich, also entweder mit gemockten Systemen oder ähnlichen Systemen, ohne dass ich dann irgendwie nochmal gegen das Produktiv-System was anschließen muss oder runterladen muss.
00:36:20
Daniel Langemann
Und das ist halt so nebenbei auch angenehm, einfach in der Pipeline dann keine Secrets mehr zu brauchen.
00:36:24
Daniel Langemann
Ja.
00:36:26
Kai Ole Hartwig
Nicht nur in der Pipeline, auch lokal, ne?
00:36:28
Kai Ole Hartwig
Du kennst ja mal ein Kilo.
00:36:29
Kai Ole Hartwig
Das, was ich nicht weiß, kann ich nicht vergessen.
00:36:31
Daniel Langemann
Ja.
00:36:31
Kai Ole Hartwig
Zumindest was Secrets angeht.
00:36:33
Kai Ole Hartwig
Und, ähm, tatsächlich ist es ganz nice, das alles nicht zu wissen.
00:36:39
Kai Ole Hartwig
Die Systeme wissen es, die managen das.
00:36:42
Kai Ole Hartwig
Ähm, ich hab's nicht irgendwo im Passwortmanager bestes Leben.

Ausblick: Wechsel von Docker zu Podman

00:36:46
Kai Ole Hartwig
Also, ich liebe es.
00:36:48
Daniel Langemann
Und Dev-Setups sind einfach, die sparen dir viel Lebenszeit, viel Ärger, gerade auch oft, wenn irgendwas kaputt ist.
00:36:48
Kai Ole Hartwig
Und,
00:36:55
Daniel Langemann
Also du bist am Entwickeln und sagst, komisch, das hat da vorhin funktioniert, warum ist das jetzt so?
00:37:01
Daniel Langemann
Einmal kurz neu gestartet, hast du wieder den Ursprungszustand und dann ist wieder der Fehler weg.
00:37:06
Daniel Langemann
Dann hast du irgendwas kaputt gemacht, wo du nicht aufgepasst hast.
00:37:09
Daniel Langemann
In der Datenbank datentechnisch, dann kannst du einfach weiterarbeiten.
00:37:12
Daniel Langemann
Und früher wäre das so irgendwie drei Stunden Fehlersuche gewesen, um zu merken, dass man dann
00:37:17
Daniel Langemann
etwas gemacht hat, was man vergessen hat.
00:37:20
Daniel Langemann
Deswegen, Dev-Setups sind super.
00:37:20
Kai Ole Hartwig
Genau.
00:37:22
Daniel Langemann
Also, sparen dir so viel Lebenszeit.
00:37:24
Daniel Langemann
Ja, gerne.
00:37:26
Kai Ole Hartwig
Und ich glaube, nächstes Mal sprechen wir dann, wenn ich es richtig verstanden habe, warum wir nicht mehr Wale für den Containertransportbetrieb einsetzen, sondern Seehunde.
00:37:35
Kai Ole Hartwig
Ich glaube, es sind Seehunde bei Podman.
00:37:36
Kai Ole Hartwig
Ja.
00:37:41
Kai Ole Hartwig
Nein, Wale sind sehr cool.
00:37:43
Kai Ole Hartwig
Aber zwei Wale sind vielleicht zu groß.
00:37:52
Kai Ole Hartwig
Wortwitz.
00:37:53
Kai Ole Hartwig
Kann ich.
00:37:55
Daniel Langemann
Ist schon Karneval.
00:37:58
Daniel Langemann
Ist schon Karneval oder was?
00:38:00
Kai Ole Hartwig
Hm?
00:38:00
Kai Ole Hartwig
Noch nicht ganz.
00:38:01
Kai Ole Hartwig
Aber dann sehen wir uns nächste Woche.
00:38:04
Kai Ole Hartwig
Und das tisern wir jetzt schon an.
00:38:06
Kai Ole Hartwig
Dann mit Docker versus Potman oder warum wir auf Potman sitzen.
00:38:11
Daniel Langemann
Ja, sehr interessant.
00:38:11
Kai Ole Hartwig
Statt auf Docker.
00:38:13
Daniel Langemann
Habe ich mich fünf Minuten vorher wieder schlau.
00:38:14
Kai Ole Hartwig
Bis dahin.
00:38:15
Kai Ole Hartwig
Macht's gut.
00:38:15
Daniel Langemann
Ciao.
00:38:17
Kai Ole Hartwig
Ciao.