Einführung und Diskussion über Standardisierung
00:00:01
Kai Ole Hartwig
Hey Daniel, schön, dass du hier bist, unsere ersten Folge Secrets Not Included.
00:00:07
Kai Ole Hartwig
Lass uns heute mal ganz locker ins Thema starten mit Standardisierung in unseren Projekt-Setups.
00:00:21
DAN
Wir hatten uns das Thema ausgesucht und ich glaube, wir gehen unterschiedlich an die Sachen ran.
00:00:26
Kai Ole Hartwig
Ja, ich befürchte das auch.
00:00:28
Kai Ole Hartwig
Ich bin ja so ein Mensch.
00:00:29
Kai Ole Hartwig
Ich stehe unfassbar auf Standardisierung und auf, ich sage jetzt mal, sehr gleiche Setups.
00:00:44
Kai Ole Hartwig
Und bin da vielleicht auch ein wenig...
00:00:51
Kai Ole Hartwig
sehr leidenschaftlich drin zu sagen, ein Setup fits all.
00:00:56
Kai Ole Hartwig
Aber ja, erzähl mal, wie machst du das?
Herausforderungen der Standardisierung bei Projekteinrichtungen
00:01:00
DAN
Das ist unterschiedlich und finde ich auch extrem schwer, weil je nach Kunden und Auftraggeber unterscheiden die Sachen sich.
00:01:07
DAN
Und da habe ich einfach mein Problem, dass ich, also es gibt nicht diesen Moment, wo ich sage, ich habe eine Checkliste, die arbeite ich ab und sage, dieser Punkt, dieser Punkt, dieser Punkt, dieser Punkt.
00:01:17
DAN
Sondern viele Sachen ergeben sich einfach aus dem bestehenden Setup oft.
00:01:21
DAN
Also ich hatte bis jetzt nicht so oft den Luxus, dass man auf der grünen Wiese anfangen kann.
00:01:25
DAN
Ich glaube, das ist der große Unterschied.
00:01:28
DAN
Und wenn man viele bestehende Projekte sieht oder reinkommt, übernimmt, mitmacht, wie auch immer, dass dann einfach schon was Existierendes da ist.
00:01:37
DAN
Und das muss man dann gucken, dass man das irgendwie adaptiert oder auf ein Level kriegt, mit dem man leben kann.
00:01:43
DAN
Und da hat sich für mich einfach ergeben, dass... Also ich habe es nie geschafft, irgendwie so eine Checkliste zusammenzubauen oder...
00:01:52
DAN
Man hat zwar immer so eine Idealvorstellung von einem Dev-Setup oder einer Entwicklungsumgebung, wie sie denn sein sollte und es ist aber extrem schwer, oder ich tue mich extrem schwer damit zu sagen, es gibt dieses eine Setup und wenn jemand kommt, schneide ich die Blöcke und das Ding ist fertig.
Vorteile der Containerisierung für Konsistenz und Effizienz
00:02:11
DAN
Weil halt viel Altlasten oder oft Altlasten mitkommen bei Projekten.
00:02:15
Kai Ole Hartwig
historisch gewachsene Projekte, ne?
00:02:18
Kai Ole Hartwig
Das ist natürlich auch eine eigene Kategorie, aber ich finde gerade so etwas wie die Dev-Setups lassen sich unfassbar gut heute standardisieren.
00:02:28
Kai Ole Hartwig
Also ich sag jetzt mal, den PHP-Container, den hat man halt in Version ABC 8.2, 8.3, 8.4 irgendwie rumfliegen.
00:02:37
Kai Ole Hartwig
Und ja, okay, dann installiere ich halt im Zweifelsfall noch mal
00:02:43
Kai Ole Hartwig
ein paar Module oder irgendwelche Special-Sachen da rein.
00:02:48
Kai Ole Hartwig
Aber vom Grundsatz her habe ich erstmal das PHP da rumfliegen, das nehme ich wieder.
00:02:53
Kai Ole Hartwig
Und genauso den Web-Server und alles, was so sonst in diesem Ecosystem rumfliegt.
00:03:06
Kai Ole Hartwig
Und das versuche ich aber auch zunehmend.
00:03:09
Kai Ole Hartwig
also gerade auch bei Projekten, die wir irgendwie übernehmen, dass wir quasi das, was vorhanden ist, gegebenenfalls gegen Versionen austauschen oder gegen Module austauschen, die wir immer wieder einsetzen.
00:03:27
Kai Ole Hartwig
Dass man wirklich so eine Standardisierung da reinbringt und jetzt nicht sagt, also ich meine, ich habe schon verrückte Dinge gesehen, wo in einem CMS-Setup
00:03:39
Kai Ole Hartwig
auf einmal das auf Symphonie-basierte, auf einmal Lagerwell komplett nochmal eingebunden wurde, um dann damit eine Aufgabe zu lösen.
00:03:48
Kai Ole Hartwig
Solche Dinge, die total offensichtlich sind, also weißt du, da fällt es mir schwer zu sagen, ah, das ist historisch gewachsen, wir lassen das alles mal so.
00:03:57
Kai Ole Hartwig
Ich finde, da sollte man ganz, ganz stark gegen eigene Best Practices gehen und nicht unbedingt mit der Checkliste, aber mit
00:04:10
Kai Ole Hartwig
starken Standards, die man dann eventuell durch Konfigurationen
Gemeinsamkeiten und Wiederverwendung in Projekten
00:04:16
Kai Ole Hartwig
abändern kann.
00:04:16
Kai Ole Hartwig
Ich sage jetzt mal, du setzt eigentlich immer Graphic Magic ein für die Bildverarbeitung.
00:04:24
Kai Ole Hartwig
Du kannst auch einstellen, in diesem Projekt läuft halt Image Magic, weil keine Ahnung, warum auch immer das da notwendig ist.
00:04:33
Kai Ole Hartwig
Das ist mehr so den Ansatz, den ich eigentlich verfolge bei uns, dass ich sage, okay, wir haben einen Standard und wir versuchen diesen Standard nicht sofort, aber nach und nach in die Projekte immer wieder reinzubringen, damit wir auch so etwas machen können,
00:04:49
Kai Ole Hartwig
wie halt unsere standardisierten Tests zu verwenden, unsere Container und Setups komplett auszuschöpfen und halt wirklich Synergieeffekte auch zu haben, dass wir nicht in jedem Projekt für jeden Kunden alles neu bauen.
00:05:03
Kai Ole Hartwig
Na, ich sag jetzt mal,
00:05:05
Kai Ole Hartwig
Es gibt ja in jedem Projekt die gleichen Dinge.
00:05:09
Kai Ole Hartwig
Das werden jetzt in deinen E-Commerce-Projekten ein bisschen anders sein als in meinen CMS-Projekten.
00:05:13
Kai Ole Hartwig
Aber ich sage jetzt mal, so ein Slider, irgendwelche Pop-Ups, die aufgehen, diese ganzen Störer, die kommen immer wieder vor.
00:05:23
Kai Ole Hartwig
Ja klar, bei dem einen slidet es schneller, beim anderen sind fünf statt vier...
00:05:28
Kai Ole Hartwig
Die Pfeile sind ein bisschen woanders, sehen mal anders aus.
00:05:31
Kai Ole Hartwig
Aber vom Grundsatz her ist das ja von dem Code, der da ausgeführt wird, für die Datenbank, fürs PHP, aber auch fürs JavaScript, ist das ja standardisierbar.
00:05:41
Kai Ole Hartwig
Das kann ich ja immer wieder verwenden.
Docker und seine Rolle bei der Standardisierung
00:05:43
Kai Ole Hartwig
Und dann, wenn ich halt irgendwo einen Fehler drin habe, wenn ich das entsprechend gekapselt habe als Programm, und dann kann ich das per Composer oder irgendeinem anderen Paketmanager ja entsprechend verteilen und updaten.
00:05:43
DAN
Ja, also ich glaube, wir können festhalten, dass Docker quasi Standard ist, zumindest aus unserer Sicht.
00:06:06
DAN
Ich erlebe viele Projekte, wo das nicht so ist und wo mir immer wieder auffällt,
00:06:11
DAN
dass es gewisse Standards gibt, die man einfach erwartet oder wo man gar nicht mehr damit rechnet, dass Leute zum Beispiel mit dem PHP internen Dev-Server irgendwie entwickeln auf ihrer lokalen Kiste.
00:06:23
DAN
Also ich glaube schon... Echt?
00:06:27
Kai Ole Hartwig
Ich glaube, gerade dieser PHP-interne Dev-Server kommt jetzt vermehrt, ist mein Eindruck.
00:06:32
Kai Ole Hartwig
Dadurch, dass immer mehr Projekte das nativ unterstützen, Symfony jetzt zum Beispiel auch, oder auch Franken-PHP, glaube ich, ja auch in einer gewissen Form, dass du das direkt starten kannst,
00:06:49
Kai Ole Hartwig
glaube ich, wird das mehr kommen.
00:06:51
Kai Ole Hartwig
Ich glaube, oder mein Bauchgefühl ist auch, je nach Projekt ist das auch okay.
00:06:59
Kai Ole Hartwig
Ja, wenn das ein kleines Projekt ist und man vielleicht auch nicht die Erfahrung mit Containerisierung hat, dann ist es ja in Ordnung, eine andere Lösung zu verwenden.
Wichtigkeit der Standardisierung für Teamzusammenarbeit
00:07:13
DAN
Also, aber ich glaube, das ist genau das Thema, was interessant wird, wo wir über Standardisierung reden oder was ich zwar nicht mit einer Checkliste abarbeite, aber für mich ist das so, spätestens wenn ich ins Projekt dazukomme oder eine zweite Person dazukommt und man zum Beispiel einen Datenbank-Dump jemand anderes irgendwie schicken muss, damit der auch eine Entwicklungsumgebung aufbauen kann,
00:07:36
DAN
oder irgendwelche besonderen Config-Variablen oder Secrets hin- und herschicken muss, damit Sachen funktionieren.
00:07:43
DAN
Ich glaube, dann ist Standardisierung und Dockerisierung oder Containerisierung, ich will jetzt nicht nur Docker nennen, also gibt ja mehr.
00:07:52
DAN
Ich glaube, dann spielt das viele Vorteile aus, an die man sich als Entwickler eigentlich unbewusst gewöhnt hat und schon vergessen hat, wie die Schmerzen sind, wenn man es nicht hat.
00:08:03
DAN
Also das Übliche ist ja mit, ich habe heute was gemacht, habe ein Projekt, alles läuft, das Ding, Setup läuft und in einem halben Jahr
00:08:11
DAN
will ich das nochmal starten.
00:08:12
DAN
Was ich vergessen habe zwischendurch ist, dass ich mal den Rechner gewechselt habe, eine andere PHP-Version läuft oder Node.js oder was auch immer, eine andere Version läuft, irgendwelche Config habe ich geändert, hinzu installiert, weg installiert und auf einmal läuft mein Projekt nicht mehr.
00:08:27
DAN
Und das ist ja das, was mich dann so tierisch nervt immer, dass man eigentlich gerade Zeit hätte, etwas zu machen
00:08:34
DAN
und aber dann wieder zwei Stunden mit Debugging verbringt, um rauszufinden, ach stimmt, die PHP-Version passt nicht oder Node.js passt nicht.
00:08:41
DAN
Gerade bei Node und JavaScript ist es ja ein bisschen anfälliger, was NPM und Versionen betrifft, welche Packages in welcher Version zusammen installiert wurden.
00:08:51
DAN
Und das abstrahiere ich gerne mit Docker-Containern weg, dass man das im Projekt hat und dann
00:08:55
Kai Ole Hartwig
Ja, definitiv.
00:08:59
DAN
Deswegen, also wenn die Projekte starten, zum Starten jetzt gerade mit Vibe-Coding und allem, glaube ich, ist das ein perfekter Start, dass irgendwas lokal läuft und dass man etwas laufend hat, aber das hält nicht lange oder macht nicht lange Spaß.
00:09:12
DAN
Ich glaube, es wird nicht lange Spaß machen, das so zu haben.
00:09:15
Kai Ole Hartwig
Ja, ich denke, wenn man über ein Proof of Concept hinausgeht, dann sollte man über ein besseres Setup nachdenken oder ein standardisiertes Setup.
00:09:25
Kai Ole Hartwig
Das muss ja nicht besser sein, zu sagen, man nimmt jetzt einen Container.
00:09:29
Kai Ole Hartwig
Also ich gehe mittlerweile sogar hin und habe auf meinem Rechner selber gar keinen MPM und kein PHP mehr installiert, weil ich alles immer über die Container laufen lasse.
00:09:43
Kai Ole Hartwig
In der Annahme
00:09:45
Kai Ole Hartwig
dass das da dann immer gleich sein wird und immer laufen wird.
00:09:52
Kai Ole Hartwig
Bisher fahre ich auch wirklich gut damit.
00:09:54
Kai Ole Hartwig
Also das ist jetzt nicht, wo ich sage, uh, jetzt muss ich hier aber den Container wieder anpassen und so.
00:10:00
Kai Ole Hartwig
Also das läuft sauberer und besser, als wenn man jetzt irgendwie die Entwicklungsumgebung so direkt auf dem...
00:10:09
Kai Ole Hartwig
auf dem Mac startet in irgendeiner Art und Weise und sagt, ah ja, jetzt habe ich hier das PHP und fange ich ein anderes Projekt an und dann ach, ich muss kurz das PHP ändern.
00:10:18
Kai Ole Hartwig
Ja, ist ja auch kein Thema mit Homebrew, schnell umgestellt, aber das ist ja auch immer, man muss sich da erinnern.
00:10:25
Kai Ole Hartwig
Klar, man kann sich das wieder wegskripten.
00:10:27
Kai Ole Hartwig
Ja, ich wechsle das Projekt in meiner Asile-Eye und dann fängt das an, die Sachen zu machen.
00:10:36
Kai Ole Hartwig
Nicht, dass ich die Idee nicht auch schon hatte und auch mal so laufen hatte, aber es fühlt sich mittlerweile irgendwie falsch an, das zu machen.
00:10:49
DAN
Und das ist ja nur der Anfang.
00:10:50
DAN
Dann kommt als nächster Schritt, du hast eine Datenbank.
00:10:54
DAN
MariaDB, was auch immer, die du starten willst.
00:10:56
DAN
Du brauchst Daten da drin.
00:10:58
DAN
Symfony und andere Frameworks bringen ganz schöne Fixture-Bibliotheken mit, wo du sagen kannst, wenn ich das Projekt starte, fülle mir mal die Datenbank mit meinen Demodaten.
00:11:07
DAN
Damit, wenn ich morgens starte, immer das System im Status quo dasteht und dann auch Testing funktioniert.
00:11:15
DAN
Wenn ich jetzt irgendwie lokal mir was zusammengebaut habe,
00:11:19
DAN
Ich habe gerade ein bisschen im Admin-Bereich rumgeklickt, irgendwas gelöscht.
00:11:22
DAN
Ja, das war meine Demo-Brand, wo meine End-to-End-Tests drauflaufen.
00:11:28
DAN
Die bugge ich wieder, finde raus, dass ich mir selber ein Bein gestellt habe, muss dann gucken, dass ich die Demo-Brand wieder zurückklicke, damit die wieder da ist oder einen SQL-Dump einspielen und dann verliere ich Zeit.
00:11:40
DAN
Und das ist halt, oder das finde ich bei Docker-Containern angenehm, wenn du damit anfängst,
00:11:48
DAN
Der erste Schritt ist ja erstmal nur wirklich PHP-Version.
00:11:51
DAN
Der nächste Schritt, dann hast du eine Datenbank, die du abstrahiert hast in der richtigen Version.
00:11:55
DAN
Die kommunizieren untereinander.
00:11:56
DAN
Du hast schon Umgebungsvariablen, so ein bisschen ähnlicher wie auf dem Produktivsystem.
00:12:01
DAN
Also ich will nicht sagen gleich, aber ähnlicher wie auf dem Produktivsystem, weil vielleicht auch die Datenbank irgendwo anders liegt.
00:12:08
DAN
Das nächste Thema sind E-Mails.
00:12:10
DAN
Ja, mit Docker hast du ganz schnell einen Mailcatcher installiert, wo alle E-Mails drin landen.
00:12:15
DAN
Da kannst du E-Mails testen oder zumindest mal als Mensch auch gucken, was da passiert.
00:12:20
DAN
Dann AWS und Hyperscaler kommen wir auch nicht drum rum.
00:12:23
DAN
Mit LocalStack kannst du sowas sogar lokal abstrahieren.
00:12:27
DAN
Oder, weiß ich nicht, eine andere Message Queue lokal installiert.
00:12:31
DAN
Und dann schon bist du bei einem Stack, der richtig groß wird und das Ganze irgendwie dann organisiert werden muss.
00:12:38
Kai Ole Hartwig
Ja, du hast das Caching noch völlig außen vor gelassen.
00:12:41
Kai Ole Hartwig
Ja, dann...
00:12:41
DAN
Ja, genau, caching auch noch.
00:12:45
Kai Ole Hartwig
Redis, vielleicht dann auch noch ein Varnish oder ähnliches als Fullpage Cache davor.
00:12:52
Kai Ole Hartwig
So, und dann kommst du ja ganz schnell in den Bereich, wo du auch sagst, ah, vielleicht kommen ja auch Konfigurationen oder Informationen noch aus anderen Teams.
00:13:03
Kai Ole Hartwig
Ja, auf einmal hast du so einen Varnish, der dann irgendwie von drei Teams bespielt wird, die da irgendwie wild Konfigurationen reinschreiben.
00:13:11
Kai Ole Hartwig
hoffentlich nicht ganz so wild, sondern natürlich über Git versioniert und vernünftig deployed mit GitOps und so weiter und so fort.
00:13:19
Kai Ole Hartwig
Aber da kommt ja schnell Komplexität zusammen, gerade in größeren Projekten, wo man halt sagen muss, okay, wir müssen dafür sorgen, damit jeder auch zügig arbeiten kann und das jeden Tag und nicht nur einmal im Monat oder so, dass dieser
00:13:41
Kai Ole Hartwig
lokalen Entwicklungsumgebungen, die DEF-Umgebungen so schnell aufzusetzen sind und so schnell jeden Morgen wieder laufen,
00:13:52
Kai Ole Hartwig
dass man auch gar nicht merkt, dass man das jetzt irgendwie macht.
00:13:55
Kai Ole Hartwig
Also ich sage jetzt mal, man sagt meinetwegen Make Start oder so, wenn man das per Make File machen will oder DDEV oder wie auch immer.
00:14:04
Kai Ole Hartwig
Es gibt ja eine Million Möglichkeiten, das zu standardisieren.
00:14:08
Kai Ole Hartwig
Da muss man sich ja auch einfach für einen Weg entscheiden.
00:14:10
Kai Ole Hartwig
Ich bin jetzt auch großer Fan von Make Files, die dann einfach...
00:14:18
Kai Ole Hartwig
Oder was es einfach, die halt die Möglichkeit geben, dass auch jemand, der sich gut auskennt mit diesen Setups, das vorbereitet und ein Entwickler, der jetzt nicht so in diesen Themen drin ist, sondern nur entwickelt.
00:14:36
Kai Ole Hartwig
halt auch sagen kann, okay, ich habe hier schnell meine Entwicklungsumgebung und ich habe nicht jetzt diese Confluence-Seite, wo ich eine Stunde durchscrolle, bevor ich am Ende bin und wo ich x Schritte machen muss und dann steht auch noch drin, naja, aber manchmal musst du auch das machen oder dieses und dann fehlt trotzdem immer noch was, weil jemand hat noch eine Umgebungsvariable hinzugefügt und
Verwaltung von Geheimnissen in containerisierten Umgebungen
00:15:00
Kai Ole Hartwig
das steht nirgendwo, das wurde vergessen zu dokumentieren und dann läuft das Projekt nicht.
00:15:05
Kai Ole Hartwig
Und das sind ja diese ganzen Sachen.
00:15:07
Kai Ole Hartwig
Ganz spannend finde ich auch eigentlich Secret Management für die lokalen Entwicklungsumgebungen.
00:15:13
Kai Ole Hartwig
Ich habe ja in letzter Zeit einen sehr radikalen Ansatz gefahren und tatsächlich, soweit es geht, alle Passwörter irgendwie eliminiert und quasi dynamisch neu gesetzt.
00:15:29
Kai Ole Hartwig
Weiß ich nicht.
00:15:30
Kai Ole Hartwig
Du startest deine Entwicklungsumgebung und dann sagt er, ja, hey, ich habe dir einen Admin-Account angelegt für dich lokal und das ist dein Passwort.
00:15:39
DAN
Ah, okay, also dass du das beim Setup theoretisch setzt.
00:15:44
Kai Ole Hartwig
Genau, so und halt auch sehr mit dem Ziel, in den Produktivsystemen gar nicht mehr hohe Berechtigungen vergeben zu müssen.
00:15:54
Kai Ole Hartwig
Das ist jetzt, also sprich, dass auf einem Produktivsystem es gar keinen Admin mehr gibt.
00:16:04
Kai Ole Hartwig
Im CMS-Bereich bestimmt eine ganze Ecke leichter als im Shop-Bereich.
00:16:09
Kai Ole Hartwig
Aber mit dem Gedanken, wir versionieren eh alle Konfigurationen vollständig.
00:16:19
Kai Ole Hartwig
Das heißt, es sollte niemanden geben, der in einem Produktivsystem diese Berechtigung benötigt, etwas an diesen Einstellungen, die wir versioniert deployen, zu ändern.
00:16:33
Kai Ole Hartwig
Wenn das nämlich notwendig ist, dann ist ja davor irgendwas schiefgegangen.
00:16:36
Kai Ole Hartwig
Klar, für den Notfall, wenn alles brennt, muss man irgendwie die Möglichkeit haben, also ein Backup für den Prozess, dass man das machen kann.
00:16:49
Kai Ole Hartwig
Ohne Frage.
00:16:51
Kai Ole Hartwig
Aber im Normalbetrieb sollte es eigentlich nicht notwendig sein, dass jemand daran geht, diese Konfigurationen anpassen kann oder verändert.
00:16:59
Kai Ole Hartwig
Ganz spannend finde ich auch persönlich für den Betrieb nachher,
00:17:04
Kai Ole Hartwig
jetzt gehen wir gerade von der Standardisierung ein bisschen weg, aber von der Idee her, Read-Only-Filesysteme zu haben in den Containern.
00:17:12
Kai Ole Hartwig
Ja, dass nur noch bestimmte Verzeichnisse, wo es notwendig ist, darauf beschrieben werden kann und alles andere ist nicht veränderbar.
00:17:21
Kai Ole Hartwig
Ja, das wird einmal im Bildprozess gebaut, in den Container gepackt, signiert, dass es von dort kommt,
00:17:29
Kai Ole Hartwig
dass alles in der Version getestet ist, ausgespielt, validiert, dass es auch wirklich die Version ist und dann hast du quasi nur noch den User-Generated-Content, vielleicht sind es aber auch deine Redakteure, die die User sind, die dann Daten verändern im Sinne von Inhalten, Bilder hochladen, Texte einstellen.
00:17:48
Kai Ole Hartwig
Genau, sowieso.
00:17:48
DAN
Aber das sind ja Sachen, die landen dann entweder in einem S3-Bucket, NFS-Storage, also außerhalb von dem Container.
00:17:56
DAN
Egal, was du machst, ob es jetzt AWS oder Kubernetes, würdest du das ja auch nicht irgendwo in den Container mit schreiben.
00:18:02
DAN
Also da hast du dann auch ein Storage irgendwo.
00:18:03
Kai Ole Hartwig
Also nicht, wenn du nicht völlig verrückt bist und bei eben die Promit auf einmal Daten verlierst.
00:18:15
Kai Ole Hartwig
Ich glaube, das haben auch schon Menschen bestimmt gemacht.
00:18:19
Kai Ole Hartwig
Die Idee gehabt, ah ja, ich habe hier den Docker-Container und das ist ja quasi wie ein normaler Server und jetzt behandle ich den so und dann deploy ich das wieder, ist ja auch egal, wo rein,
00:18:32
Kai Ole Hartwig
Und dann ist dieses Volume weg auf einmal und dann stehst du da und alle Daten sind weg.
00:18:39
Kai Ole Hartwig
Alle Bilder weg.
00:18:39
DAN
Chef, wir haben ein Problem.
00:18:43
Kai Ole Hartwig
Also das Marketing, das hat alle Bilder gelöscht.
00:18:46
DAN
genau die anderen was, das ist immer gut, ja.
00:18:49
Kai Ole Hartwig
Ja, natürlich waren es die anderen.
00:18:51
Kai Ole Hartwig
Das waren nie, nie, nie die Entwickler und natürlich auch nie Ops und auch nie, egal wer dran war, es war nie jemand.
00:19:01
DAN
Ja, aber zumindest, das heißt, du organisierst deine Secrets wie?
00:19:09
DAN
Oder beziehungsweise worüber?
00:19:10
DAN
Wie kommen die in den Container rein?
00:19:14
DAN
Ich habe jetzt zum Beispiel auch wieder letztens in einem Gespräch mitbekommen, das sind auch wieder so Themen, wo ich sage, Secrets im Container, ich bekenne mich schuldig für die Dev-Umgebung, weil ich einfach zu faul bin,
00:19:30
DAN
da irgendwie noch einen Secrets Manager in eine Dev-Umgebung mit einzubauen und sage so, komm, die haben keine Relation zum Produktivsystem.
00:19:38
DAN
Ich habe keine Secrets, die irgendwie relevant sind, also von keinem externen System.
00:19:43
DAN
Alles, was ich lokal habe, ist das Passwort von der lokalen Datenbank.
00:19:47
DAN
keine Ahnung, ein Hash oder ein Seed für einen JWT-Token, der lokal ist, der nie deployed wird, das ist okay für mich.
Konsistenz von Containern über Umgebungen hinweg
00:19:56
DAN
was ich gehört habe, ist, dass Leute auch in Docker-Container, die die sozusagen in die Registry später pushen, ihre Secrets drin stehen haben für extern.
00:20:04
Kai Ole Hartwig
Ja, es ist verrückt, ne?
00:20:05
Kai Ole Hartwig
Also, es gibt das, ich weiß das.
00:20:13
Kai Ole Hartwig
Ich gehe da sehr anders ran, also ich bin ein Freund davon, die grundsätzlich nur zur Laufzeit zu haben.
00:20:23
Kai Ole Hartwig
Für lokale Entwicklungsumgebungen haben wir die tatsächlich verschlüsselt im Git-Versioniert.
00:20:29
Kai Ole Hartwig
Also bedeutet aber auch nur, der Entwickler, deren Key, deren Public Key auch hinterlegt ist, kann die auch entschlüsseln.
00:20:41
Kai Ole Hartwig
Und wir reichen die dann zur Laufzeit rein.
00:20:43
Kai Ole Hartwig
Also... Ja...
00:20:43
DAN
Also ähnlich wie Symphony Secrets gibt es ja auch mittlerweile als Bundle.
00:20:48
DAN
Also gibt es tausend Lösungen, das ist die, die mir jetzt gerade einfällt.
00:20:50
Kai Ole Hartwig
Es gibt tausend Lösungen.
00:20:52
Kai Ole Hartwig
Ich müsste jetzt nachschauen, wie unsere heißt.
00:20:54
Kai Ole Hartwig
Das ist aber auch eine Standardlösung.
00:20:55
Kai Ole Hartwig
Da ist nichts Wildes, Selbstgebautes.
00:20:59
Kai Ole Hartwig
Und in Produktivumgebungen bin ich eigentlich ein großer Fan, auch via Sidecars über ein Vote oder so die Secrets reinzugeben.
00:21:08
DAN
Das ist auch interessant, ja.
00:21:13
Kai Ole Hartwig
Muss man natürlich auch schauen, je nachdem, wie groß oder klein das Setup ist.
00:21:19
Kai Ole Hartwig
muss man sagen, finde ich, bevor man jetzt ein Boot betreibt, ohne dass man das woanders benutzt, dann vielleicht doch lieber über Verschlüsselung und dann wird es zur Laufzeit entschlüsselt oder so.
00:21:32
Kai Ole Hartwig
Das zu regeln.
00:21:37
Kai Ole Hartwig
Ja, auf jeden Fall erstmal nicht in den Container rein und nicht schreiben, sondern eigentlich in der jeweiligen Umgebung von außen reingeben und
00:21:49
DAN
Genau, weil die Container eigentlich nur als Grundstruktur funktionieren sollten und nicht für eine spezielle Umgebung gebaut werden sollten.
00:21:56
DAN
Das ist auch so ein Grundkonzept, was ich oft gesehen habe, dass ein Container für eine Stage-Umgebung gebaut wird und dann wird ein neuer für eine Produktiv-Umgebung gebaut, der aber ja dann komplett anders sein kann.
00:22:07
DAN
Und gerade dieser Gedanke mit, ich kann den gebauten Container überall hinschmeißen, ist ja dann der Schöne, dass man sagt, ich habe das schon getestet und so funktionieren die Abhängigkeiten untereinander.
00:22:18
Kai Ole Hartwig
Genau, ich halte es für völligen Unfug eigentlich, hinzugehen zu sagen, ich baue jetzt die Version und ich sage jetzt, okay, das ist Version X Test.
00:22:32
Kai Ole Hartwig
Ich spiele die auf Test aus, da wird die getestet.
00:22:35
Kai Ole Hartwig
Und dann gehe ich hin und baue wieder neu.
00:22:37
Kai Ole Hartwig
Weil eigentlich veränderst du ja im Zweifelsfall das,
00:22:42
Kai Ole Hartwig
vielleicht nicht unbedingt den PHP-Code, den du reingeschmissen hast, aber vielleicht die Nginx-Version oder Libc oder irgendetwas anderes wird zu dem Zeitpunkt dann neu gezogen, weil es ein Update gab und dann ändert sich auf einmal die Ausführung oder das Ergebnis, was nachher ausgespielt wird.
00:23:03
Kai Ole Hartwig
Also eigentlich ist es
00:23:03
DAN
einfach fehlende Schreibrechte für irgendeinen Ordner, der nachträglich auf einmal benötigt wird.
00:23:08
Kai Ole Hartwig
Ja, irgendwelche dummen Dinge passieren dann ja.
00:23:09
DAN
Fliegt dir alles um die Ohren.
00:23:13
Kai Ole Hartwig
Nicht jedes Mal, aber irgendwann dann, wenn man es nicht gebrauchen kann.
00:23:16
Kai Ole Hartwig
Ja, letztes Deployment vor Weihnachten, 16 Uhr, Weihnachtsfeier startet quasi.
00:23:21
Kai Ole Hartwig
Wackfix musst du unbedingt raus.
00:23:24
Kai Ole Hartwig
Man baut das neu und dann passiert irgendwas.
00:23:28
Kai Ole Hartwig
Oder freitags, nachmittags oder whatever.
00:23:31
Kai Ole Hartwig
Es ist ja immer so, dass solche Seiteneffekte dann auftreten, wenn man die eigentlich unter gar keinen Umständen gerade gebrauchen kann.
00:23:38
DAN
Wenn es richtig weh tut, wenn es richtig weh tut, ja.
00:23:38
Kai Ole Hartwig
Dann geht was kaputt, dann muss sich da jemand hinsetzen, das wieder alles fixen.
00:23:44
Kai Ole Hartwig
Und deswegen halte ich die Idee, immer wieder diese Container neu zu bauen, für grundlegend falsch.
00:23:51
Kai Ole Hartwig
Eigentlich, wenn man einmal die Testversion gebaut hat, dann schreibt man halt nur einen neuen Tag an die jeweilige Version ran und sagt jetzt, hey, ja, okay, das war meine Testversion, das ist jetzt meine Beta-Version, das ist meine Stable-Version, go for it.
00:24:04
Kai Ole Hartwig
Aber halt nicht zu sagen, ah, jetzt hat sich was verändert.
00:24:07
Kai Ole Hartwig
Es würde ja auch niemand hingehen und sagen, na, das Composer-Log-File hat sich zwar verändert,
00:24:12
Kai Ole Hartwig
Aber ich schreibe jetzt trotzdem einfach dran, dass das die Stable-Version ist, auch wenn das in der Zusammensetzung gar nicht getestet wurde.
00:24:21
Kai Ole Hartwig
Und ich finde auch den, also ich weiß, wie Teams da hinkommen.
00:24:28
Kai Ole Hartwig
Ich habe auch schon von Unternehmen gehört, die in ihrem Deployment halt wirklich ihre Composer JSON deployed haben und dann auf jedem System ganz klassische V-Hosts Composer Update gesagt haben.
00:24:42
Kai Ole Hartwig
So, dass das schief geht, da sollte man eigentlich direkt drauf kommen, aber manchmal ist man ja betriebsblind und dann muss jemand von außen kommen und sagen, das ist gar keine schlaue Idee gewesen.
00:24:59
DAN
Ich glaube einfach, dass wir nur schneller waren.
00:24:59
Kai Ole Hartwig
Ich finde,
00:25:01
DAN
Wir haben schon als Erste ins Klo gegriffen.
00:25:03
DAN
Also jedem ist das doch mal passiert.
00:25:06
DAN
Jeder hat da schon richtig mal so ein Produktivsystem abgeschossen und Fehler gemacht, von denen wir gerade erzählen, die sich so in unser Gedächtnis eingebrannt haben, dass wir schon fast panisch darauf reagieren, das nochmal zu machen.
00:25:18
DAN
Meine Analogie ist immer so die Herdplatte.
00:25:19
DAN
Als Kind packst du einmal drauf, verbrennst dir so richtig die Finger.
00:25:23
DAN
Und spätestens, wenn du dann fünf Jahre später nochmal die Herdplatte siehst, weißt direkt, heiß, aua, mache ich nicht nochmal.
00:25:30
DAN
Und dann passieren die Sachen, dass wir jetzt sagen, guck mal, sowas macht man gar nicht, aber nur, weil wir den Fehler schon mindestens einmal gemacht haben.
00:25:38
Kai Ole Hartwig
Ja gut, wer hat noch nie ein Produktivsystem abgeschossen?
00:25:38
DAN
Und ich glaube, viele, die das machen, denen ist das noch nicht passiert.
00:25:43
Kai Ole Hartwig
Also, genau.
00:25:44
DAN
Ja, ja, die Bauchschmerzen dabei.
00:25:47
Kai Ole Hartwig
Das ist natürlich, Lernen durch Schmerzen ist sehr effektiv an der Stelle, stimme ich dir absolut zu.
00:25:56
Kai Ole Hartwig
Aber ich glaube auch, wenn man einmal so Grundkonzepte verstanden hat, wie laufen saubere Update-Prozesse,
00:26:06
Kai Ole Hartwig
dann kannst du das ja abstrahieren und weißt, wenn ich das im PHP nicht mache, dann mache ich das doch auch nicht für ganze Container.
00:26:16
Kai Ole Hartwig
Also, an manchen Tagen halte ich mich für so schlau, dass ich glaube, dass ich das hinbekomme, Fehler nicht häufiger zu machen.
00:26:29
Kai Ole Hartwig
An Tagen ohne ausreichend Koffeinzufuhr möchte ich das aber nicht garantieren.
00:26:35
DAN
Und genau dafür sind dann Automatisierungen perfekt, die uns davon abhalten, dumme Fehler nochmal zu machen.
00:26:41
Kai Ole Hartwig
Ja, genau.
00:26:41
Kai Ole Hartwig
Deswegen baut man ja zum Beispiel Pipelines einmal oder baut auch weiter aus iterativ und sagt, ah ja, wir haben festgestellt, dann treten so komische Fehler auf und dann ist es keine schlaue Idee, das zu machen.
00:26:59
Kai Ole Hartwig
Wir hatten zum Beispiel in einem Projekt mal einen ganz komischen Fehler.
00:27:03
Kai Ole Hartwig
Wir haben...
00:27:09
Kai Ole Hartwig
zusätzliche Libraries installiert und auch deinstalliert wieder.
00:27:12
Kai Ole Hartwig
Also sprich rausgenommen im Sinne von, wir haben das aus der Zeile, aus dem Docker-File rausgenommen.
00:27:19
Kai Ole Hartwig
Aber der Build-Prozess war cached.
00:27:22
Kai Ole Hartwig
Und dann war quasi dieser alte Layer, wo es drin war, in der Version war noch vorhanden.
00:27:27
Kai Ole Hartwig
Und hat dann natürlich weiter die Fehler geschmissen.
00:27:32
Kai Ole Hartwig
So, total...
00:27:35
DAN
It works on my machine.
00:27:37
Kai Ole Hartwig
Genau, so, du hast das lokal gebaut, hast gesehen, ja, der Container ist voll super, hast das in der Pipeline gebaut und der Container war scheiße.
00:27:48
Kai Ole Hartwig
Das sind natürlich so Learnings, da kommt man dann dazu, deswegen auch iterativ, so eine Pipeline ist, glaube ich, nie fertig.
Standardisierte Prozesse vs. Projektspezifische Anpassungen
00:27:59
Kai Ole Hartwig
weil es gibt immer mal wieder Dinge, an die muss man ran, die verändert man, da stellt man nachher fast, der Weg, den wir hier gegangen sind, der funktioniert zwar für uns, aber ein anderer Weg ist viel schneller.
00:28:12
Kai Ole Hartwig
Das ist ja auch so eine Erkenntnis manchmal in Standardisierung, dass man auch mit PHP-Libraries, die man selber baut und Modulen,
00:28:25
Kai Ole Hartwig
dass man immer mal wieder ein Projekt hat, wo man feststellt, der Algorithmus, den ich da gebaut habe, der funktioniert zwar super, aber hier in dem Projekt habe ich jetzt viel mehr Traffic und jetzt geht es auf einmal kaputt.
00:28:35
Kai Ole Hartwig
Und dann verbessert man den und dadurch, dass man das da verbessert, kann man das dann, wenn man das schön in ein allgemeines Paket gepackt hat, kann man damit automatisch alle anderen Projekte auch verbessern.
00:28:46
Kai Ole Hartwig
Und stellt dann fest, naja, schau mal, jetzt...
00:28:51
Kai Ole Hartwig
jetzt ballern wir einfach tausend Datensätze in einer Sekunde dadurch.
00:28:58
Kai Ole Hartwig
Ja, oder meinetwegen auch in einer Minute, weil die XML ist groß und mehr oder Gigabyte Stream ist immer ein bisschen ätzend.
00:29:08
Kai Ole Hartwig
So Sachen kann man dann ja super machen.
00:29:11
Kai Ole Hartwig
Und ich finde, deswegen mag ich nicht dieses zu sagen,
00:29:15
Kai Ole Hartwig
oder generell hinzugehen und zu sagen, ja, wir machen alles immer wieder individuell, weil ich finde, hinzugehen und zu sagen, wir machen alles immer wieder individuell für ein Projekt, für einen Kunden, bedeutet nur, ich muss jedes Mal wieder aufs Knie fallen, jedes Mal den gleichen Fehler machen,
00:29:39
Kai Ole Hartwig
um dann das hinzukommen, weil irgendjemand erinnert sich ja nicht daran, dass ich gesagt habe, ich habe den Algorithmus mir aus dem Projekt herkopiert, jetzt habe ich den da verbessert, jetzt kopiere ich den auch ins andere Projekt, aber dann müsste ich da ja auch wieder komplett neu testen und vielleicht habe ich gar keine Testcases dafür geschrieben und ich weiß gar nicht, ob das in dem Projekt auch dann alles noch funktioniert.
00:29:59
Kai Ole Hartwig
Also ich finde, Individualität ist an manchen Stellen einfach auch gefährlich.
00:30:00
DAN
Also es ist schwer, dass
00:30:11
Kai Ole Hartwig
Also das hält ja niemanden davon ab, ein anderes Design zu haben.
00:30:19
Kai Ole Hartwig
Oder auch andere Funktionen einzubauen, die kann man ja trotzdem standardisieren, in Pakete reinpacken und da sauber verwalten, versionieren, mit Tests ausstatten.
00:30:33
DAN
Um nochmal bei dem Beispiel zu bleiben, was wir am Anfang hatten, also Docker und das Dev-Setup.
00:30:39
DAN
Also ich habe mir auch, ich glaube, jeder hat das, also nicht nur ich, sondern alle haben irgendwie so ihr Dev-Setup, mit dem die gut funktionieren und arbeiten und was die so von Projekt zu Projekt mitnehmen oder eine Idee, wie ein Dev-Setup aussehen sollte.
00:30:51
DAN
Und das habe ich auch.
00:30:52
DAN
Also bei mir sind das auch so Unterordner, die Funktionalität enthalten, Makefiles, die halt die Unterordner einbinden.
00:31:00
DAN
Und da kann man generalisieren, genau wie du sagst, mit zum Beispiel einem PHP-Container kommt damit, ein Nginx-Container kommt damit, eine Datenbank, Mailcatcher, das geht.
00:31:11
DAN
Und die Spezialisierung ist natürlich immer das Problem, was dann dagegen steht.
00:31:16
DAN
Und das ist auch so ein bisschen, wo ich dann immer am kämpfen oder am überlegen bin, ist, mit einerseits kann ich das Dev-Setup mitbringen, aber bis jetzt war jedes Projekt so, dass ich das anpassen musste, weil entweder auf anderen Ports irgendwas gemacht wurde, weil
00:31:31
DAN
PHP-Erweiterungen benötigt wurden, Image Magic, irgendwas, wo du dann sagst, das ist der Teil, den man individuell bauen muss und wo ich mich dann auch immer schwer tue und sage so, jedes Projekt ist gleich und ich nehme das mit, packe das da rein, fertig.
00:31:47
DAN
Und ich, also das war so der Grund meiner Aussage, dass, also grundlegend, es gibt Sachen, die so wiederholen sich immer und es wäre doof, das Rad immer neu zu erfinden oder jedes Mal Make neu zu schreiben und zu erfinden.
00:31:59
DAN
Also nicht, dass man das nicht schon versucht hätte, aber kann ich nur sagen, ist eine dumme Idee.
00:32:10
Kai Ole Hartwig
Ich gehe ja mittlerweile hin, ich kopiere ein Make-File immer in mein Projekt rein und das sorgt dafür, dass ein anderes Make-File
00:32:20
Kai Ole Hartwig
über Composer, also ich kopiere ein Makefile rein und ein PHP-Paket via Composer, wo ein allgemeines Makefile drin liegt, das ich dann darüber einbinde, über das Projekt Makefile.
00:32:34
Kai Ole Hartwig
Und dann kann ich natürlich in dem Projekt Makefile beliebig überschreiben und verändern.
00:32:40
Kai Ole Hartwig
Ich arbeite halt auch in den Makefiles mit Variablen, dass ich das anpassen kann.
00:32:47
Kai Ole Hartwig
Also sprich an Stellen, wo ich festgestellt habe, da brauchen wir Flexibilität, da habe ich das natürlich auch konfigurierbar gemacht am Tagesende über Variablen oder allgemein, dass man Funktionen austauschen kann über eine Fluid API für Konfigurationen oder so.
00:33:02
Kai Ole Hartwig
Und bisher funktioniert das nicht,
00:33:08
Kai Ole Hartwig
Ich möchte nicht sagen, dass das immer funktioniert für jedes Projekt, aber für das, was wir gerade so tun, funktioniert das hervorragend.
00:33:18
Kai Ole Hartwig
Aber es ist natürlich auch schwierig, also es kommt auch auf die Projektgröße an.
00:33:23
Kai Ole Hartwig
Wenn du natürlich quasi den einen Service alleine verantwortest und den verändern kannst, wie du möchtest, also alleine vielleicht auch im Sinne von alleine in dem Team, wo man ist,
00:33:36
DAN
Oh ja, das wird dann auch so ein Hin und Her mit wer ist wofür zuständig und in welchem Projekt oder Git-Repo liegen dann die Sachen und wie kommen die zusammen?
00:33:36
Kai Ole Hartwig
dann sind Veränderungen natürlich viel einfacher, als wenn man sich mit x anderen Teams abstimmen muss.
00:33:53
Kai Ole Hartwig
Ja, also das muss man auch natürlich so sehen, wenn man jetzt sagt, okay, das CMS als Service, einer von vielen Services, liegt in einem Team und dieses Team braucht eine Entwicklungsumgebung, dann kann man das natürlich entsprechend aufbauen, umbauen, verändern.
00:34:14
Kai Ole Hartwig
Wenn jetzt das Team, das irgendwie den Shop-Anteil verwaltet, eine andere Entwicklungsumgebung hat, die für die funktioniert,
00:34:23
Kai Ole Hartwig
ist das ja auch völlig okay.
00:34:23
Kai Ole Hartwig
Wahrscheinlich haben die noch nicht mal die anderen, den anderen Services mit drin unbedingt oder denen irgendwie nur gemockt oder ziehen sich von irgendeinem Testsystem dann die Daten da ins System.
00:34:36
Kai Ole Hartwig
Ich sage jetzt mal, wenn wir so ein Content-Commerce-Projekt machen, dann habe ich auch sehr selten lokal den Shop auch laufen mit irgendwelchen Testdaten, weil das macht ein anderes Team,
00:34:48
Kai Ole Hartwig
Und für mich ist es gut genug, wenn ich irgendwie sage, okay, hol mir diese Daten einfach aus dem Testsystem raus.
00:34:57
Kai Ole Hartwig
Also sowas wie das Menü, dass das zusammengebaut wird, das ist okay, wenn du dir die Daten einfach woanders holst.
00:35:04
Kai Ole Hartwig
Oder das ist gemockt oder so.
00:35:06
Kai Ole Hartwig
Das ist auch recht völlig aus, weil mein Job ist irgendwie...
00:35:06
DAN
Reicht vollkommen aus.
00:35:13
Kai Ole Hartwig
hier braucht es ein neues Inhaltselement oder wir implementieren eine neue Schnittstelle irgendwo anders hin, Richtung ERP oder sonst irgendwas.
00:35:22
Kai Ole Hartwig
Dann I don't care, was der Shop macht am Tagesende.
00:35:28
Kai Ole Hartwig
Oder ich spreche halt einen Service an, der gibt mir das Zeugs zurück.
00:35:31
Kai Ole Hartwig
Also das ist ja, es gibt ja eine Million Varianten, wie man das machen kann.
00:35:38
Kai Ole Hartwig
Ich finde so ein Standard-Entwicklungsumgebung
00:35:43
Kai Ole Hartwig
Das drückt halt auch viel aus, wie man persönlich arbeiten möchte oder in dem Team, in dem man ist, arbeiten möchte.
Von einfachen zu komplexen containerisierten Umgebungen
00:35:52
Kai Ole Hartwig
Und ich finde, es gibt ein paar gute Wege und ein paar, die ich nicht machen möchte.
00:36:02
DAN
Was wären denn die guten Wege?
00:36:04
DAN
Also beziehungsweise was ist das, was für dich wirklich ausschlaggebend ist in der Entwicklungsvergebung, wo du sagst, das muss sein, damit ich vernünftig arbeiten kann?
00:36:13
Kai Ole Hartwig
Ja, ich, genau, also ich bin großer Fan davon, dass ich die einfach mit einem Befehl starten kann, ja, also ich sage jetzt mal, geht Pull und dann irgendwie, okay, starte das Ding.
00:36:13
DAN
Also ich habe da gerade was vor Augen.
00:36:26
Kai Ole Hartwig
So, es ist okay, wenn ich dann dabei Kaffee ziehen kann, meinetwegen auch Kaffee trinken kann und dann klettert alles durch und macht, das, das finde ich total nice.
00:36:40
Kai Ole Hartwig
Ich persönlich bevorzuge Make, es gibt auch Menschen, die bevorzugen LIDEV, das ist auch in Ordnung, da werden auch Container hochgezogen.
00:36:44
DAN
Ich glaube, wir sind beide Team Make.
00:36:49
Kai Ole Hartwig
Meintwegen auch ein Bash-Script, ist mir egal.
00:36:52
Kai Ole Hartwig
Ja, also da bin ich jetzt leidenschaftslos am Tagesende, zumindest wenn es nicht meine Umgebung ist, die ich aufgebaut habe, ja.
00:37:04
Kai Ole Hartwig
Was ich finde, was gar nicht geht, ich finde das viel wichtiger zu wissen, so was wie Mump, war ja früher der Standard, oder so nativ irgendwie den Apache und dann nativ die PHP-Version und dann muss man alles da, ich finde auch Vagrant mittlerweile nicht mehr attraktiv.
00:37:25
Kai Ole Hartwig
Vagrant war mal nett,
00:37:28
Kai Ole Hartwig
Aber ich fände, Background-Boxen selber bauen, auf das Level bin ich da zum Beispiel nicht gekommen.
00:37:33
Kai Ole Hartwig
Da war Docker viel freundlicher zu mir.
00:37:36
DAN
Ja, also ich bin da gewesen.
00:37:38
DAN
Das ist so die erste Bekanntschaft mit Virtualisierung, die ich gemacht habe.
00:37:42
DAN
Und es war für mich eine ganz neue Welt, weil ich das geil fand.
00:37:47
DAN
Es war besser als das, was ich vorher hatte, weil da haben wir in einer Agentur zentral auf den Servern auf dem gleichen Dingen gearbeitet.
00:37:50
Kai Ole Hartwig
Definitiv.
00:37:55
DAN
Heißt, an dem gleichen Projekt, an der gleichen Datenbank.
00:37:58
DAN
Und wenn ich etwas im Quellcode geändert habe, habe ich fünf Kollegen blockiert, weil die...
00:38:01
DAN
dass die Datenbank kaputt gemacht hat.
00:38:03
DAN
Halben Tag ging nichts mehr.
00:38:05
DAN
Daniel war der blöde neue Developer.
00:38:08
DAN
Geiles Gefühl, hat richtig Spaß gemacht.
00:38:10
DAN
Und dann kam Vagrant und das war so cool.
00:38:12
DAN
Ich drücke drauf und so wie du beschreibst, ich gehe Kaffee holen.
00:38:15
DAN
Das Ding war mit Ansible so verwaltet, dass dann Ansible innen alles hergerichtet hat in dem Container und dann lief der und dann haben wir dieses Image immer verteilt, so
00:38:25
DAN
über das Netzwerk und dann konnte man damit schon mal schnell starten.
00:38:27
DAN
Das war so der erste Schritt.
00:38:29
DAN
Dann kam irgendwann mal dieses neue Docker-Zeug.
00:38:33
DAN
Das hat mich erst mal voll nicht abgeholt, bis ich überhaupt verstanden habe, dass es halt nicht wie Vagrant nur eine kleinere Box ist, sondern dass man damit Dienste orchestrieren kann.
00:38:43
DAN
Und seitdem bin ich... Also ich kann gar nicht mehr ohne.
00:38:46
DAN
Ich wüsste auch nicht, wie ich ohne arbeiten wollen würde, weil...
00:38:51
Kai Ole Hartwig
Am Anfang habe ich Docker auch wirklich nicht gemocht.
00:38:53
Kai Ole Hartwig
Das muss ich auch zugeben.
00:38:56
Kai Ole Hartwig
Ständig ist irgendwas kaputt gegangen, aber das war auch einfach die fehlende Erfahrung,
Erforderliches Wissen über die reine Codierung hinaus
00:39:02
Kai Ole Hartwig
möchte ich.
00:39:03
DAN
Ja, da musst du mir noch ein bisschen Byte selber klöppeln.
00:39:03
Kai Ole Hartwig
Und das fehlende Wissen auch an der Stelle.
00:39:06
Kai Ole Hartwig
Aber auf das Level bin ich zum Beispiel mit Vagrant nie gekommen.
00:39:09
Kai Ole Hartwig
Ich weiß es nicht, das war...
00:39:11
Kai Ole Hartwig
Ich meine, da war ich dann ja auch ein paar Tage noch jünger als doch, bevor doch, also früher, damals, als wir nichts hatten.
00:39:25
Kai Ole Hartwig
Ja, jedes Einzelne mit viel Liebe von Hand.
00:39:32
Kai Ole Hartwig
Ich sage jetzt mal, wir leben ja mittlerweile auch durch die Erfahrung, die wir gesammelt haben, in einer sehr glücklichen Welt.
00:39:42
Kai Ole Hartwig
wo sehr, sehr viel möglich ist und wo sehr viele Dinge im täglichen Doing einfacher geworden sind, mit dem man sich weniger beschäftigen muss, aber was auch mehr Komplexität gebracht hat.
00:39:59
DAN
Ja, Komplexität ist explodiert.
00:40:00
Kai Ole Hartwig
Also du musst ein breiteres Wissen haben an einigen Stellen und
00:40:13
DAN
Also, weil die Quizfrage ist jetzt genau durch das Dev-Setup.
00:40:17
DAN
Also ich glaube, unsere beiden, ohne dass wir uns jetzt abgesprochen haben, die dürften sehr ähnlich sein.
00:40:22
DAN
Das müssen wir gleich mal übereinander legen.
00:40:26
DAN
Mein Beispiel ist, das Devsetup, was ich habe, nutze ich in vielen Sachen.
00:40:31
DAN
Und das war immer so, Frontend-Entwickler freuen sich, weil die haben ein laufendes Backend im Hintergrund, was mit Fixture-Daten komplett gefüllt ist.
00:40:37
DAN
Die können ihre Tests schreiten, die können wirklich gegen reale API entwickeln.
00:40:41
DAN
Was aber immer dazu führt, ist mit, Daniel, da ist irgendwas.
00:40:47
DAN
Ich habe es aufgesetzt, ich kenne es in- und auswendig.
00:40:49
DAN
Natürlich finde ich den Fehler schneller als andere.
00:40:51
DAN
Und ich würde jetzt auch nicht erwarten, dass andere...
00:40:55
DAN
egal wo sie sind, also auch Backend-Entwickler genauso, die müssen gar nicht so tief in dem Thema drin sein, weil dieses Thema DevOps einfach mir persönlich mehr liegt oder ich durch Vagrant und andere Sachen vielleicht schon tiefer drin bin.
00:41:11
DAN
Also du kannst ja gar nicht mehr alles wissen.
00:41:13
DAN
Ich kann zum Beispiel auch umgekehrt genauso Frontend-mäßig, wenn da irgendwie Highload-Sachen in React passieren müssen,
00:41:20
DAN
Kann ich mal mein Glück versuchen.
00:41:22
DAN
Vielleicht finde ich auch was, aber das dürfte dauern, bis ich was finde.
00:41:25
DAN
Und da sind andere Leute schneller.
00:41:26
DAN
Und ich glaube, das ist so die Spezialisierung in vielen Teams, die du hast, wo du wirklich dann Leute hast, die können, die wissen, wie Make funktioniert, die wissen, was Docker ist.
00:41:36
DAN
Die können auch rausfinden, dass bei denen Docker Desktop auf dem macOS gerade nicht läuft und das starten.
00:41:41
DAN
Aber musst du das debuggen können, wenn, weiß ich nicht, PHP in der Version irgendwo nicht kompiliert und da so ein C-Fehler, die um die Ohren fliegt oder...
00:41:50
Kai Ole Hartwig
Das meine ich zum Beispiel gar nicht, aber du musst halt ein breites Wissen haben, neben deinem tiefen Spezialwissen.
00:42:00
Kai Ole Hartwig
Weißt du, früher bist du hingegangen, also gerade als es noch die Entwicklungsserver gab quasi, wo du deine Umgebung hattest, die hat ja irgendein Admin verwaltet, aufgesetzt,
00:42:12
Kai Ole Hartwig
Und dann lief es hoffentlich oder halt auch nicht so gut, je nachdem.
00:42:18
Kai Ole Hartwig
Und dann hattest du diese eine Umgebung, da bist du hingegangen, du musstest eigentlich nichts von Server wissen, von Linux wissen, sondern nur PHP im besten Fall oder halt auch ein bisschen HTML und so.
00:42:33
DAN
Danke für die Flashbacks.
00:42:34
Kai Ole Hartwig
Und konntest halt deinen Job machen.
00:42:36
Kai Ole Hartwig
Jetzt musst du halt irgendwie dann doch schon wissen, okay, es gibt hier
00:42:42
Kai Ole Hartwig
GIT ist ja auch noch dazu gekommen, von da, wo wir angefangen haben.
00:42:51
Kai Ole Hartwig
Oder erst SVN und dann GIT.
00:42:58
Kai Ole Hartwig
Ich sage jetzt mal, die Toolchain, die man benutzt und die Tools, die man dann doch irgendwie ein bisschen zumindest kennen muss,
00:43:07
Kai Ole Hartwig
die sind einfach mehr geworden.
00:43:08
Kai Ole Hartwig
Früher hattest du dein FTP-Programm, hast das einfach auf den Server geknallt, dann ist es kaputt gegangen.
00:43:15
Kai Ole Hartwig
Aber es war halt irgendwie, du hattest das FTP-Programm, du hattest deinen Editor, in dem du programmiert hast, also, und da hast du keine Tests geschrieben und all so Dinge, das sind ja, ich sag jetzt mal, außerhalb des
00:43:32
Kai Ole Hartwig
rein Codeschreibens sind ja viel mehr Dinge dazugekommen.
00:43:35
Kai Ole Hartwig
Also irgendwie dieses Ding, okay, wir schreiben jetzt auf, wir schreiben Tests, wir versionieren das Zeugs, nicht mehr durch, wir ändern die Dateiendung oder so, sondern so ganz echt.
00:43:47
Kai Ole Hartwig
Wir haben Entwicklungsumgebungen, wir haben Composer, ja, auch das oder
00:43:57
Kai Ole Hartwig
andere Versionsverwaltungsmöglichkeiten oder Paketverwaltungen.
00:44:02
Kai Ole Hartwig
Und das ist ja einfach ein Toolstack, der heute existiert, der eine gewisse Komplexität reinbringt, aber halt auch ein breites Wissen erfordert.
00:44:11
Kai Ole Hartwig
Das heißt nicht, du musst jeden Git-Befehl auswendig kennen, den du
00:44:16
Kai Ole Hartwig
nicht häufig benutzt.
00:44:19
Kai Ole Hartwig
Die Standardbefehle reichen, dass du die kennst, aber es gibt halt mehr und das ist ja schon etwas, das muss man vielleicht
Standardisierung und die Einführung von Komplexität
00:44:26
Kai Ole Hartwig
auch wissen.
00:44:26
Kai Ole Hartwig
Genauso musst du wissen, okay, ich habe da irgendein, meinetwegen Docker laufen oder Podman oder sonst irgendetwas und da kommen diese Container und wo kommen denn diese Container her und wen spreche ich denn im Zweifelsfall an, wenn das Ding halt einfach nicht läuft?
00:44:42
Kai Ole Hartwig
Und ich finde, da ist halt schon die Standardisierung, so sehr ich sie liebe,
00:44:48
Kai Ole Hartwig
Und so sehe ich auch, es bevorzuge, dass wir heute diese Prozesse haben und diese Versionierung da haben, hat das halt im Gegensatz zu früher, vor zwei Jahrzehnten, als ich angefangen habe, vielleicht sogar ein bisschen über zwei Jahrzehnte mittlerweile, hat das natürlich Komplexität gebracht.
Vibe Coding vs. Agentic Coding
00:45:08
Kai Ole Hartwig
Und die muss man heute halt auch erstmal jedem beibringen.
00:45:08
DAN
Es macht uns mehr Arbeit, das Ganze wieder zu standardisieren.
00:45:17
Kai Ole Hartwig
deswegen belächle ich auch reine Vibe, oder was heißt belächle, aber da finde ich diese Vibe-Coding eigentlich auch sehr spannend, gerade weil ich finde Vibe-Coding bringt uns auch weg von der Schalantistisierung ein bisschen.
00:45:30
Kai Ole Hartwig
Aber vielleicht das stimmt.
00:45:34
DAN
Also ich finde Vibe Coding erstmal gut, weil das, also ich weiß nicht, ob wir überhaupt vom Thema jetzt abweichen wollen, aber wenn wir schon anfangen, ich finde es gut, weil du kannst schneller Sachen ausprobieren.
00:45:48
DAN
Ich habe schon mehrfach jetzt gehört mit, guck mal, ich habe da irgendwas gemacht.
00:45:51
DAN
Ich habe eigentlich keine Ahnung vom Programmieren, aber ich habe da schon mal eine Idee.
00:45:56
DAN
Da stehe ich von OVL mit den Tatsachen.
00:45:56
Kai Ole Hartwig
Stimmt, dafür finde ich das super.
00:45:59
DAN
Also wenn ich dann dazukomme und sagen kann, guck mal, das ist geil, rumklicken, alles gut und toll, aber speichere vielleicht den Key von deiner API oder so nicht im Frontend oder weiß ich nicht, das und das kannst du anders machen, damit die Sachen schneller laufen.
00:46:15
DAN
Dann sind wir schon im Lösungsmodus.
00:46:17
DAN
Vorher war das so, da hat jemand eine Idee und man hat zusammen was auseinandergeklammüse, hat dann ganz viele Boards gemacht und analysiert, ob die Idee was werden könnte.
00:46:27
DAN
Das kannst du ja skippen.
00:46:27
Kai Ole Hartwig
Ja, also du bist halt schneller beim POC, also schneller den POC und dann kommst du halt, wenn du Richtung MVP gehst, denke ich halt in so einen Prozess rein.
00:46:42
Kai Ole Hartwig
Aber vielleicht sparen wir uns das Thema auch für ein andermal, weil ich finde, man muss auch vielleicht als letzten Satz zu diesem Vibe-Coding noch kurz unterscheiden zwischen Vibe-Coding und Agentic-Coding.
00:46:57
DAN
Also ich habe keine Ahnung, wie unterscheidest du das?
00:47:00
Kai Ole Hartwig
Also ich finde, Vibe-Coding ist einfach wirklich dieses Ding mit, ich hacke das rein und es kommt was funktionierendes raus auf der grünen Wiese.
00:47:09
DAN
Erzeuge mir Übersetzungen in sieben Sprachen zu dem E-Mail-Template.
00:47:10
Kai Ole Hartwig
Und Agentic-Coding bewegt sich
00:47:12
Kai Ole Hartwig
ich sage jetzt mal, in dem Rahmen, wo sich auch ein Entwickler jeden Tag bewegt und unterstützt den halt.
00:47:19
Kai Ole Hartwig
Dadurch, dass er halt gewisse Aufgaben übernimmt, wie zum Beispiel das Schreiben von Testfällen oder das Schreiben von Dokumentation meinetwegen auch.
00:47:28
Kai Ole Hartwig
Oder, oder, oder.
00:47:29
Kai Ole Hartwig
Also da kann man sich ja selber aussuchen,
00:47:33
Kai Ole Hartwig
Genau, also gerade, welche Themen man vielleicht nicht gerne macht.
00:47:38
Kai Ole Hartwig
Das kann man sich als Entwickler jetzt aussuchen.
00:47:40
Kai Ole Hartwig
Wenn ich jetzt Bock habe, meinen Algorithmus selber zu schreiben und auch irgendwie die Vorstellung habe, dann kann ich
Unterschiedliche Ansätze zur Implementierung von Standardisierung
00:47:45
Kai Ole Hartwig
das eher machen.
00:47:45
Kai Ole Hartwig
Dann kann ich sagen, hey, schreib die Testfelder oder jetzt dokumentiere das bitte, was ich gemacht habe.
00:47:53
Kai Ole Hartwig
Aber ich glaube, damit sollten wir jetzt nicht einsteigen.
00:47:58
Kai Ole Hartwig
Wir haben sehr viel über Standardisierung jetzt geredet.
00:48:01
Kai Ole Hartwig
Ich glaube, wir sollten jetzt zu einem Abschluss kommen.
00:48:06
Kai Ole Hartwig
Wenn ich auf die Uhr schaue.
00:48:09
DAN
Ja, wir waren fleißig, das stimmt.
00:48:11
DAN
Was ist der Abschluss?
00:48:13
DAN
Sind wir uns einig oder sind wir uns einig, dass wir uns uneinig sind?
00:48:18
Kai Ole Hartwig
Ich glaube, wir sind uns einig, dass in bestimmten Punkten wir Standardisierung cool finden, aber unterschiedlich weitgehend darin.
00:48:25
DAN
Ja, das glaube ich schon.
Abschluss und Verabschiedung
00:48:34
Kai Ole Hartwig
Hervorragend.
00:48:36
Kai Ole Hartwig
Nein, wir müssen uns jetzt noch eine Stunde darüber unterhalten, dass mein Ansatz viel besser ist als dein Ansatz.
00:48:47
Kai Ole Hartwig
Hervorragend.
00:48:48
Kai Ole Hartwig
Dann war das unsere erste Folge Secrets Not Included.
00:48:55
Kai Ole Hartwig
Ich hoffe, ihr hattet so viel Spaß wie wir.
00:48:57
Kai Ole Hartwig
Und dann hören wir uns hoffentlich beim nächsten Mal.