Transcript: Deployment von Webapplikationen

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Ja, hallo liebe Hörerinnen und Hörer. Hier sind wir wieder, diesmal bei der zwölften Episode vom Python-Podcast.

Was machen wir heute? Heute machen wir ein bisschen Deployment für Anfänger.

Also so ein bisschen werde ich den Lochen löchern damit, wie man einfache Dinge auf irgendwelche Server bekommt.

Ja, ich bin der Dominik. Hallo. Jochen ist wieder da. Wir sind im Wintergarten.

Sommergarten ist wieder viel zu heiß.

Wir hoffen, euch geht es gut. Hört uns gerne zu. Schreibt uns gerne alles, was ihr wollt, alles, was ihr möchtet, an hallo.pythonpodcast.de.

Ja, schöne Grüße.

Ja, genau. Es haben auch tatsächlich Leute inzwischen so ein bisschen angefangen, die Kommentarfunktion zu benutzen.

Da war ich ja irgendwie...

Ja, unser Pocket-Cast-Chapter-Marsch funktioniert nicht so wirklich. Wir wollen irgendwann nochmal ein bisschen daran basteln, dass das dann mal geht.

Ja, unter den Kommentaren müssen wir wahrscheinlich auch noch so ein bisschen was tun.

Wäre es vielleicht nicht so schlecht, wenn man E-Mail-Benachrichtigungen kriegen könnte oder vielleicht zumindest ein Kommentar-Feed oder sowas.

Muss ich mal gucken. Geht bestimmt. Habe ich mir schon mal auf die To-Do-Liste geschrieben.

Aber es ist nicht nur sehr warm, es ist auch irgendwie sehr wenig Zeit momentan für alle möglichen Dinge.

Ja, ja. Alles auf einmal.

So ist das halt. Ja. Aber genau. So ein bisschen haben wir ja schon.

Insofern brauchen wir uns nicht die ganze Zeit nur zu beschweren, sondern können auch ein bisschen was erzählen.

Ja, diesmal röchere ich dich ja ganz viel mit lustigen Dingen.

Wie man, wieso man, warum man den ganzen Unsinn überhaupt macht.

Ja, ja. Ich finde, das ist ein interessantes Thema.

Und naja, das ist ehrlich gesagt, ich meine, so Inspirationen aus anderen Podcasts, die ich so höre, zu nehmen, ist momentan auch so ziemlich das Einzige, wo ich Inspirationen hernehmen kann.

Daher dachte ich, nehme ich mal irgendwie die Veröffentlichung von Jungle for Professionals von Will Vincent, die jetzt gerade irgendwie dieses Wochenende passiert ist, zum Anlass, da auch so ein bisschen was zuzusagen.

Weil ich hatte so ein bisschen, ich habe es noch nicht komplett durchgelesen, aber ich habe so ein bisschen reingeschaut.

Also, wie ihr merkt, wir sind direkt bei der nächsten Chapter-Mark-Szene.

Ja, Moment, genau, Moment.

News. Ja, alles klar, habe ich gesetzt.

Ja, so beim Durchblättern habe ich schon gedacht, okay, das sind genau die Sachen, mit denen ich auch schon irgendwie lange rumgeplagt habe.

Und das ist wirklich sehr schön gemacht.

Und ja, das ist eine Menge Zeug.

Also, wie betreibt man eigentlich überhaupt irgendwie so eine Webseite da draußen?

Und was macht man da alles?

Und gerade jetzt speziell irgendwie, was Jungle angeht, was muss man da alles tun?

Und insofern, wenn einen das interessiert oder man das Problem irgendwie hat, dann kann ich dieses Buch auch durchaus empfehlen.

Das ist eine sehr schöne Zusammenfassung von all den Dingen, die man da so beachten sollte.

Ja, aber eben, genau.

Also, ich fand immer, das kam immer zu kurz.

Also, auch wenn man sich so andere Bücher anguckt.

Dieser Teil, da wird dann immer gesagt so, naja.

Ja, äh, äh, äh.

Ähm, Hände wedeln.

Das ist alles kompliziert.

Das ist nicht so einfach.

Fragt einfach euer Ops-Team.

Ja, und dann hat man das vielleicht gar nicht.

Das ist blöd.

Ähm, ja.

Und, ähm, genau.

Das, äh, da kriegt man einen ganz guten Eindruck, was man da so tun kann.

Und irgendwie, ja, ich fand immer, das ist ein Thema, was zu kurz kommt, aber was halt durchaus sehr wichtig ist, damit man irgendwas auf die Straße kriegt.

Und darüber wollten wir so ein bisschen was reden.

Vor allen Dingen, weil, ja, wir müssen ja einfach mal alle Synergien nutzen, die wir kriegen können.

Ich glaube, du wolltest ja auch irgendwie so eine Webseite haben oder so, ne?

Ja, ja, genau.

Ich wollte so einen Server mal selber auch irgendwie aufsetzen.

Und, ähm, da brauche ich so ein bisschen Hilfe natürlich bei.

Und gucken, was man mit Python alles machen kann.

Und da löchere ich dich gleich ein bisschen mit.

Ja.

Ähm, haben wir noch irgendwelche News aus der Szene, die wir vielleicht dann noch hier reinbekommen?

Oder?

Ja, ich würde einfach mal die Sachen, die so, äh, passiert sind, einfach, äh, nach und nach.

Was haben, was haben wir denn da noch so, äh, äh.

Du hast noch so einen Postkast gehört am Wochenende.

Data Engineering.

Ähm.

Da hast du irgendwas Spannendes zu erzählen.

Da, ja, aber das weiß ich gar nicht, ob das jetzt so super in diese, dieses Format passt.

Da ging es um, äh, eine Firma, die halt so, äh, ja, Label, Data Labeling macht.

Also gut, ich mache ja auch viel Machine Learning Zeugs, äh, Data Science.

Und, ähm, da, also, ich fand, ich fand das deswegen gut.

Also, äh, weil, also, ich glaube, äh, wie hieß, ähm, wie hieß die Firma nochmal?

Cloudworker oder so.

Und der, äh, Chef von dem, äh, Gründer, hat da halt, äh, irgendwie auf dem Data Engineering Podcast da, äh,

äh, äh, was zu erzählt.

Und, ähm, äh, das, was er so beschrieben hat an, das sind die Probleme, die man normalerweise kriegt,

wenn man, äh, irgendwie, äh, Firmen dabei helfen will, äh, irgendwas in die Richtung zu machen.

Das kam mir schon alles sehr bekannt vor, weil das sind halt auch die Dinge, die, äh, ich immer beobachte,

wenn ich da irgendwelche Projekte zu mache.

Und, ähm, ja, das sind halt so, äh, eben.

Wenn man, die meisten denken, das ist kein Problem.

Woher kriegt man eigentlich die Daten?

Dabei ist das ein Riesenproblem.

Also, äh, das ist oft etwas, was nicht wirklich,

äh, gelöst wird, äh, oder wo viel größere Schwierigkeiten dann tatsächlich, äh, lauern.

Also, man soll was machen.

Die Leute kennen jetzt nicht alle Machine Learning, aber die haben gar keine Daten, um das zu tun.

Genau, oder denken, sie haben die Daten, kommen aber irgendwie nicht ran.

Oder brauchen die Daten aber in einem anderen Format.

Und dann gibt's irgendwelche Abteilungen, die sich da querstellen.

Das ist immer furchtbar.

Also, das ist immer ganz schrecklich.

An die Daten ranzukommen, ist meistens ein großes Problem.

Und, ähm, der war, der hatte auch so ein paar lustige Beispiele dafür, äh, wie momentan da, äh,

also, auch wenn ich, äh, kuriose Ideen der Leute kommen, um Daten zu bekommen.

Also, momentan ist es zum Beispiel, also, wenn man irgendwas mit Bilderkennung machen möchte oder so,

braucht man halt auch oft viele, viele Daten.

Und, äh, in, in Las Vegas scheint es wohl mittlerweile üblich zu sein, dass da, äh, wie die, äh, äh, wie, äh.

Hotelzimmer werden gefilmt.

Ja, ja, Hotelzimmer, oder man mietet auf Airbnb, äh, wie diverse, diverse Geschichten und bezahlt mehr oder weniger,

oder gibt Leuten Goodies dafür, dass sie sich da reinstellen.

Dann darf man Fotos von ihnen machen oder so, weil man ja irgendwie unterschiedliche Leute in unterschiedlichen Situationen haben muss, ne.

Nicht, dass, äh, irgendwie das Modell dann nur lernt.

Irgendwie den gleichen Raum wieder zu erkennen, das ist ja ja doof, deswegen braucht man unterschiedliche.

Und es ist, es ist nicht so einfach.

Und dann, äh, ist das natürlich auch relativ schnell, relativ teuer, wenn man die Daten versucht selber zu generieren.

Oder man muss irgendwie mit Drohnen rumfliegen und Sachen fotografieren und so.

Klingt ja nach großem Spaß.

Äh, ja, es, es klingt nach großem Spaß, aber es ist auch so ein bisschen, das ist alles so wilder Westen momentan so ein bisschen.

Was ja auch, ja.

Hooray!

Das wäre durchaus Spaß.

Ja, ja, genau.

Ja.

Brown Coat Night.

Ja, ähm.

Äh.

Genau, genau, das habe ich gehört, das fand ich, das fand ich ganz cool.

Ähm, kann man sich mal anhören, ich werde das, einfach den Link dazu in die Show Notes packen.

Das hat jetzt aber gar nicht so viel mit Python zu tun, sondern es war eher so, ja, wie kriege ich das eigentlich hin, wenn ich viele Daten zu annotieren habe und zu labeln.

Äh, eher so Data Science Machine Learning Geschichten.

Dann hat dir erst gleich was getwittert, ähm, zum nächsten Chat, glaube ich, war das.

Äh, ja.

Ah, äh, okay.

Äh, genau, da ging es um, ähm.

Fix.

Äh, pre, äh.

Pre-Talks, glaube ich.

Ja.

Ja.

Meine ich.

Ja, okay.

Das war der nächste Eintrag.

Ah, nein, doch.

Doch, ja, doch, genau, das ist es.

Äh, und zwar ist das so ein, äh, Kon, Konferenz, ähm, ja, Organisations, äh, äh, Organisationssoftware, die halt, äh, irgendwie viele Leute verwenden, ist auch so eigentlich ganz cool Django-basiert, ähm, äh, das, die wurde auch verwendet, um, äh, zum Beispiel die Subscribe, diese Podcast-Konferenz, äh, zu.

Ah, ja, da waren wir ja auch, ja.

Auch waren, ja.

Deswegen kam mir das schon so bekannt vor.

Es wurde auch damit, äh, äh, organisiert und viele, äh, ja, Events im CCC-Umfeld, vor allen Dingen wohl auch das Camp, wird halt damit, ähm, damit geplant.

Und, ähm, denen fehlt irgendwie, äh, ähm, ordentliches Ticketsystem.

Ähm, und irgendwie, dass auch Pre-Talks irgendwie mit E-Mails ordentlich umgehen kann und so.

Und deswegen hat auch Twitter mal gefragt, ob es da nicht Leute gibt, die sehr Lust hätten, sich mit, äh, zu beschäftigen oder vielleicht im Rahmen von einem Sprint auf dem Camp, äh.

Irgendwie da was dran zu tun.

Gerne auch, äh, Einsteiger, ne, weil man kann da sicherlich auch viel lernen und, äh, auch für andere ist es vielleicht mal eine Gelegenheit, Leuten was zu zeigen, wie Django da so funktioniert, was man da so tun kann.

Also fand ich auf jeden Fall eine, äh, gute Idee und, ähm, das Ding wollte ich mir auch immer schon mal näher angucken.

Äh, und, äh, ja, finde ich eine gute Gelegenheit.

Äh, ich würde da auch hingehen, wenn ich auf dem Camp wäre.

Ich weiß es aber nicht.

Ich fürchte, ich werde nicht da sein.

Ganz vielleicht doch, aber eher wahrscheinlich nicht.

Daher, äh, wird das leider nicht funktionieren.

Wann ist das denn überhaupt vielleicht für irgendjemand geneigt?

Äh, das Camp ist irgendwie Ende August, also.

Ich glaube, es ist alles ausverkauft worden, schon lange jetzt.

Ja, ja, schon lange, genau.

Ähm, äh, Moment, ich gucke mal gerade, das, äh, CC-Camp, wann ist denn das?

Also irgendwie, äh, 20. bis 25.8., ja.

Irgendwo in der Nähe von Berlin.

Genau.

Ja, ähm, also, äh, ist auf jeden Fall.

Wenn da zufällig jemand hingeht oder so, dann ist das.

Das ist sicher eine gute Gelegenheit, um sich mal intensiver mit Django, äh, beschäftigen zu können.

Und auch was Sinnvolles damit zu tun, was ja auch nicht so, dafür gibt es ja auch gar nicht so wahnsinnig viele Gelegenheiten oft.

Ähm, ja.

Und, ach, da hat eine Überleitung, äh, die da vielleicht auch, äh, direkt Sinn macht, ist, ähm, äh, habe ich auch gehört in einem Podcast.

Äh, ja, ich bin momentan viel auf Spielplätzen unterwegs und höre da Podcasten.

Ja, ja, ja.

Kinder toben.

Ja, ja, ja.

Vor allem dann langweilig, wenn man in der Sonne rumsteht.

Ähm, äh, und zwar ging es da um, äh, Tiger.io.

Äh, halt nicht so wie das, äh, wie das gefährlich raubt hier, sondern mehr so wie, äh, diese, äh, öde, äh, äh, weite Ödnis im Norden.

Das Projektmenschmentool.

Ja, das wollen wir doch später besprechen.

Nee, aber das passt jetzt super, das, äh, äh, hier ran zu, äh, äh, pflanschen, weil das ist nämlich, könnte man super auch mit dem P-Talks, äh, eigentlich verbinden.

Weil, äh, naja, da fehlt halt vielleicht so ein bisschen Ticketsystem.

Und das Tiger hat das auch schon eingebaut.

Und das hat irgendwie ein ziemlich cooles Ticketsystem eigentlich.

Und das ist halt auch Django und das ist vor allen Dingen ein Django REST-Framework, äh, und hat eine super API.

Das heißt, man kann das alles, äh, äh, toll auch, äh, irgendwie ansteuern ohne.

Jetzt müssen wir nochmal kurz erklären, was denn Tiger jetzt überhaupt ist.

Also Tiger ist ein Projektmenschmentool, wo man Boards bauen kann, Kanbans bauen kann.

So ein bisschen wie Trello, wenn ihr das vielleicht kennt oder so.

Wobei, ich würde sagen, also wenn, wenn man, äh, irgendwie, äh, Jira, äh, äh, herzliches Beileid.

Wer das kennt, aber, äh, ich hab, war öfter mal, äh, in der, also das Missvergnügen, irgendwie da, mich mit, äh, beschäftigen zu müssen.

Und das war immer, ist da immer meistens eher Schmerz.

Das kann aber auch sein, dass es einfach, ich meine, es ist einfach viel Zeug.

Und ich hab jetzt auch meistens nicht so viel Lust, mich wie ordentlich mit Projektmanagement-Software zu beschäftigen.

Daher, vielleicht lag's auch einfach daran, dass ich da nie so wirklich durchschaut hab, wie das funktioniert.

Und, äh, dann schnell was machen wollte.

Und das ging dann halt nicht, weil's kompliziert ist.

Und dann war ich irgendwie frustriert.

Mag sein.

Äh, vielleicht ist es auch einfach ein furchtbares Tool.

Kann sein.

Ähm.

Aber, ähm.

Also ich konnt's auch nie leiden.

Ja, auf der, das haben wir so auf der komplexen Enterprise-Seite irgendwie, ähm, möglicherweise.

Und dann irgendwie sowas wie Trello.

Ja, und also die Mutterfirma von, äh, Jira ist, äh, Atlassian.

Die auch mal so, ähm, na, wie hieß das, Bitbucket gemacht haben und so.

Die sich jetzt aber eher so in die Projektmanagement-Software-Ecke begeben haben.

Was wahrscheinlich ein schlauer Schlagzug war.

Und, ähm, auf der anderen Seite Trello.

Genau, äh, das eigentlich von den Leuten, die auch Stack Overflow gemacht haben.

Irgendwie mal gegründet worden, aber verkauft worden an, äh, an Atlassian.

Äh, aber das ist eher so eine leichtgewichtige Geschichte.

Und gefällt mir, der Ansatz gefällt mir irgendwie besser.

Aber auch wie man das bedient gefällt mir besser.

Kann natürlich nicht so viel wie, wie Jira.

Und, äh, das sind sozusagen vielleicht die beiden Pole, äh, die, äh, äh, so von super komplex Enterprise bis zu, äh, naja, relativ einfach und, äh, schlank und leicht zu bedienen.

Äh, auf der anderen Seite, äh, dazwischen gibt es aber von Atlassian jetzt nix.

Ähm, und, äh, da ist, glaub ich, oder da positioniert sich Taiga selber als, äh, ist ein bisschen, hat ein bisschen mehr Features als, als Trello.

Aber ist nicht ganz so, äh, nicht ganz so kompliziert wie jetzt, äh, wie jetzt Jira.

Aber, und es hat halt als, als Kernfeature halt ne, ne, ne API, sodass man quasi alles, man kann sogar mit der API mehr machen, als man jetzt mit dem Frontend machen könnte.

Daher, ähm, ja, es gibt, es gibt irgendwie mobile Apps irgendwie, die man da verwenden kann, die jemand anders gebaut hat.

Aber der gesehen hat, dass man die API verwenden kann, und dann hat er das einfach mal gebaut.

Ja, also wir werden auch, äh, später noch erzählen, wie man sowas denn auf dem Server hostet.

Das ist ja das, was wir damit tun.

Genau.

Wenn man das installieren wollte, es ist auch, es ist komplett, äh, freies Software.

Das heißt, man kann das irgendwie lokal sich installieren und da betreiben.

Das ist ja auch für viele Leute wahrscheinlich ganz wichtig, dass man das tun kann.

Und man kann halt auch reingucken und, und schauen, wie die da so Sachen implementiert haben.

Ich hab's ein bisschen reingeguckt und war, top, das ist eigentlich jetzt gut.

Ja, man kann seinen eigenen Board bauen, seinen eigenen Trello-Board organisieren, kann man Boards auf seinem eigenen Server basteln.

Und sowas hab ich auf jeden Fall vor.

Ich bin schon ziemlich gespannt, wie das alles funktioniert.

Ja, äh, genau, genau.

Also, Scrum macht das Ding, oder man macht halt, kann halt auch, äh, irgendwie kann man damit machen.

Äh, ja, und, ja, kann man sich ja mal anschauen, ist eigentlich ganz nett.

Ähm, äh, genau.

Ja, was hatten wir noch?

Ja, wir wollten eigentlich noch ganz kurz auf die Frage von Arnim eingehen, der uns eine E-Mail geschickt hatte.

Oh, das haben wir auch verschludert irgendwie.

Ja, das war ein bisschen her tatsächlich, schon, ähm, Mai, glaub ich.

Ähm, und, äh, ja, er wollte, äh,

mehr über Error-Driven-Development hören.

Und, ähm, ja, wir wollten eigentlich mal eine Folge zu Tests...

Ja, das machen wir auf jeden Fall.

...mal machen.

Ähm, aber das wird noch ein bisschen dauern.

Ja.

Und deswegen so viel, ja, äh, was meinst du denn überhaupt damit, Arnim?

Also, vielleicht nochmal irgendwie fragen.

Es gibt irgendwie da nicht so ganz klar, welche Methode...

Ich dachte, ich wüsste, was das, was gemeint wäre, aber dann hab ich nochmal gegoogelt und dann dachte ich so, oh nee, ich weiß doch nicht.

Weil, äh, also, ich glaub, das kam als Reaktion auf einen Pick aus einer Folge von Anfang Mai, wo wir erwähnt hatten, dass es MatMat oder, äh, gibt.

Und das Ding, ähm, macht, äh, äh, sozusagen guckt halt, ob...

Es war mehr so eine Geschichte, um zu schauen, ob deine Tests halbwegs abdecken, was dein Code so tut, indem es einfach deinen Code, äh, zufällig verändert.

Und dann guckt, ob die Tests brechen oder nicht.

Und wenn, äh, dein Code zufällig verändert werden kann, ohne dass deine Tests brechen, dann weißt du halt, mh, okay, ja, ist ein Problem.

Und, ähm, ja, sie nennen das Mutation Testing.

Äh, äh, das ist eigentlich, eigentlich auch eine ganz nette Idee.

Aber das würde ich jetzt Error-Driven...

Error-Driven-Development, weiß ich nicht.

Also, ich hab dann noch, also, äh, Leute benutzen den Begriff gerne als, äh, sozusagen Gegenbegriff zu Test-Driven-Development.

Ja, sozusagen, also, beziehungsweise, äh, schreiben dann halt, dass, wenn du kein Test-Driven-Development machst, dann machst du halt Error-Driven-Development.

Was, äh, vielleicht, wenn man sich das mal klar macht, also, natürlich ist das irgendwie schon so.

Und, äh, wenn man sich das mal klar macht, dann, dann kann man sich auch vielleicht vorstellen, dass es nicht so eine super schlaue Idee ist.

Sondern, dass man das vielleicht, äh, ja, dann gleich richtig machen kann.

Wobei, naja, ich mein, ich würd auch dieses...

Das Test-Driven-Development-Cool-Aid nicht, äh, irgendwie, äh, nicht einfach so schlucken, sondern da, äh...

Also, man, man sollte Sachen vielleicht nicht so total übertreiben, äh, was die, was die Reinheit angeht, der Gedanken.

Ähm, ich, ich probier auch oft lieber Dinge erstmal aus oder so, bevor ich dann Tests schreibe.

Weil man, ja, man legt sich halt auch, was die Implementation angeht, ziemlich fest, wenn man Tests schreibt.

Ähm, damit sollte man sich dann schon halbwegs sicher sein, was das Ding eigentlich machen soll, bevor man das tut.

Aber, ja.

Es ist auf jeden Fall, Testschreiben ist eine gute Idee und, ähm, äh, äh, sozusagen, ähm, sich nicht von den Fehlern, die User anreporten, äh, die quasi die Tests, äh, äh, äh, als Tests zu benutzen, ist wahrscheinlich eine ganz, ganz schlaue Idee.

Äh, aber wie gesagt, ich weiß nicht genau, was gemeint war.

Insofern nochmal nachfragen.

Ja, ja.

Wir machen auf jeden Fall noch eine, eine Folge zu, zu Testing.

Äh, wir müssen uns nur noch jemanden finden, der, äh, irgendwie Lust hat, da mit uns drüber zu reden und so.

Test ist nämlich immer das spannendste Thema von allen.

Ja.

Ja, ähm.

Was noch mal.

Ähm, es ist ja auch schon fast ein Monat her jetzt.

Wir haben ja schon, äh, Juli.

Ja, ja.

Ähm, es gab eine Folge über Visual Studio Code und da auch über Tests.

Da kam ich gerade drauf, glaube ich, ähm, die man mit Visual Studio Code machen kann und, ähm, das Debugging-System, äh, auf TalkPython2Me.

Ja, ja, ja.

Das, das war irgendwie der, glaube ich, der, der Produkt, Chef von den Produkt-Onern für Visual Studio Code irgendwie, der da interviewt wurde.

Oder der hat eine Menge auch interessante Sachen, äh, erzählt.

Ja, vor allen Dingen, dass Visual Studio Code halt auch irgendwie bei Python-Entwicklern so, äh, super populär ist.

Irgendwie, was sie, womit sie gar nicht so gerechnet hätten am Anfang, aber das hat sich irgendwie so rausgestellt.

Offenbar gab es da irgendwie so eine Marktlücke.

Ja, äh, ich benutze ja jetzt auch schon eine Zeit lang Visual Studio Code.

Äh, äh.

Ja, ich kannte das noch.

Ich, äh, hab, hast mich angesteckt.

Ja.

Ja.

War eine gute Idee.

Äh, ist tatsächlich auch ein Editorialisier.

Ich meine, es ist so eine, viele Leute mögen ja dieses Elektronen, dieser, ist auch ein elektronenbasierter Editorial insofern.

Ja, viele mögen das nicht so, aber es funktioniert ziemlich.

Also, wenn ich das zum Beispiel vergleiche mit PyCharm.

PyCharm verwende ich, habe ich auch irgendwie eine Zeit lang verwendet.

Oder fand ich auch ab und zu immer noch, aber, äh, tatsächlich fühlt sich das irgendwie deutlich, äh.

Softer an, ne?

So smoother.

Ja, irgendwie, äh, snappier.

Ich weiß nicht, was kam da noch vor?

Ja, es gibt da so ein paar Sachen, die funktionieren direkt, also irgendwie, ne?

Es ist einfach viel schneller.

Es fühlt sich schneller an.

Vielleicht ist es gar nicht schneller, aber es fühlt sich schneller an.

Die Sachen reagieren einfach viel.

Also die Latenz, wenn man auf irgendwas drückt oder so, oder irgendeine Tastenkombination angibt,

die Latenz, bis dann was passiert, ist deutlich schneller.

Vielleicht hast du ja noch ein Rechner gekauft inzwischen.

Ne, ne.

Ne, äh, das, daran, daran liegt es nicht.

Und, ähm, ja, das ist halt, äh, also, ja, weiß nicht, wie sie das, äh, ich weiß auch nicht,

vielleicht macht auch PyCharm irgendwas falsch, keine Ahnung.

Ja, das ist eigentlich cool.

Also irgendwie, wenn man seinen Code damit verwalten will, irgendwie auf Git oder sonst irgendwo,

das funktioniert super.

Integration mit Azure ist toll.

Man kann direkt automatisch CI, irgendwie CD machen und das alles pushen.

Man kann Live-Sharing machen und dann gemeinsam am Code arbeiten, was auch ziemlich gut funktioniert.

Ja, mit mehreren Cursor.

Und Link und Multicursor und Übertragung.

Ja.

Im Terminal und mittlerweile, also in einem Nightly-Build war das doch nicht top.

Das müsste mittlerweile sowieso schon im Stellbild sein,

dass man jetzt auch über SSA einfach sich irgendwo auf eine Maschine legen kann

und da im Verzeichnis entwickeln kann.

Das ist auch ziemlich praktisch.

Kannst du auch auf deine WSL-Maschine gehen oder auf den Raspberry

oder auf eine andere Server, wenn du lustig bist, und direkt da editieren.

Das ist ja auch oft ein Argument, was man hört, dass Leute sagen,

ja, ich nutze halt VI oder Vim, weil da habe ich überall die gleiche Entwicklungsumgebung.

Und, äh, ja, auch wenn ich mich auf irgendwelchen Produktionsmaschinen einlogge,

kann ich da auch mal...

Ähm, äh, meine Umgebung, so wie ich sie...

Aber, genau, ist natürlich in gewisser Weise ein Argument,

aber geht mit VS Code jetzt auch.

Da braucht man gar nicht mehr unbedingt Vim für verwenden.

Ja, ja.

Also, falls noch jemand rausbekommen hat, wie man sowas wie FoxDot verwendet mit VS Code,

das habe ich nämlich noch nicht hinbekommen,

also das ist Live-Evaluation von Python-Code,

da hätte ich noch Lust drauf.

Das würde ich gerne noch rausfinden.

Das müsste irgendwie funktionieren.

Dass man irgendwie, weiß nicht, Alt-Enter drückt oder sowas,

und dann spielt er direkt die eine Zeile,

dann kann man Musik machen mit FoxDot verpeisen.

Das fände ich noch super.

Sonst muss ich es nämlich...

Sonst muss ich es nämlich irgendwie dran basteln,

aber, ja, so viel...

Ja.

Und wenig Zeit für so viele Projekte, ja.

Du hattest irgendwas noch reingeschrieben,

PySimple...

PySimple GUI.

Ja, da gibt es jetzt irgendwie noch einigermaßen fünffige Versionen,

die ist jetzt auch irgendwie vor,

weiß nicht, wann das rausgekommen ist,

vor ein, zwei Wochen oder so,

die man ganz gut nutzen kann.

Das ist ein Wrapper für Tkinter, TK,

oder PyQ5.

Kann man beides benutzen mit derselben Syntax.

Man kann halt einfach angeben, welches der dann visualisieren soll

und...

Hat einen relativ einfachen GUI für die...

Ja, PySimple ist ja nicht so besonders stark

bei Nachverstandsprogrammierung

und das kann man damit aber ganz gut

und vor allen Dingen schnell und effektiv erledigen.

Das lohnt sich vielleicht da auch mal kurz rauszuschauen.

Wollen wir mal angucken.

Genau, jetzt hast du mir meine Woche schon fast geklaut.

Ach so, sorry.

Ja, ja, der kommt jetzt wieder.

Ja.

Oh, ein Podcast,

den ich auch noch gerne erwähnen würde,

ist auch einer der letzten Django-Chat-Folgen,

mit Simon Willison.

Also einer der Leute, die auch Django

quasi so mit aus der Taufe gehoben haben.

Ziemlich...

Ist alles so mit...

Audioqualität ist manchmal so ein bisschen...

Aber ansonsten inhaltlich

fand ich das sehr, sehr gut.

Das war sehr, sehr spannend, was er da so alles erzählt hat.

Also was die Geschichte von Django angeht,

aber auch, was so die aktuellen Entwicklungen

sind, was er für spannend hält.

Und das halt gerade irgendwie...

Ja, so momentan spielt...

Async-Geschichten spielen da eine große Rolle.

Die sind gerade sehr spannend.

Oder sein Privat...

Oder sein Pet-Projekt,

was aber jetzt auch mittlerweile so groß geworden ist,

dass...

Pet oder Pet?

Ja, ja, so ein Nebenprojekt halt.

Aber es ist nicht mehr wirklich so neben...

Das Peißen-Halsband für die Katze, oder?

Nee, ja, also...

Er hat da irgendwie

irgendeine Fellowship gekriegt,

ich weiß es nicht genau, wo er dann von irgendeiner

Uni ein Jahr lang bezahlt wird dafür, das jetzt zu entwickeln.

Das ist schon mal...

Daher geht auch die Entwicklung da momentan relativ schnell voran.

Das Projekt heißt Dataset.

Ach so.

Genau, das ist mir auch früher schon mal aufgefallen.

Hätte ich bestimmt auch schon mal ein paar Mal erwähnt, oder so.

Da hast du schon mal drüber gestolpert, ja.

Ja, genau. Darüber können wir bestimmt

auch nochmal eine eigene Sendung machen.

Ich wollte mich damit auch noch intensiver

beschäftigen. Das ist eigentlich eine sehr coole

Idee, irgendwie, wie man

mit einer

SQLite-Datenbank halt

Datensätze irgendwie

verfügbar machen kann, öffentlich,

ohne... Und zwar auf eine Art,

wie man halt sehr, sehr gut das abfragen kann, aber ohne...

Also man kann ja SQL-Statements einfach verwenden,

und man kann auch so coole Sachen machen, wie

JavaScript benutzen, um SQL-Statements

zu erzeugen, die man da verwenden kann, um die Daten noch zu fragen.

Voll gut. Und normalerweise

ist das alles puri bär, weil

schrecklich, schrecklich SQL-Injection droht und so,

aber man kann

SQL

SQLite so starten,

dass man sagt, irgendwie, ja,

das ist dann Datenbank-Street-Only,

und dann ist das alles nicht mehr schlimm, weil es kann nichts passieren.

Und

da ist das, was man normalerweise nicht tun sollte, dann plötzlich

alles erlaubt und cool.

Das ist

einfach, es ist nett.

Es hat viele überraschende Wendungen,

dieses Ding, wo man sich denkt, ach, cool, das geht,

das kann man so machen.

Die Datasette-Folge müssen wir uns ja nochmal aufschreiben, die steht nämlich gar nicht noch.

Ja, die muss da noch

mit drauf. Genau.

Also diese Podcast-Improvisation

kann ich Leuten durchaus, die sich für Django und

so interessieren, uns herzlichen, ist ja

sehr nett.

Ja, ich würde sagen, jetzt haben wir aber die News halt durch und machen

den nächsten Chapter, Marc, weil solange

löchere ich dich jetzt damit, wie das denn jetzt überhaupt funktioniert

mit dem Server. Und wir fangen wirklich von ganz

Basis-Bodensatz an,

also so gar keine Ahnung, wie macht ihr das und so

und wo und, ja, ich möchte nämlich

auch wissen, wie man das am besten macht, so Best Practice,

was sagt denn Jochen dazu?

Und, ja, ich würde sagen, können wir

starten jetzt mit unserem Hauptthema, ne, Server?

Dann starten wir da mal. Server, die Plattform für Anfänger, ja.

Erstmal Server,

was ist denn das? Also irgendwo

so ein Rechner, der irgendwie bedienbar ist,

das sollte ja irgendwie so klar sein, aber

ja, wen nehme ich denn da?

Also, was mache ich denn da für einen Server?

Nämlich irgendeinen Hosting-Anbieter,

Cloud-dedizierten Server,

virtuellen Server, warum und so?

Boah, ich brauche ja noch irgendwie

jetzt eine Domain und so, ne?

Wie würdest du denn das irgendwie so...

Ja, also was man auf jeden Fall tun

sollte, ist halt irgendwie eine Domain selber

registrieren und

was nicht so,

also,

man sollte vielleicht... Da schreibst du einen Brief und schickst den an eine Stelle.

Ja, ne, da gibt es ganz viele Anbieter.

Ich weiß nicht, kann man... Ich bin das Universum, ich hätte gerne diese

Domain. Ja.

Es gibt ja diverse Anbieter, da muss man halt

ein bisschen Geld bezahlen, das kostet gar nicht so viel pro Jahr

und dann hat man halt eine Domain.

Du hast gesagt, selber registrieren, also es gibt ja

verschiedenste Server, Poster, die

das alles mit einbieten. Ja, aber das ist

vielleicht nicht so eine schlaue Idee, das zu machen, sondern

besser... Aus welchem Grund?

Weil man das ja ändern können will. Also, bei vielen

kann man das auch ändern, das ist kein Problem, aber

also,

ich kenne das auch, dass viele, also so gerade,

weiß ich nicht, eben diese

ja,

Welt, Wald und Wiesen

da hat man dann oft irgendwie so ein

Formular, wo man irgendwie die NS-Geschichten eingeben

kann, aber dann halt die Sachen, die man

braucht, also weiß ich nicht,

irgendwelche, wie heißen

diese Dinger, Verified Domain

SPF Records oder

also es gibt diverse Records, die man unter Umständen

einstellen können möchte.

Was ist ein Record?

Oh Gott, oh Gott, oh Gott.

Wie ist das Domain Name System?

Also, das ist im Grunde eine verteilte

Datenbank, die

Informationen darüber

enthält, wie

Namen auf

IP-Adressen aufgelöst

werden und umgekehrt.

Das heißt, da steht irgendwo, wenn man irgendwie den

Nameserver irgendwie fragt, keine Ahnung, der einzige, der

wahrscheinlich bekannt ist, irgendwie der von Google mit den

4.8. oder sowas, oder 8.4.4

oder was, und dann gibt es ja auch noch einige unabhängigere,

wenn man nicht alle seine Daten zu Google schicken möchte.

Aber die fragt man dann und die wissen,

dann wo, hinter welcher IP oder hinter

welchem Namen, welcher IP steht.

Ja, man kann auch einen eigenen Resolver betreiben. Also man kann das

durchaus von Hand auch machen. Das ist vielleicht mal eine ganz interessante

Geschichte, dass man halt irgendwie

das mal einfach von Hand mit

den S-Abfragen

irgendwas resolft.

Man resolft das halt so von hinten nach vorne. Also wenn man

jetzt irgendwie

pythonpodcast.de hätte, dann würde man

erstmal gucken, okay, also was man wissen muss

ist, man braucht

irgendwie so einen Root-Nameserver, aber

wenn man eine IP von dem hat,

dann kann man den halt fragen, okay, was ist

in der Nameserver, der zuständig ist für die .de-Zone?

Der Root-Nameserver, das sind

die großen Knotenpunkte.

Kriege ich das irgendwie raus, wenn ich so einen Trace-Root

mache, wo die irgendwie hängen?

Ja, die sind weltweit verteilt. Da gibt es ein paar von

rootservers.net, irgendwie

a.rootservers.net oder ganz gerne ein paar.

Ich weiß jetzt gar nicht mehr genau,

alles schon altes Wissen, vielleicht ist es auch

mittlerweile alles anders, aber

auf der ganzen Welt sind da ein paar von denen verteilt

und

normalerweise

einige von denen sind halt

einfach, die IP-Adressen sind halt eingebaut in

diverse

Resolver-Libraries, daher

ja, aber das muss man irgendwie wissen, sonst kommt man halt

auch nicht weiter und von denen

kann man sich dann halt durchhangeln bis zu der

Domain, die man eigentlich haben möchte und quasi

für jeden Teil der Domain

fragt man dann halt den entsprechenden Nameserver,

also über

eben die Records, also NS-Records sind halt

die Records, die zuständig sind, einem

zu sagen, was denn der Nameserver

zuständig Nameserver ist, also ich frage halt quasi den

NS-Record

für .de, den Root-Server und dann

kriege ich halt irgendwie den Nameserver, der zuständig ist

für die .de-Zone

und das ist halt

na, wie heißen sie noch?

Hier

D-NIC,

irgendwo in Frankfurt stehen die, glaube ich

und

die haben dann das .de-Zone-File irgendwie

drin und da steht

dann halt drin, wer, also in dem File

steht vor allen Dingen, stehen die NS-Records

für alle .de-Domains,

also

wenn ich jetzt wissen will, wer ist,

welcher Nameserver ist dann zuständig für

pythonpodcast.de, dann hole ich mir

den NS-Record für pythonpodcast

in dem

Nameserver, der für .de

zuständig ist und dann

genau, kriege ich das irgendwie zu.

Und ich kann das auch irgendwie selber machen, dass ich

sage so, hey, hier, ich heiße jetzt gerne

Dominik

mein Python-Com oder sowas, oder

.de, wir wollen jetzt zu D-NIC und dann sage ich

der D-NIC so, hey, hier, ich wäre jetzt gerne so,

ist das noch frei und schicke das dann

da?

Ja, das geht nicht

unbedingt so einfach. Das heißt, ich muss da

einen Registrier, Registrar

verwenden. Ja, also früher ging das auch,

da ist man da vorbeigegangen beim D-NIC,

hat da die Tür geklopft und gesagt, hallo,

ich hätte da mal so gerne ein Domain.

Aber das geht schon lange nicht mehr.

Ja, da kamen so viele

Leute wahrscheinlich auf diese Idee, ja.

Ja, das

geht schon lange nicht mehr.

Aber Gandhi macht das

dann zum Beispiel, wenn ich jetzt bei dem Domain...

Es gibt ganz viele unterschiedliche, also ich weiß gar nicht, ob es da

ich weiß nicht, ob das, was ich da verwende, gut ist

oder nicht, keine Ahnung. Es spielt auch

keine große Rolle, weil es ist, die können alle

irgendwie mehr oder weniger das Gleiche.

Ja, aber was wichtig

ist, dass man selber das registriert hat und selber

dann sozusagen die

Sachen ändern kann und halt auch das umziehen

kann, wenn man mag und so.

Und das ist halt bei diesen, wenn man das beim Provider macht,

oft ist es auch so, dass es geht,

aber manchmal halt auch nicht und dann hat man ein Problem,

wenn man zum Beispiel den Hoster wechseln möchte.

Ja.

Und ja, genau.

Aber

ja, das ist so das Erste, was man braucht.

Einen eigenen Domain braucht man noch für viele andere Dinge.

Wenn man Indie-Web machen will, braucht man auch einen eigenen Domain.

Jetzt brauchen wir irgendwie so einen Computer, der irgendwie so läuft.

Also die Frage ist, muss der schnell sein, muss der langsam sein?

Was ist das denn? Also haben wir da tatsächlich

einen eigenen Computer, der mit

Kernfestweise...

Ich war mit dem Auflösen noch nicht fertig.

Also wenn man jetzt den NS-Rekord von

einem Domain hat, das heißt noch nicht, dann muss man den

Names aber noch fragen, was ist denn jetzt zum Beispiel der

A-Rekord? Das ist halt das, was halt die IP einem

gibt für

eine bestimmte

Domain.

Es gibt dann auch andere. Es gibt MX-Rekords,

die halt einem sagen, wo die...

wer zuständig ist für Mail.

Es gibt halt...

Ja, es gibt ja eine ganze Menge Zeugs.

Es gibt doch Text-Rekords und

weißer Teufel. Und manche von denen werden auch

missbraucht, um andere Sachen zu signalisieren. Aber wenn man

solche Sachen machen möchte, wie...

und man möchte Mail

irgendwie von einem

Drittanbieter machen lassen, weil man keinen Bock hat,

das irgendwie alles selber

aufzusetzen und zu maintainen, dann

muss man da eine ganze

Menge Records setzen und so.

Oder auch für andere Geschichten,

Services, die man da benutzen kann, damit halt sozusagen andere

unter

mehr oder weniger unter der Domain auftreten

können.

Das würde ich auf jeden Fall auch machen. Ich möchte ja gerne ganze

Projekte unter unterschiedlichen Domains, die ich mir

dann irgendwie buche, vielleicht auf einen größeren

Server legen und die dann irgendwie da reinrouten.

Ja, das ist immer ein anderes Problem,

das geht natürlich auch, aber allein

ist gut, DNS unter Kontrolle zu haben.

Jedenfalls, also man muss nicht

unbedingt einen eigenen Nameserver betreiben, das mache ich

teilweise noch, aber das ist auch irgendwie

eher schmerzhaft.

Weil man hat auch direkt so mit Security

Geschichten oft, dann gibt es

so diese komischen DNS Amplification

Angriffe und blöde

Geschichten und so Zeugs, mit denen man zu tun

kriegt.

Ja, aber

also

man will das eigentlich, glaube ich, nicht unbedingt

selber betreiben, wenn man da nicht Spaß dran hat.

Aber trotzdem möchte man

die Records bestimmen können, weil das

für viele Services, die man sonst so benutzen

möchte, halt auch wichtig ist.

Ich glaube, damit sind wir aber mit DNS im Grunde durch.

Ja, jetzt kommen wir endlich auf einen Server. Jetzt haben wir so einen Server, der hat

dann irgendwie nur so eine IP und dann

wissen wir noch gar nicht, dass wir nicht, aber...

Nee, noch nicht. Wir haben nur das DNS

unter Kontrolle. Wir können das jetzt auf eine beliebige IP zeigen

lassen, sozusagen.

Es gibt sogar so die DynDNS,

das heißt, wir könnten sogar zu Hause einfach einen Rechner ans Netz

hängen oder so.

Ja, aber dann musst du dann Games aber

selber betreiben, irgendwie, wahrscheinlich.

Ich glaube, es gibt so einen Service, da muss man immer nur

sagen, hey, ich bin jetzt hier, ich bin jetzt hier, ich bin jetzt hier.

Ja, ja, klar. Es gibt auch in vielen

Routern ist das eingebaut, zum Beispiel eine Fritzbox

macht das. Dem kann man einfach

sagen, so, das ist mein DynDNS-Anbieter

und dann

kriegt man halt immer eine entsprechende,

dann macht die das automatisch.

Wenn sich die IP-Adresse ändert, dann schickt die halt

irgendwie ein Request dahin und sagt, okay,

findest mich hier, hallo. Genau.

Und dann kann man auch sein Kram zu Hause

immer erreichen, ja.

Wobei man da wahrscheinlich eigentlich eher

sowas wie ein VPN verwenden will, aber

DynDNS geht auch. Aber ist eigentlich

heutzutage alles nicht mehr so richtig relevant, glaube ich.

Ja,

genau. Also wenn man DynDNS unter Kontrolle

hat, dann kann man halt jetzt, wenn man

jetzt einen Server hätte,

irgendwo, der unter der IP

verfügbar ist, dann

kann man sozusagen

die Domänen darauf zeigen lassen.

So, und jetzt ist die Frage, was für ein

Rechner will ich denn da haben? Will ich irgendwie vom großen

Rechenzentrum haben? Will ich einen bei mir zu Hause

in die Ecke stellen? Möchte ich irgendwie so

einen Cloud-Server mir mieten? Möchte ich so einen dedizierten

Server haben? Das kann man ja skalieren von

zwei bis, weiß nicht, wahrscheinlich 200, 2000

Euro im Monat. Ja, das kommt auch an.

Also, was man damit vorhat, für die

meisten Leute wird

irgendwie da weniger, wahrscheinlich eher

mehr sein. Also, es wird wenig reichen, weil

Ja, es gibt ja auch so

WordPress-Hosting-Anbieter oder sowas.

Da kann man wahrscheinlich nichts anderes machen, außer ein WordPress-

Blog drauf.

Der auch schon ziemlich viel kann, wenn man

jetzt nicht so viele Besucher hat.

Aber, ja, ist

aber nicht das, was man wahrscheinlich haben will, wenn man

jetzt Python macht oder so. Da möchte man das

schon selber tun

können. Also, es gibt auch eben

für Python-Hosting nicht

so viele Anbieter, die da

Was ist denn jetzt Python-Hosting?

Weil ich dachte, da läuft jetzt ein Computer.

Genau, ja. Das ist halt, also bei

WordPress ist halt klar, das ist halt die Software.

Sowas gibt es natürlich für bestimmte

Python-Geschichten

auch. Also, es gibt zum Beispiel, muss ich

jetzt nochmal nachgucken, habe ich letztens irgendwie gesehen, wenn man

jetzt einfach nur ein CMS haben will unter der

Domain, da gibt es da auch Anbieter.

Diego, Diego, Diego, ich weiß

es nicht mehr, muss ich mal nachgucken.

Die bieten an, dass man irgendwie ein

Wagtail-CMS oder halt

ein Django-CMS

bekommt, da

gehostet und das ist dann so ähnlich wie

WordPress-Hosting. Also, so. Okay, das läuft ja auch

im virtuellen Container irgendwo.

Nee, das, ja, das weiß ich

nicht, ob die da ein extra

Container pro

Seite hochfahren. Ich denke

nicht. Also, wenn man sich zum Beispiel, also,

wenn man sich anguckt,

was da die User sind, die man teilweise, wenn man in manchen

Feldern versucht, irgendwas einzugeben, dann kommt da eine

Liste der User hoch oder so. Da kommt

ziemlich wildes Zeug hoch. Das heißt, ich gehe mal davon

aus, dass es nicht irgendwie pro

Domain oder so gekapselt, sondern das

ist halt eine Datenbank, auf der alle sind. Und dann gibt es halt

unterschiedliche Sites. Und

das ist ja auch durchaus vernünftig unter Umständen.

Also, du brauchst

nicht unbedingt einen Container für

eine eigene Seite. Da ist es

gar nicht nötig. Ist ja bei

WordPress-Geschichten wahrscheinlich auch nicht so.

Und

genau, das

gibt durchaus da auch Anbieter, aber das sind viel weniger

als jetzt im PHP-Umfeld oder WordPress oder so,

wo es eine große Geschichte ist.

Was eher

eine Rolle spielt,

wenn man jetzt Python-Applikationen irgendwo hosten

will, ist halt sowas wie, also wenn man jetzt

kommerzielle Anbieter, wir gehen einfach mal von

einfach zu, es wird schwieriger oder komplizierter.

Oder man kann mehr selber kontrollieren

durch, wenn man

so, sie heißen alle so Platform-as-a-Service-Anbieter

sich anguckt.

Also ganz oben wäre sowas wie eben,

du kriegst halt irgendwie

dein Backtail-CMS und hast dann halt

ein fertiges CMS unter deiner Domain.

Das wäre halt sozusagen alles

Am besten noch mit Admin-Interface

und unten. Genau, das wäre dann auch irgendwie so quasi,

ich weiß gar nicht, ob das das wäre, das wäre wahrscheinlich Software-as-a-Service

mehr oder weniger Modell. Dann

Platform-as-a-Service ist, naja, du

ähm

ähm

sagst nicht, du kriegst jetzt nicht eine fertige

Webseite sozusagen, schlüsselfertig

äh, sondern

du kannst eine fertige Webseite, ja,

sondern du kriegst halt irgendwie

äh, du hast halt einen Account bei Heroku

oder sowas, also Anbieter wären das sowas wie Heroku

oder Python Anywhere oder so.

Und ähm, da

äh

Ich vergleiche mich mit diesen Häusern unheimlich toll.

Mit den Hochhaus-Hinz-Stellen und Gartenhütte, ne?

Ja, also sag mal so,

das ist halt, äh

äh, im Grunde

ja, da, da sind das dann oft wahrscheinlich

Container, die da hochgefahren werden, äh, und

du hast halt solche Dinge wie Datenbank, ist halt

schon einfach irgendwie mal nicht da. Du wohnst in einem Hotel.

Du musst wohnen, dann gehst du unten in die Lobby.

Es ist quasi so eine Art Hotel, ja.

Ich weiß nicht, ob diese Analogie trägt, also

wenn, wenn Software-as-a-Service, also wenn

die, wenn diese... Ich war konziersch, ich hätte gerne einen

Kaffee. Ja,

was wäre denn dann, was wäre denn das fertige,

die fertige, das fertige WordPress, dass man

sich nur noch einloggen braucht?

Da ist der Pool schon vorgeheizt und

äh,

äh,

ich würde sagen, das ist doch eigentlich eher das Hotel, oder?

Wo man halt sich um nichts kümmern muss und das...

Und Heroku ist die Ferienwohnung, wo du selber kochst.

Ja, und Heroku ist so ein bisschen die,

es ist eher so, äh,

nicht mal das, es ist eher so

der, äh,

die, die, die Schuhkarton-

Eigentumswohnung irgendwo, das ist halt der Container

halt, oder es ist halt wie der Container auf dem Schiff, ja, wo man

irgendwie die ganze Inneneinrichtung

und so, das muss man halt selber machen, weil es ist halt nicht drin und

das kann man auch komplett austauschen, das ist natürlich auch irgendwie

ein Vorteil. Ja. Ähm,

da kannst du halt sagen, okay,

ich deploy da halt irgendwie

ein Flask, äh, ja,

Flask-Ding hin oder halt eben, äh,

ein Django, äh, hin oder so.

Ähm,

äh, aber du bist da halt nicht festgelegt, ja,

also auch nicht auf, äh, ja.

Und, ähm,

ja,

äh, äh, aber

diverse andere Geschichten werden dann schon abgenommen, ja,

also man kümmert sich sozusagen nur noch um

den Teil, der halt, wenn man alles selber machen würde,

äh, im Applikations-

Server, jetzt nenne ich das mal so, äh,

äh, laufen würde, äh,

um, um den Applikationsteil kümmert man sich, ja, aber

sowas wie Datenbank, das macht man nicht selbst, da gibt's dann halt

und es gibt auch endlos viele andere Plugins

und Dinge, die man dazuklicken kann, äh,

Suchmaschinen oder

irgendwelche, irgendwelche anderen, äh, Sachen, die man halt

auch verwenden kann und das muss man alles dann nicht selber machen

bei, bei Heroku jetzt beispielsweise, sondern das

ist halt dann einfach da. Ähm,

und man kümmert sich nur um die

Applikationen, die man dahin deployt und, äh,

natürlich definiert man irgendwie die Datenbank

dadurch, dass man jetzt in Django beispielsweise die ganzen

Modelle halt irgendwie, äh,

ja, definiert und, äh, die werden dann halt auch

in der, in der Postgres, äh, irgendwie

eingelegt, aber man betreibt die Postgres-Datenbank nicht

mehr selber, sondern das macht halt irgendwie, äh,

macht entweder Heroku oder einer von den Drittanbietern,

die halt ein Postgres-Plugin

für Heroku anbieten, für einen.

Was natürlich dazu führt, dass es

wesentlich weniger, äh,

aufwendig ist für einen Server.

Ähm, aber man ist halt auch so

ein bisschen eingeschränkt und, ähm,

diese Geschichten führen halt oft dazu,

also, äh, ich hab das tatsächlich mal

versucht, weil ich hab versucht für, äh,

äh, es ist ja auch sowas, ne, wenn man,

wenn man... Das klingt nicht nach einem gelungenen

Experiment. Ja, für Django, Django

Cast jetzt diese, wollte ich einfach mal so,

wie ist das denn, wenn man das jetzt auf Heroku mal deployen will,

zum Testen, damit man es halt draußen irgendwo, äh,

laufen hat, aber, äh,

ähm, ja,

man möchte jetzt nicht vielleicht irgendwie so ein Commitment,

äh, eingehen, da jeden Monat Geld zu bezahlen

oder so, das, oder hat halt dann auch keinen

Root-Server irgendwo rumstehen, den man benutzen könnte.

Darauf kommen wir irgendwie später wieder.

Ja, dann, dann wäre es doch ganz praktisch,

wenn man das einfach mal nach Heroku oder, oder so die

pläut und dann mal guckt, wie das so funktioniert.

Dachte ich, das wäre eigentlich ganz nett und zumal

halt all diese Anbieter alle so freie

Container anbieten, die also

für Hobby-Benutzung oder so,

die halt nichts kosten, äh, die dann auch

bestimmte Anforderungen nicht erfüllen,

beziehungsweise keine garantierte, äh, die sind beim ersten

Laden oft langsam, weil das ist wahrscheinlich

unten drunter irgendwie

Docker-Container oder vielleicht benutzen die dann irgendwie

Lambda-Funktionen

bei AWS oder so, wer weiß.

Ja, genau, das sagst du ja schon wieder.

Äh, nein, nein, ich bin mir noch mal auf...

Äh, äh, also

da kann es sein, dass der Container erst gestartet wird, wenn man,

wenn so ein Request reinkommt und dann ist das halt ein bisschen

langsam und doof und, äh, aber

es stört ja nicht, wenn man, äh,

wenn man das eh nur so

mal ausprobieren möchte, ne, und, ähm,

ja, äh,

und dann hab ich da, mich da gemacht,

da so ein bisschen eine Anleitung für zu schreiben und dann

ist mir relativ schnell aufgefallen, es ist,

ist es nicht so einfach, äh, und ich war

überrascht, wie, wie knifflig das ist und ich bin immer noch

ein bisschen überrascht, äh, dass auch Heroku

da, da keine gute Anleitung für hat, wie, wie macht

man das eigentlich, so machen die nicht nur Python, die machen auch

Ruby on Rails und, und, und auch

Node.js und weiß der Teufel, aber

trotzdem, es ist schon, äh, irgendwie, es war

schwerer, als ich dachte und ich dachte mir so, ui,

also, äh,

hm. Ja, wenn der Jungen daran knabbert, dann

weiß ich jetzt nicht, ob ich jetzt anfänge, unbedingt

mich da so reinstürzen

möchte. Also, ich meine, auch dieses Django for

Professionals Buch kann man sich auch mal angucken, auch der,

äh, obwohl Vincent meinte es schon so,

das ist alles irgendwie immer, also die Sachen so hinzukriegen,

dass sie dann tatsächlich funktionieren, so, ist oft

schwerer, als man so denkt und es war echt

nicht mal ganz einfach. Das Containerschiff ist vielleicht

überladen und hat irgendwie halbe Schlagzeit, man weiß es

nicht genau. Ja, also, aber es ist halt, also,

ich fand jetzt überraschend, wie viel wenig

einfacher das ist, als wenn man

alles selber macht. Also, der Schritt von,

also, ehrlich gesagt, ich find's, das mag

daran liegen, dass ich das häufiger selber

mache, äh, irgendwie, ich fand es einfacher,

das selber zu machen, als bei Heroku

und das, weil man stößt halt sofort

auf so Probleme, gut, kann auch sein, dass mir das,

vielleicht ist das vielen Leuten egal,

aber ich denk mir halt so, naja, heutzutage, Webseite

ohne SSL, das ist eigentlich eher kaputt. Also,

es muss eigentlich, SSL muss irgendwie gehen

und eigentlich ist das ja auch kein Problem mehr mit

Let's Encrypt und so, aber

für die Hobby-Seite

bei Heroku, bei

denen, ähm, funktioniert

das nicht und das hat mich, es hat mir,

es ist mir nicht leicht gefallen,

rauszukriegen, dass es wirklich nicht funktioniert

und ich musste da tief graben

und ich bin in irgendwelchen Issues gelandet, wo dann

einer von den Entwicklern bei Heroku dann irgendwie

schon, puh, sollten wir vielleicht mal in die Dokumentation

schreiben, dass das wirklich nicht geht. Also, auch mit

diesem Weg geht das nicht und, äh,

da dachte ich schon so, ja, solltet ihr vielleicht, weil

irgendwie, ich hab jetzt grad da irgendwie ganz schön

Zeit reingesteckt, das rauszukriegen,

also, weil es sah so aus, als würde es vielleicht doch funktionieren, wenn man

dann irgendwie die Zertifikat von Hand hochlädt oder so,

nee, tut's nicht. Und dann hab ich mir erst

da lokal irgendwie Z-Bot installiert

und da irgendwie auch rumgeeiert und, ja,

aber es ging dann alles am Schluss nicht.

Also, SSL hatte TPS,

Heroku nur, wenn man zahlt, sonst geht's nicht.

Und, ähm,

ja, äh, auch die, ähm,

wenn man jetzt irgendwie

ein CDN verwendet oder so,

äh, Content Delivery Network, ja, da müssen wir auch noch mal

rechnen. Ja, da kommt alles noch dazu.

Ist alles... Anfängerfreundliche

Folge, Jochen. Ja, ist alles nicht so

einfach. Auf jeden Fall, man, also, ich meine, man

kann sich das ja mal angucken, wenn man

jetzt auf HTTPS nicht so viel Wert liegt

oder, äh, dann kriegt man auch

mit Heroku wahrscheinlich schon halbwegs

schnell da irgendwie zum Ziel, ob

ein anderes Alternativ ist, gibt, glaub ich, noch

ein paar. Ähm,

und das kann man auf jeden Fall auch verwenden.

Also, man hat auf jeden Fall diesen ganzen

operativen Kram von der Backe, was natürlich auch schon

mal ein großer Vorteil ist. Also, man muss sich nicht dafür,

äh, also, man muss sich nicht,

äh, ähm, selber dafür interessieren,

wie das Zeug jetzt, äh, ob das oben ist

oder nicht. Also, das macht halt,

äh, jemand für einen und

das ist ja auch schon mal nicht so schlecht.

Ähm, ja,

äh, das wäre sozusagen eine

Zwischenschicht zwischen irgendwie

alles ist fertig und... Hört sich nicht so an, als würde ich

das machen wollen, ehrlich gesagt. Doch, also, ich kann mir

durchaus vorstellen, dass es gute Gründe gibt, das zu

machen. Äh... Nee, für mich nicht.

Ja.

Nach der Geduld, wo wir sind ausgeschlossen, ja.

Für dich jetzt nicht, aber, äh, ich denke schon,

dass es für mich, aber, oder es gibt, was

auch oft eine Falle ist, dann, wenn, wenn, wenn

Startups irgendwie anfangen mit sowas, dass sie dann

irgendwann doch viele Datenbank, äh,

äh, Queries machen und da sind auch, äh,

das, das ist, eine ganze Menge ist irgendwie frei.

Aber wenn man dann

aus diesem Bereich, wo das frei ist, irgendwie

rauskommt, dann wird es sehr, sehr schnell brutal

teuer. Und, äh,

das ist auch so etwas, was man vielleicht nicht, nicht unbedingt

haben will. Aber das Problem ist, wenn man dann gerade wächst

oder so, dann kann man nicht mehr so schnell

irgendwie... Und die Infrastruktur komplett umfassen.

Ja, ja, und dann gibt man halt ein...

Vermögen. Dann gibt man Arm und Bein an

diese Anbieter. Tja.

Was ja irgendwie so dein Geschäftsmodell ist.

Ist auch nicht verwerflich, finde ich. Ist okay, aber man sollte

sich halt bewusst sein, dass man da eventuell ein Problem bekommen kann.

Ähm,

ja, also das ist eine, eine Möglichkeit, die man halt

auch machen muss. Ja, jetzt müssen wir aber noch mal ganz

kurz, bevor wir das alles wieder vergessen haben, kurz eingehen

darauf. Quantitative Network, du musst auf dem

Geschirr auch schon noch mal kurz erklären. Und, äh, AWS

Lambda-Funktion. Ja, also, also wenn wir jetzt

bei, wir sind jetzt bei, also, so sagen

wir jetzt der Grund der Software-as-a-Service, Plattform-as-a-Service.

So, jetzt wären wir quasi das Nächste,

was nicht mehr, das, wo man ein bisschen mehr

Freiheit hat, aber, äh,

ähm, sozusagen immer noch,

äh, nicht so viel selber machen muss,

wäre dann Infrastructure-as-a-Service.

Also das wäre dann halt sowas wie,

ähm, ja,

Amazon EC2.

Ähm,

DigitalOcean.

Also da, äh, bekommt

man im Grunde, äh, ja,

einen Container, auf dem irgendein Linux

oder so läuft, wo man sich einloggen kann als, als

Root per SSH. Und dann

ist man auf sich alleine gestellt. Da muss man, man,

den Rest macht man dann halt selber. Ähm,

das hört sich gar nicht so schlecht an.

Ja, das hört sich gar nicht so schlecht an. Das ist auch, glaube ich, eine ganz,

äh, ganz nette

Geschichte. Welches Linux nimm ich denn da?

Fedora, Ubuntu, Debian?

Spielt im Grunde keine große Rolle,

würde ich jetzt mal so sagen. Also, äh,

äh, ich,

vielleicht. Gibt es kein System, das besonders gut Python

unterstützt oder so? Nee. Nee, das

System Python kann man in keinem von den Fällen verwenden.

Da, ja. Das ist egal.

Muss man eh immer neu installieren. Oder selber installieren.

Ähm.

Hat Fedora jetzt nicht drei standardmäßig alles schon

drin? Ja, trotzdem, nee.

Wie wäre das? Barry Warsaw hat

das mal auch auf Twitter geschrieben, so,

First rule of Python is you don't use system, don't use

system Python.

Du musst ja immer dein eigenes Python installieren.

Das ist kein Spaß. Ähm,

ja, also, äh,

genau, also insofern würde ich sagen,

also der einzige Unterschied, den ich noch sehen würde, der

relevant ist, ist einmal, welches Paket

Management System einem irgendwie besser oder

schlechter gefällt und, ähm,

ob man System D mag oder nicht.

Weil, äh, genau, wenn man das

mag, dann kann man das ja benutzen und da gibt's halt

Unterschiede, je nachdem, welche Distribution man verwendet.

Also System D, du brauchst dann sowas wie Logging

ab oder sowas, das mag man vielleicht nicht, oder?

Ja, aber auch vor allen Dingen sowas wie, wie, wie sorgt

man eigentlich dafür, dass der Kram, den man, äh,

laufen haben möchte, eigentlich läuft und

am Laufen bleibt und so. Das, ähm,

ja, äh, kann man über

System D auch machen. Ähm,

kann auch irgendwas anderes nehmen. Äh,

ich nehm öfter Super-Wise-D,

äh, aber es ist auch,

im Grunde ist das nicht alter.

Was war ja, äh, Init, äh, was, äh,

F, Init, System 5?

System 5, ich weiß nicht genau, Init-Files,

äh, es gibt da auch andere Konzepte,

wie man, ja, also System D hat schon

nette Konzepte, aber es ist halt auch,

es hat da so manchmal so...

Vielleicht hat da irgendwie eine ganz spannende, äh,

Folge dazu nochmal gehört, irgendwann, äh,

die fahren irgendeinem Chaos-Radio-Express

mit einem von den Developern da,

irgendwie, das war schon ein bisschen... Ja,

äh, na, wer ist da noch?

Äh, ja, Namensgerechtes,

keine Ahnung. Ja, genau.

Äh, ja.

Okay, also völlig egal, welches System, also ich hau mir dann

Fedora und Ubuntu drauf, zum Beispiel, weil ich

das so ein bisschen schon kenne oder so,

dann irgendwie, dann mit den Repos schon ein bisschen weiß,

wo ich meine Pakete finde und dann

ist der To oder warum sollte ich das tun?

Warum nicht direkt einen eigenen Server? Also...

Ja, genau, weil halt auch da dir das natürlich

abgenommen wird, dass du dafür sorgen musst,

äh, dass das Ding ordentlich läuft oder so.

Ähm,

du...

Ja, du musst dich um viele Dinge nicht kümmern,

die du sonst tun müsstest.

Ähm, und, ähm...

Ja, dieses ganze, also,

alles, was mit irgendwie Netzwerk zu tun hat...

Steckereien stecken, Strom... Genau, dass das Ding

immer oben bleibt, äh, irgendwie Betriebssystem-Updates,

weiß ich gar nicht, noch nicht stimmt, das muss man wahrscheinlich noch selber machen.

Ja, genau, ich meine, Managed Server, glaube ich,

heißt das oder sowas? Ja, das will man alles,

wahrscheinlich eher nicht, aber, äh, genau.

Ja,

aber man muss sich, also schon um

wesentliche Teile der Infrastruktur jetzt bei

so einer Geschichte nicht kümmern. Also, im Grunde ist

halt der Container wie der andere, und

das funktioniert einfach so, ne, und dann...

Also, das ist schon, das ist schon auch nett,

aber man zahlt natürlich auch einen Preis,

das ist halt schon teurer, als wenn man jetzt, äh...

Und dann, es gibt nochmal so superbillig, äh,

äh, superbillige, äh,

äh, Geschichten auch immer, also die,

ich glaube, die kleinsten Container,

wenn die durchlaufen sollen, die kosten dann irgendwie

ein paar

10 Euro im Monat oder sowas, ich weiß es nicht genau.

Äh, aber es gibt auch so

Dinge wie bei Amazon Light Sale, heißt das,

glaube ich, irgendwie, wo man dann für

wenige Euro im Monat so ein Ding,

einen Container kriegt, und bei, äh,

DigitalOcean gibt es das auch, also,

und selbst bei sowas wie, äh,

so ein Husabee-Hetzner, also kriegt man irgendwie

einen Container, der, der durchläuft,

ähm, für

2,50 Euro oder 3 Euro oder so wenig

Geld im Monat, und hat dann ein richtiges

Linux mit, wo man sich als Root einloggen

kann, ist schon natürlich ganz nett.

Und das will man wahrscheinlich sogar auch tun.

Ja, äh, hängt dann davon ab, dass man dann, wenn man

jetzt eine fette Datenbank braucht, dann geht das halt wahrscheinlich nicht mehr,

dann braucht man halt Hauptspeicher, und den hat man

leider nicht. Aber, äh,

ja, so, so eine feste Installation...

Aber wann braucht man denn eine fette Datenbank?

Also, so, jetzt als, äh, Datenmensch

muss ja wissen, ab wie viel Traffic man da so irgendwie...

Nee, das hat mit dem Traffic gar nicht so viel zu tun, sondern eher

viel damit zu tun, wie viel Daten es sind.

Weil du willst, dass dein, äh,

Working Set im Hauptspeicher ist. Und das heißt,

wenn du halt irgendwie ein paar Gigabyte, äh,

Daten hast, dann willst du halt ein paar Gigabyte

Hauptspeicher haben, mindestens mal. Ja, so oft wie zu viel.

Oder so. Also ungefähr doppelt so groß

wie mein Dataset sollte der Hauptspeicher dann sein.

Ja, also, später geht das dann irgendwann

nicht mehr, aber, äh, ja,

sollte schon da reinpassen.

Ähm,

und das, äh, die haben alle

wenig Hauptspeicher natürlich, weil die teilen sich, die sind halt

auf großen Maschinen meistens, aber es sind viele

kleine Container, und dann muss halt irgendwie,

wenn die alle vier Hauptspeicher verbrauchen, ist

halt natürlich irgendwie der Hauptspeicher weg.

Wie kompliziert wäre es denn jetzt da,

weiß nicht, wenn man jetzt mehrere kleine

Services auf so einem Ding laufen lässt,

einen von denen umzuziehen?

Auf eine größere Maschine.

Oh, das ist, ja, da

bist du dann schon, das ist alles nicht mehr so einfach.

Ich würde auch das nicht so machen,

dass ich die Sachen da direkt laufen lasse.

Kann man auch tun, aber

ich würde eher sowas wie Docker nehmen.

Tatsächlich.

Also das heißt, du würdest dann auf einem dieser

Cloud-Dinger einen Docker

bauen, installieren

oder... Docker installieren, Docker-Demon

starten und dann halt

mit so einem Docker-Compose-File

das komplette System hochziehen, sodass dann

halt für jeden Service, den man benutzen

möchte im System, das man

da hochfährt, dass man dafür einen Container

hat, also einen Container für die Datenbank,

man hat einen Container für Redis...

Und man teilt sich dann genau die Dinge auf, also kann man

Docker so einstellen, dass der für alle verschiedenen Systeme

unterschiedliche Hardware nimmt, weil...

Ja, das kannst du natürlich auch tun, aber das

würde ich am Anfang auch

nicht machen. Nee, und dann

geht es eher so in den Bereich von

Kubernetes und diesen Geschichten, das

willst du nicht, du willst das...

Also das ist auch gar kein Problem, also

das musst du nicht

machen, also... Also Kubernetes ist eine

Krake an Docker-Containern.

Ja, das ist so ein bisschen, das

Problem mit Docker ist halt, dass

das zu betreiben ist halt

fies, Netzwerk ist fies, das ist alles...

Das entwickelt sich auch alles noch, das ist

alles nicht so richtig

gefestigt, das ist nicht ganz so

schlimm wie jetzt

bei den JavaScript-Frontends

bei React oder so, aber

es ist schon, es ist nicht

so, also man kann sich da nicht so gut drauf verlassen

und vor allen Dingen fehlt die Unterstützung für viele Sachen,

und dann gibt es da eben dann,

wenn man das im Großen, wenn man

eine komplette Cloud irgendwo betreiben möchte

oder so, dann nimmt man da andere Geschichten,

Management-Geschichten für, da wäre

jetzt Kubernetes ein Beispiel für, aber

die Frage ist, ob man das braucht, und wenn du das selber

irgendwie nur ein System, das brauchst du nicht,

also würde ich jetzt mal anfangen,

würde ich jetzt einfach so sagen, brauchst du nicht.

Ja, also ich habe da bestimmte Voraussetzungen tatsächlich, also ich möchte so

verschiedene Webseiten betreiben,

irgendwie, ne, irgendwie private Sachen, dann

hatten wir mal über Indie-Web besprochen, dann

irgendwie sind die beiden Services da drauf, und dann vielleicht noch

irgendwie eine Firmen-Webseite mit einem kleinen Login

und vielleicht noch für IoT so ein bisschen

so ein Server, der da irgendwie läuft

und das irgendwie alles gerne parallel, und

ja, das ist ja kein Problem.

Wie baue ich das denn? Also wo fange ich denn da an?

Also ich habe jetzt so einen Server dann Cloud

am besten gemietet, oder vielleicht doch irgendwie

so einen dedizierten irgendwo hingestellt, oder

nur einen kleinen virtuellen genommen, oder?

Das hängt halt wieder davon ab, also ich würde einfach mal,

also nur um das halt auszuprobieren,

würde ich mit so einer kleinen Geschichte anfangen.

Ja, aber das ist meine Frage nach dem Umzug,

also wenn ich dann merke, so, oh, um

zu ziehen, irgendwie alles normal machen, also das ist ja

Nee, musst du nicht, das ist ja, dafür hast du ja

deine Domain registriert.

Ja, aber den Server muss ich ja umziehen, also die ganzen Sachen muss ich ja

nochmal konfigurieren. Ja, aber dann nee, dann

musst du gar nichts machen. Wenn du Docker nimmst,

hast du dieses Problem gelöst.

Achso, also ich baue den Container einfach

neu auf einem anderen System.

Ja, genau, sagst du einfach auf dem anderen System

docker-compose, dann docker-yaml-file,

ab, fertig.

Nicht mal das, also gut,

man würde das jetzt nicht von Hand ausführen, sondern

man würde dann halt irgendwie das System, die an

hängen oder in Supervice-D,

normalerweise die Konfiguration dafür

legst du auch in dein Projektverzeichnis mit rein,

linkst das

nur noch nach etc.supervice-d.conf

oder weiß ich, wo die

Config-Files dafür liegen, startest das Ding

einmal neu und dann startet der deinen kompletten

Kram, ohne dass du noch irgendwas machst. Also wie gesagt,

wenn ich auf dem Server das deploye,

da muss ich einen Link

ziehen, ich muss

etwas an der Caddy-Config

ändern, das machst du, dann startest du neu, fertig.

Caddy ist jetzt dieses,

also ich muss da irgendwas rein, ist die Reihenfolge

entscheidend, wie das da drin hängt, weil die dann nacheinander

gelaufen, wie verteilt der die

Ressourcen verteilt, also wie viele er hat.

Ja, also gut, das ist nochmal

ein anderes Thema.

Wir sind zu weit, wir sind zu weit.

Ja, also es ging nur

darum, wie kriegst du das Zeugs

irgendwie auf einer Maschine zum Laufen

und da

würde ich empfehlen, heutzutage Docker zu nehmen.

Man kann auch andere Sachen benutzen, aber

background. Ja, man könnte auch

background, aber das ist auch, es braucht auch

mehr Ressourcen, also das würde ich jetzt

zum Beispiel, wenn du irgendwie so in dem Container,

vor allen Dingen, Container ist ja, also es ist natürlich

auch irgendwie performantechnisch sehr fies, also

in einem Container nochmal Container-Geschichte

zu starten, ist vielleicht auch nicht so die

schlauste Idee performantechnisch, aber es ist halt

zum Entwickeln, es ist halt

so, würde ich sagen, state of the art

eigentlich, oder es ist halt

am wenigsten schmerzhaft, von allem,

was es so momentan gibt.

Vagrant kann man lokal ganz gut verwenden, oder

halt, wenn man einen dicken Server hat, aber

du kannst es nicht gut verwenden in einem

kleinen Container, weil

das braucht halt, das fährt halt wirklich

ein komplettes Linux hoch.

Und du kannst natürlich darin alles

wieder betreiben, du musst dann nicht das

in einzelne Container aufhalten, aber

ja, aber

das ist, wenn du wenig Hauptspeicher hast,

ist das vielleicht einfach keine gute Idee.

Na, und Docker

passt da eigentlich ganz gut zu, da hast du

dann zwar auch Container in Container, aber

es ist nicht so, du fährst

nicht jedes Mal ein komplettes Betriebssystem hoch und so,

eine komplette Maschine.

Ja,

du kannst

natürlich das auch irgendwie komplett einfach

in diesen Container, alle deine Services, die du

so haben willst, starten.

Du kannst halt zum Beispiel,

auch das benutzt man eher für größere

Infrastrukturen, um da halt

komplette Systeme auszurollen.

Das ist eigentlich so Automatisierung

deiner

Automatisierung deiner

Infrastruktur hochziehens,

so nennt man sowas wie Ansible oder so,

es gibt auch noch diverse andere, es gibt Solstack, es gibt

irgendwie

Puppet Chef,

aber Ansible wäre jetzt auch Python

und damit

verwaltest du quasi

ein ganzes Inventory an Rechnern

irgendwie und sagst dann, roll mein

System aus und dann, das Ding braucht auch nur SSH,

dann connectet es sich auf all die Systeme per SSH

und

macht dann magisch Dinge, sodass dann da die Services

laufen, die da laufen sollen und so.

Irgendwie sowas braucht man auch, wenn man

Vagrant verwenden wollte, weil du musst ja die Services dann irgendwie

in deinem Vagrant, in deiner virtuellen Maschine

halt auch zum Laufen kriegen, das heißt, du musst da irgendwie die

entsprechenden Pakete installieren, musst du die Services

hochfahren, musst die Config-Files irgendwie

mit Templates so

irgendwie, also hast du Templates

für deine Config-Files, dann musst du die so mit den echten IP-Adressen

und so ersetzen, dass dann die richtigen Config-Files

da sind, dann muss das Ganze hochgefahren werden

und so weiter und so weiter.

Und für so ein komplettes System irgendwie

Ansible rollen,

nennt man das zu schreiben, das geht alles, hab ich auch schon

gemacht und so,

aber das ist eine Menge Arbeit, also das ist nicht

so ohne und das dann auszurollen dauert

auch ziemlich lange.

Das ist halt auch so ein Nachteil

gegenüber Docker, also das ist halt

irgendwie so ein komplettes

Ding mit Vagrant hochzuziehen, kann sein, dass das

selbst wenn du einen schnellen Rechner hast, lokal, kann sein, dass

das 20 Minuten dauert, wenn du so viele

Maschinen hochfährst oder so. Kannst natürlich auch alles

in einer Maschine haben, aber dann hast du wieder das Problem, du kannst es nicht mehr

aufteilen, wenn du es jetzt

auf andere Maschinen aufteilen wolltest und so

und ach, ja, also

und das ist halt

einfach oft zu langsam, wenn jetzt

wenn du zum Beispiel irgendwas, du versuchst

irgendeine Funktion hinzukriegen, musst dafür irgendeine Bibliothek

installieren, die das halt kann

ein Python-Trepper drumherum, der da irgendwas mitmacht

und du willst halt so schnell

iterieren können, du willst halt schnell irgendwas ausprobieren

geht nicht, nochmal, so

und bei Docker dauert so ein Build

für, weiß ich jetzt

CPU-Power, je nachdem

CPU-Power und Platten und Netz man hat

aber so bei mir dauert das, ich hab

also Standard-Django-Projekt

hat bei mir irgendwie die Datenbank

Redis, irgendwie

Applikationszauber-Django, vielleicht noch

Celery oder so, also 5, 6 Container

irgendwie sowas, die alle

neu zu bauen, wenn man jetzt zum Beispiel

eine Abhängigkeit im Betriebssystem, also

sagen wir mal, jetzt irgendwie

auf Betriebssystem-Level irgendeine Bibliothek braucht oder so

die vorher nicht da war, dann muss man

die Docker-File, muss man die Container neu bauen

und das dauert bei mir so

ja

zwei bis drei Minuten, lokal

je nach Größe der Anwendung natürlich

je nach Größe der Anwendung, aber das ist

ja, die Anwendung

selber, die Django-Anwendung hat damit gar nichts mehr zu tun

der Hauptteil, der da dauert, ist

halt

tatsächlich die Installation

und das Bauen

der Container und dann halt hinterher müssen

nochmal die ganzen PIP-Abhängigkeiten

per PIP installiert werden, das dauert auch

ja, aber das ist halt

viel, viel schneller, als wenn man das

jetzt per Ansible und Vagrant machen wollte

und das

Problem ist halt, drei Minuten ist auch schon lang

aber das macht

einem so gerade vielleicht den Flow noch nicht

kaputt, aber wenn man jetzt irgendwie da, dann

jedes Mal 20 Minuten warten muss, dann geht man

Kaffee trinken und man macht da irgendwas anderes

und man muss aber möglicherweise 10 Mal

was anderes ausprobieren, weil

oft muss man, bleibt einem nichts übrig, als Sachen auszuprobieren

ob es jetzt so geht, ach scheiße

der Python-Wrapper funktioniert nicht, muss einen anderen nehmen

probier den nochmal aus

wenn du da 10 Mal irgendwas ausprobieren möchtest

und du hast immer eine

20 Minuten Latenz dazwischen ist, das

macht einen langsam

Du hast gerade gesagt, im Stack von dir gehört

noch eine Redis, das ist ein Cache, da hat man

irgendwie Sachen von der Datenbank direkt verfügbar

hat

Ja, einfach nur zum Cachen von beliebigen Dingen

nicht nur Datenbank, also es gibt ja auch

vielleicht andere Sachen, die länger laufen oder wo man halt

Statische Files oder sowas

Nee, nee, nee, das machen wir nicht

Nee, also es gibt noch

wenn du jetzt statische Files cachen möchtest

das würde man auf einer anderen Seite machen

also Redis ist etwas, die

also wenn ich jetzt zum Beispiel

in Django eine Funktion habe, die

irgendwas lange

berechnet oder so, dann ist fertig

dann schreibe ich darüber

irgendwie Cache-Property oder so

zum Beispiel in Django, um zu sagen

in Django zu sagen, cache das hier mal bitte, weil

ich will das nicht jedes Mal, wenn dieses

diese Property

jemand, wenn jemand

darauf zugreift, möchte ich nicht, dass es jedes Mal neu berechnet wird

oder es soll nur einmal berechnet werden

und dann im Cache landen. Und dann verwende ich diesen

Dekorator und dann landet

das im Redis. Also wenn ich jetzt Redis

konfiguriert habe, als das ist der Cache

für meine Django-Applikation.

Für sowas ist es gut. Man kann Redis auch noch

für diverse andere Geschichten verwenden.

Und

wenn ich jetzt sozusagen

die statischen Files cachen wollte

in Memory, das kann auch durchaus Sinn machen, aber das

würde ich an einer anderen Stelle machen. Und zwar

vorne dran, vor dem Django.

Vor dem Applikationsfang.

Da würde ich

den Varnish nehmen oder so. Das ist so ein

In-Memory-Cache,

den man

davor hängt. Und

der würde halt

sozusagen alles, was an statischen Files geht,

die da durchgehen, halt

In-Memory-Cachen.

Oder überhaupt alles, was an statischen Assets drin ist.

Oder auf andere Sachen auch.

Überhaupt alle

Dinge, die identifizierbar

sind als cachebar über die Cache-Header.

Und das wäre

dann viel, viel schneller.

Macht man dann an der Stelle.

Ist jetzt aber in meinen Projekten meistens gar nicht mit drin,

weil

brauche ich eigentlich meistens nicht,

weil ich habe nicht so viel Traffic. Wenn ich jetzt irgendwo

viel Traffic hätte, ja, dann macht das

wahrscheinlich durchaus Sinn, sowas zu verwenden.

Aber

ansonsten werden die statischen Assets

halt ausgeliefert entweder von

in meinem Fall meistens

vom Caddy.

Das ist der

Stack nochmal komplett durch.

Also das, was davor ist. Und das ist auch etwas, was leider

nicht in dem

Docker-Geschichten selber mit, also

sagen wir mal so, wenn man jetzt Cookie-Cutter

verwendet, um ein Django-Projekt

zu erzeugen, dann ist der Caddy schon

mit drin. Aber man

kann das oft nicht verwenden, wenn

man das jetzt auf irgendeine Maschine da draußen

deployt oder in einen Container,

auf den man sich per Route einloggt.

Weil, wenn man da jetzt zum Beispiel mehrere Domains

hat,

die man

da ausliefern will,

dann muss der Caddy

halt unabhängig von den

einzelnen Systemen sein, sonst geht das halt nicht.

Und was macht der Caddy denn jetzt?

Und wie hat er noch, im Celery hattest du noch eventuell,

ich muss da auch nochmal kurz.

Ja, also Caddy ist ein grob geschriebener

Web-Server,

der

besonders schön integriert ist mit

halt Let's Encrypt, sodass halt HTTPS,

also SLL, TLS kann

halt ohne, dass man da irgendwie viel konfigurieren muss,

ohne dass man irgendwie Startboard selber

irgendwie verändern muss.

Und also

es ist so,

ja, HTTPS funktioniert einfach magisch

und man muss sich nicht mehr kümmern.

Das ist also der Effekt,

was ja ganz nett ist.

Und

der ist auch sonst relativ schnell, der ist nicht ganz so schnell

wie Nginx oder so, aber

ich meine, ob das Ding jetzt, weiß ich nicht, 10.000

Requests pro Sekunde kann oder nur 5.000,

macht für die allermeisten Leute überhaupt keinen Unterschied, weil

sie haben nicht mal ein Request pro Sekunde,

ja, ist egal.

2, 3, 4, ja.

Ja, aber selbst bei 100 ist es völlig wurscht.

Und, ähm, ja,

und das ist dann gut geschrieben, vielleicht ist das Ganze auch noch ein bisschen

vertrauenswürdiger als, wenn ich meine Nginx

C und so, hm, wer weiß.

Ähm, aber,

naja, eigentlich ist es wurscht. Also was für mich

den Ausschlag gibt, den zu verwenden, ist halt

die schöne Let's Encrypt-Integration.

Und, ähm,

ja, der ist sozusagen vor den,

vor Django davor, halt eben um sowas

wie Statisch-Falz ausliefern, weil das kann halt Django

nicht so gut selber. Wobei, muss man auch einschränken

und sagen, äh,

mit White Noise ist das vielleicht nicht mehr so gut,

ganz, äh, aktuell, ähm, aber,

äh, was ist White Noise?

Oh Gott.

Das ist, äh, ein,

hm, ja, äh,

äh, ich weiß nicht,

das gibt es nur für Django, es ist, auf jeden Fall,

innerhalb von Django kann man das als, kann man das, äh,

als, äh, Party-App installieren.

Und das liefert dann Files,

also, wenn man normalerweise einfach so

einen File ausliefern würde in Django, dann

zieht man das halt in den Hauptspeicher, also,

ja, von der Platte in den Hauptspeicher und dann

von dem Hauptspeicher schickt man es wieder durch,

äh, äh, durch den

Kernel-Space irgendwie da raus über die

Netzwerkkarte und

da wird viel, viele Daten werden da kopiert

und, äh, das ist alles scheußlich und man blockiert

einen, ähm,

Worker-Prozess.

Hängt auch viel davon ab, welche, welchen Applikations-

Server verwendet, Junicorn,

Micro-Whiskey oder My-Whiskey

oder WSGI oder so, also,

das ist alles der gleiche, ich weiß nur nicht, wer ausgesprochen wird.

Ähm, äh,

man muss ja irgendeinen, irgendeinen

Applikations-Server verwenden, der sozusagen die

WSGI-Protokoll spricht,

äh, ähm, mit der Applikation

und, ähm,

naja,

äh, also, wenn man, wenn man, wenn man

das File tatsächlich einfach so selbst ausliefert,

äh, dann ist das extrem

langsam und dann ist halt bei wenigen Files

ist dann halt schon direkt Schluss.

Äh, und das ist natürlich etwas, was man,

was man nicht haben will, äh, und

wenn man, wenn der, der Caddy,

äh, oder auch, äh, ein Nginx

kann halt, äh, problemlos viele

Files, äh, irgendwie, äh, ausliefern,

äh, und macht das halt nicht so,

dass er erst die Files in den Hauptspeicher kopiert,

dann durch den User, äh, also vom

Kernel zu den User-Files und dann wieder zurück schiebt,

um das auszuliefern, sondern der

verwendet halt einen, einen Kernel, äh,

ähm, einen syscall, äh,

send-File, um die Files halt raus zu,

äh, sagt halt diesem Kernel

nur irgendwie hier, dieses File, äh,

diese Verbindung bitte sehr, liefer aus.

Sodass das halt, äh,

ja, viel, viel schneller ist, also

der Kernel liefert im Grunde mehr oder weniger die Files aus.

Mhm.

Äh, und, äh, kann ja irgendwelche

Tricks machen, teilweise werden die Sachen

nicht mehr durch den Hauptspeicher, äh, sondern gehen

direkt per Serial-Copy-TCP irgendwie

in den Netzwerkwaffer der Karte

oder so von den Platten aus und so, also

gibt's, äh, crazy, äh,

Shit-Optimierungskrams, der da

gemacht wird, bin ich jetzt auch nicht mehr so auf der Höhe

der Zeit, was halt momentan aktuell ist, aber es geht irgendwie

eine Menge, und

White Noise macht das, macht auch, verwendet

auch send-File, insofern ist das da nicht mehr so schlimm.

Ähm, aber,

äh, eigentlich will

man jetzt auch nicht große Mengen darüber ausliefern,

weil der, der Request ja dann immer noch aufschlägt

im, im Django, ähm,

oder jeder, der Request nach einem File,

und das kann halt viel sein, ja, also wenn man viele kleine Bilder

hat auf einer Webseite zum Beispiel,

wenn man eine Liste mit, mit, äh, von irgendwelchen Dingen,

wo halt immer Bilder dabei sind, dann

ist halt jedes Bild, macht halt ein Request.

Und, ähm, im modernen

Browser machen die ganzen Requests ja auch ein Parallel,

das heißt, die prügeln halt dann auf deine

Applikations-Server ein, und das ist halt, äh,

das ist, äh, nicht so gut.

Und, äh,

ähm, da,

äh, äh,

was, was, ich mach's nicht so,

aber, was wohl gut ist, ist halt, man

verwendet White Noise, und dann da vorne

irgendwie Varnish oder sowas, oder halt

ein CDN, sodass halt beim ersten Mal

werden die Sachen dann tatsächlich von White Noise ausgeliefert,

und danach sind sie halt gecached irgendwo in

Content-Delivery-Network oder halt Varnish

oder so, und dann ist es schnell.

Ähm, was ich mache,

ich, äh, ich verwende

meistens den, den

Webserver eben Caddy oder Nginx vorne dran zum

Aufwählen meiner statischen Assets,

da gibt's halt einen Unterschied in Django,

also statische Geschichten, das ist sowas wie JavaScript,

CSS,

äh, Faf-Icon,

dieser ganze Kram halt sozusagen, der

äh, ja,

zum Projekt halt dazugehört, aber jetzt

sich im Grunde nicht ändert, also das,

das Firmen-Logo, was du immer schon eingebaut hast.

Ja, genau, also wenn man, die, die Sachen werden

dann auch generiert, diese High-Namen, äh,

und dann, sobald man,

äh, da was dran

ändert und dann noch Collect-Static aufruft,

um das halt alles in einen Verzeichnis zu kopieren, das dann halt

von einem Webserver ausgeliefert werden kann, dann kriegen die halt,

äh, unike Namen, sodass das halt, man auch

sagen kann, die werden für immer gecached, weil, wenn es

was Neues gibt, dann wird der eh einen anderen Namen verwendet.

Ja, ähm,

das ist halt, dieses Headlink-Design-Static-Files

ist halt ein bisschen anders, als wenn

jetzt User Bilder hochladen oder so, ne, dann ist

das, äh, Media-Root in Django und

es wird halt, also ein bisschen anders gehandelt und

statische Files sind bei mir, werden

ausgeliefert vom, vom, äh, Caddy

und, ähm, alles,

was User irgendwie an Content hochladen,

äh, landet in einem CDN, äh,

landet in, äh, S3.

In einem Bucket. In einem Bucket. Und

der wiederum wird dann ausgeliefert über,

äh, ich glaub, das ist CloudFront,

äh, das ist auch das, äh, CDN

von, von, von Amazon.

So, dass ich halt auch damit keinen

Stress mehr habe, äh, sondern das,

äh, ja, dann, äh,

das ist dann halt auch

schnell. Ist halt ein bisschen,

ja, muss man vielleicht gar nicht machen,

weiß ich jetzt gar nicht so genau, äh,

aber es ist halt auch eine Lösung.

Das ist natürlich auch eine, ja, genau, das ist dann auch

quasi beliebig. Ja.

Ähm,

ja, Traffic wird halt irgendwann teuer, da muss man

sich...

Ja, aber man muss halt dann

pro, äh, pro, ja, weiß ich nicht,

weiß ich gar nicht, pro Gigabyte oder, weiß ich nicht,

irgendwann bezahlt man halt pro irgendwas.

Man hat irgendwie 100 Gigabyte frei oder so, dann fängt man

irgendwann an zu bezahlen.

2 Euro pro Request.

Ist nicht ganz so schlimm, aber es ist, äh, hm.

Ja, und wenn man das selber macht mit, mit, mit

White Noise und so, kann man wirklicherweise sich da

auch den Traffic sparen, was auch schnell ist.

Ja. Gut, nee, wenn man CDN

drauf vorne ranfen will, auch nicht. Wie auch immer.

Also, genau, das...

Ja, das haben wir auf jeden Fall in den, in den Gango, äh, Applikations-

Server, da hast du gesagt, Gionicorn, irgendwas laufen.

Gionicorn, ja, also ich würde sagen, wenn man, äh, eben nicht,

äh, mehrere Seiten hostet,

äh, dann, äh, sondern

dass er so ein eigenes Projekt hat, was

irgendwie, und der Applikations-Server nur

das, äh, für eine Geschichte macht,

für einen Domain oder so, dann, dann ist

Gionicorn, denke ich, die bessere Wahl.

Ansonsten, wenn es komplizierter ist,

dann, gut, muss man vielleicht, äh,

dieses WSGI-Ding

nehmen, UWSGI.

Das hat, äh, einen Haufen,

äh, Einstellungen, die ja darauf

optimiert sind, dass man, äh, wenn man, äh, wenn man Hoster ist

selber, äh, und dann, ja,

kann man halt auch eine Menge andere Dinge noch einstellen.

Ist aber komplizierter, daher würde

ich das jetzt nicht, äh, nicht direkt empfehlen, auch wenn man

Cookiecutter nimmt, ist Gionicorn dabei.

Ich würde sowieso empfehlen, das Cookiecutter-Giango-Template

zu verwenden, weil das macht eigentlich an der Stelle schon

viel richtig, und, ähm,

ja, äh, da kriegt man

da kommt man da, da muss man sich selber um diese...

Also Cookiecutter ist was, was deine Projekte

automatisch vorkonfiguriert, deployed

oder, oder vorangestellt.

Nee, das erzeugt das Projekt, das erzeugt das Projekt, also es hat

halt, ähm, quasi, es ist ein Projekt-Template

und es fragt einen, wenn man

es ausführt, am Anfang, äh,

so ein paar Sachen, und da antwortet

man halt so, zum Beispiel, wie das Projekt heißt, oder

keine Ahnung, ob man jetzt Celery verwenden möchte oder

nicht, oder so, oder welche Daten man...

Celery hast du jetzt auch noch nicht gehabt, das ist dann wie

Arbeiten, Linen, oder...

Celery, äh, genau, man hat oft,

ähm,

äh, die Geschichte, dass man, äh,

nicht, dass man langlaufende, äh,

dass man langlaufende Jobs hat, die, ähm,

die ausgelöst werden von einem

Web-Request, und man möchte jetzt den User am Ende

aber nicht warten lassen. Also sowas

wie, äh, keine Ahnung,

hm,

ja, User lädt ein Video hoch, und man muss das jetzt in alle

Formate rendern, äh, dass, äh,

die halt so gebraucht werden für unterschiedliche,

fürs iPhone, für Android, äh,

ja, da oft nimmt man dann halt

auch irgendwie anderen Codec oder so,

äh, und in, in unterschiedliche

Auflösungen, je nachdem, wo man das irgendwie anzeigen will,

da möchte man nicht, und diese Render-Jobs

dauern halt, je nachdem, wie lang das Video ist,

sehr, sehr lang, ja, es lädt hier jemand ein Video, äh,

äh, das eine Stunde lang ist, hoch, dann möchte

er nicht, dass der Request, wenn das im Request

selber läuft, dass es nochmal zwei Stunden dauert, äh,

das ist sehr irgendwie komisch, sondern

dann nimmt man das Video her, sagt, okay, man macht

jetzt einen Task, äh, man erzeugt einen Task,

der, äh, irgendwie dann

unabhängig vom Web-Server läuft,

und der rendert dann halt irgendwie

das Video in die unterschiedlichen, äh,

Formate und so, und, äh,

sagt dem User schon mal, alles okay,

dann, dann upload es durch.

So, und für solche Sachen braucht man das.

Jetzt Video ist ein extremes Beispiel,

es gibt sicherlich eine Menge Beispiele, bei denen

das nicht ganz so schlimm wäre, aber

auch schon so nervig, dass man das vielleicht nicht haben will,

und dann... Also das hätte man gemacht, nicht einfach zur Arbeitsbienen

loszuschicken, die dann halt die einzelnen Tasks dann abarbeiten.

Ja, also die Tasks selber, äh, genau, da kann man sich auch

versuchen, welches Backend man verwenden

möchte, und Redis ist halt auch ein Backend,

sozusagen über das, damit Redis

als Queue verwendet, also diese, äh,

es gibt, also, Salary ist im Grunde

eine Task,

ja, es, äh, ähm,

besteht aus, äh, einem

Ding, was irgendwie die Worker koordiniert,

dann eine Menge von Workern,

und halt einer Queue, in die die Tasks

halt reinlaufen, also man, man

so einen Task erzeugt, dann, äh, landet der

halt in so einer Warteschlange, und

die Worker greifen sich aus dieser Warteschlange halt

ihre Jobs raus, ja, sozusagen, das sind Prozesse, die laufen

einfach irgendwie. Wenn wer am lautesten schreit, der wird dann als erstes

bedient, oder was? Genau, ja, das erste,

ja, äh,

der erste Worker nimmt sich halt irgendwie den ersten Job aus der

Queue und rechnet dann halt, bis er irgendwie

fertig ist, der nächste Worker nimmt sich den nächsten

und so weiter, bis halt keine Worker mehr da sind, die nichts

zu tun haben, und dann warten die Sachen in der Queue

halt einfach. Und die werden dann halt so mit der Zeit

abgearbeitet. Und, ähm, ja,

dann hat das Ding auch noch so ein Webfront in Flower, heißt das

irgendwie mit dabei, da kann man sich angucken, was ist denn

jetzt mal so ein Task geworden, haben die irgendwelche Exceptions

geworfen, gibt's da Tracebacks,

äh, sind die alle gut durchgelaufen, wie lang laufen die denn

so, so Basis-Statistiken,

wie lang laufen die denn durchschnittlich,

ja, äh, und all solche Sachen,

und, äh, also

das, wenn's funktioniert, ist es eigentlich

ganz, ganz gut, ja, kann man nix sagen,

ist eigentlich solide Geschichte, es ist

aber so manchmal, also, äh,

im Celery ist es manchmal so ein bisschen scharfkantig,

muss man, das hätte auch schon,

also wenn's nicht funktioniert, ist es nicht so geil,

muss man sagen. Also geht das nicht

für fast alle Dinge bei der Software? Ja,

es gibt manche Sachen, bei denen passiert einem das nicht,

dass die dann nicht funktionieren, also die,

zum Beispiel Redis ist dann so ein Stück von Software, das funktioniert

eigentlich fast immer super, ja,

es gibt selten den Fall, oder hab ich

noch nie erlebt, hab ich noch nie erlebt, dass Redis

irgendwie, äh,

etwas gemacht hat, und ich hab's nicht wieder

hingekriegt, also, ich hab's noch nicht

kaputtgekriegt, sozusagen, oder auch Postgres

ist so ein Ding, das kriegst du nicht kaputt.

Äh, Celery, äh,

hingegen, da installiert

man irgendwie, da wechselt man

irgendwie die Python meiner Version,

und dann geht gar nichts mehr.

Und, äh, alles

kaputt, ja, also,

und das ist, äh,

ja, oder man wechselt die Django-Version und nichts

geht mehr, ne, also es ist halt, äh,

also es ist halt deutlich fragiler, es ist nicht so, dass

man da, das, also bei, bei Celery

hab ich's schon häufig erlebt, dass es kaputtgegangen ist, und zwar

auch dann so kaputtgegangen ist, dass man's im Grunde

nicht mehr fixen kann, und das ist immer ärgerlich, wenn man

dann zum Beispiel eben nicht, Python nicht upgraden

kann, oder halt, äh, auch Django nicht upgraden kann,

weil halt ein Celery dran hindert,

das ist, und das ist schon öfters passiert,

also, ähm,

ja, muss

irgendwie so, also, wenn man's,

man, man kann's halt oft nicht vermeiden, dann

braucht man's halt, und dann, äh,

es gibt noch diverse andere Task-Queue-Geschichten,

Celery ist halt die verbreitetste

für Django, ähm,

ja,

äh, vielleicht lohnt es sich auch,

sich die anzugucken, ähm,

ich weiß es nicht genau, ähm,

aber, äh, ja, also wenn man's nicht braucht,

dann war's nicht unbedingt, äh, also es ist nicht,

es ist nicht unbedingt ne, äh,

ne Geschichte, die man aus der rein, aufgrund von

reiner Freude, weil's so viel Spaß macht, das zu benutzen,

verwenden sollte, weil das macht einfach nicht so

wahnsinnig viel Freude, und wenn man die

Abhängigkeit nicht braucht, sollte man sie weglassen.

Ähm, ja, aber

oft braucht man sowas tatsächlich.

Äh, ja, was haben wir noch, ähm,

Ja, ich würde jetzt nochmal so ein bisschen auf die ganz

Basic-Sachen zurückkommen, also, äh, wie, ähm,

weiß ich denn jetzt, auf welche Route ich

jetzt meinen Name-Server zum Beispiel schicke,

auf welches Verzeichnis ich den, äh,

verweise, oder mach ich das überhaupt über Verzeichnis,

oder welche verschiedenen Django-Apps laufen,

oder, du hast ja gesagt, Junicorn ist nur eine,

dann hab ich sonst ein Whisky, und, ähm,

Whisky weiß dann, wo was liegt, oder,

Junicorn ist deine Applikations-Server, jetzt sagen wir mal, wenn du jetzt

Kugelkater verwendet hast, und so, dann,

äh, läuft dein

System, äh, läuft halt irgendwo

intern in einen Docker-Container,

und, äh, äh, sozusagen

kann angesprochen werden,

aus dem Container heraus, den du da, oder aus der

Maschine heraus, auf der du dich angelockt hast,

auf irgendeinem Port 5000 oder sowas, da läuft

das Ding halt, ja, nimmt aber nur Requests an von innen,

also sollte nicht von außen erreichbar sein.

Das heißt also, ich muss aber dann den Port

kämpfe ich natürlich an, und dann, die Ports muss ich ja irgendwie auf

meiner Maschine routen dann. Nee. Zu den Docker-Containern.

Nee. Nein? Wie?

Wo funktioniert das denn? Die sind nur lokal.

Äh, da.

Also kannst du lokal drauf connecten, sonst nicht.

Und, äh,

wie dann die Requests sozusagen aus dem Web da

reinkommen ist, du hast halt den Caddy vorne dran,

da gehen die Sachen per

Report 443, kommen die rein.

Und den Caddy muss ich konfigurieren?

Den musst du konfigurieren, du brauchst einen Config für,

die ist aber relativ einfach, und da steht

mehr oder weniger nur drin,

irgendwie, wenn's an die Domain gehen soll,

dann alles an den Applikations-Server.

Okay, aber das heißt, der Caddy ist derjenige,

der ist alles verwaltet. Das heißt, in der Caddy-Konfiguration

stelle ich das ein,

der Name-Server, HTML-Routing.

Nein, nein, nein, nein.

Nein, das steht nur drin,

auf welche Domain

geht, also,

je nachdem, auf welche

Domain der Request geht, auf welchen

Applikations-Server soll das gehen.

Insofern kann man auch sagen, das ist gewisserweise Routing,

aber es ist sehr, sehr einfach.

Es ist sehr, sehr einfach.

Und HTML-Routing ist das selbe, das ist damit verknüpft,

weil halt das Name-Routing...

Es gibt noch,

es gibt etwas,

was sich URL-Routing,

Routing nennt, bei Django.

Ja, aber das ist aber innerhalb von Django.

Aber ich kann ja verschiedene Projekte nehmen. Ich könnte jetzt auch sagen,

ich möchte jetzt einfach ein Verzeichnis-Server,

weiß nicht, war www irgendwas, was es da früher gab, oder so.

Einfach ein Verzeichnis mit einem Index,

irgendwas.

Das kannst du mit dem Caddy auch machen.

Kann ich mit dem Caddy auch sagen, das Verzeichnis kommt auch dann

unter dem Namen

resolved, geroutet, rein.

Okay.

Genau, das ist halt spannend.

Das sind halt verschiedene Optionen, die kann ich alle gleichzeitig

mit dem einen Caddy bauen. Das heißt, das Einzige, um das zu machen,

muss ich meinen Caddy konfigurieren.

Was mit E-Mail, wenn ich jetzt irgendwie E-Mail schicken will,

auch Caddy?

Ne, das ist natürlich nur ein Web-Server.

Das würdest du in der Django-Applikation

halt irgendwie machen und da

kannst du es entweder selber tun, wenn du halt lokal

eine Mail-Server laufen hast.

Oh, nein, nein.

Wenn ich jetzt meine

Domain-E-Mail,

da gibt es sowas, wie nennt man das,

C-Names oder sowas, wo man dann

die E-Mails direkt,

weggeroutet werden vom Server

auf, weiß nicht, Gmail oder sowas.

C-Name ist eine Art von

Rekord für DNS,

wo dran steht, also dieser Name ist

eigentlich nur ein Alias für den Namen.

Ja, also die Alias muss

ich ja irgendwie auf meinem Server auch eintragen.

Wie passiert das denn?

Also wenn ich jetzt beispielsweise eine G-Suite habe,

mit der ich meine Firmen-E-Mail-Adressen

verwalten möchte, dann

trotzdem die Domain auf

meinen Server ankommt.

Wo muss ich dann einstellen, dass dann die E-Mail-Adresse

in zur G-Suite weitergeht? Was ist das, was da liegt?

Im Name-Server.

Also da sagst du halt, der

zuständige MX, das ist wieder ein anderer Rekord,

MX-Rekord, der ist für Mail zuständig,

der Mail-Server für

meine Domain ist Google.

Aber das ist dann am Mail-Server, also an

meinem Provider, an meinem Name?

Nein, da, wo

du deine Domain registrierst.

Der hat

eigentlich eine andere Aufgabe, das ist halt, der Name-Server

macht das. Aber der, wo du

deine Domain registriert hast, der betreibt wahrscheinlich den Name-Server.

Wo dann deine Domain liegt.

Ja, genau, da machst

du das. Und

dann geht halt alle Mail,

die an deine Domain geschickt wird, halt

dem

Mail-Client, beziehungsweise Mail-Server,

den halt irgendjemand verwendet hat,

der macht dann

ein MX-Lookup auf deine Domain, sieht halt

die Mail zu Google gegeben und schickt dann die Mail

direkt zu Google. Und dann landet sie halt

bei dir irgendwo bei Gmail oder wo auch immer.

Und wenn ich jetzt einen

File-Server machen will, dann muss ich das einfach wieder über den Caddy-Root

finden, ob irgendein Verzeichnis...

Was ist ein File-Server?

Oder was meinst du damit?

Vielleicht einfach ein Verzeichnis, das ich freigebe, wo ich dann

hoch- und runterladen kann.

Einfach so schreibe und lese Zugriff.

Brauche ich dafür sowas wie alte

US-FDP?

Das hängt halt sehr davon ab, was du da

machen möchtest. Ich würde sagen, ja, sowas

gibt es außerhalb der Windows-Welt eigentlich

so nicht. Also da ist es halt irgendwie

Samba, oder ich weiß nicht, wie das Protokoll

Microsoft intern heißt.

Wahrscheinlich heißt es irgendwie anders. Keine Ahnung.

Ich kenne es nur, wenn man es jetzt Linux

als Server betreiben will, dann heißt es irgendwie

Samba als Server. Aber sowas betreibst du halt

nicht im Internet. Also... Warum?

Viel zu gefährlich.

Das ist...

Näh. Und es macht auch so

komische Sachen mit irgendwie Broadcast-

Geschichten und so. Das geht alles im Internet nicht.

Also... Also zu gefährlich

sagst du. Aber es würde gehen.

Näh, geht auch nicht. Ich glaube, es geht

gar nicht. Also was war denn ein FTP-Server?

Den hätte man aber einfach... FTP-Server, ja, aber

FTP-Server.

FTP ist auch irgendwie...

Ja, also die... Wie würde man

sagen, die 70er haben angerufen und die

80er haben angerufen.

Ihre

Wares zurück.

Also das ist... Das war ja damals

ziemlich cool. Da konnte man irgendwie so einen FTP-Server

connecten und hat dann da alles rumgeschoben,

hinterhergeschoben, was man so brauchte.

Ja, da konnte man

lustige Dinge machen. Also das ist uralt.

Ja...

Da gab es ja irgendwann die File-Sharing-Plattform

und man wusste, was gibt es denn heute? Also einfach dann

Cloud? Ja, das macht

man einfach nicht mehr, würde ich sagen. Also...

Es ist einfach komplett weg. Man hat das einfach

sowieso scheiße. Da ist alles zur Verfügung.

Näh, das war... Also...

Wenn du also Sachen hoch- und runterladen, das ist heute alles

HTTP. Und auch

da gab es dann irgendwie früher so

Geschichten. Vielleicht gibt es das auch immer noch.

Ich weiß nicht genau. WebDAV oder so.

Wo man das dann auch mounten kann.

Irgendwie so, dass es dann halt aussieht, als hätte man das

lokal im Dateisystem oder so.

Aber es ist alles...

Heutzutage ist es eigentlich eher...

Also wenn ich jetzt irgendwie nicht sowas machen will

für mich, irgendwie mit meinem kleinen Login oder sowas,

dass ich sage, hey, ich hätte gerne 10 Dateien, die ich immer runterziehe,

die nicht wichtig sind, wo man nicht besonders

viel kaputt machen kann, wenn da irgendwas auseinanderfließt.

Die Frage ist, was möchtest du machen? Was möchtest du eigentlich haben?

Nur einfach so eine File-Ablage, so eine Teil-Ablage

für, weiß ich nicht, 5 Fotos oder

irgendwas. Ich meine,

Fotos, weiß ich, gibt es ja auch andere Möglichkeiten, aber

nur so. Du willst

irgendwie verzeichnete Synchronen halten.

Ja, so ein kleines Dropbox. Ja, oder so ein kleines Store

für irgendwas. So mein virtueller USB-Stick.

Da gibt es, also würde ich

eher sagen, also da gibt es als fertig,

würde mir jetzt eigentlich nur einfallen, sowas wie

On-Cloud oder Un-Cloud.

Aber intern,

was die wahrscheinlich alle machen, das machen wahrscheinlich solche

selbst wie, oder wenn man

jetzt Apple verwendet, würde ich sagen, dann nimmt man halt einfach iCloud.

Also Un-Cloud. Oder iDrive.

Wenn du selber hosten willst,

On-Cloud wahrscheinlich. Aber intern wird das auch

nichts anderes machen.

Es wird nichts anderes machen. Das machen auch

Dropbox und die ganzen anderen wahrscheinlich.

Die sprechen alle HTTP

oder HTTPS mit zu Hause sozusagen.

Und dann haben sie irgendwie Client-Software,

die halt auf deinem Rechner läuft. Die halt

sich per iNotify oder sonst irgendwie

oder wie auch immer

sich benachrichtigen lässt, wenn halt irgendwie sich was an

ein Verzeichnis erinnert. Und dann sinkt die das halt rüber.

Und umgekehrt halt genauso.

Deswegen brauchst du auch einen Client, weil

das ja dann sozusagen

eine stehende Verbindung irgendwie braucht.

Und du halt auch vom Server aus den

Client benachrichtigen können willst.

Und ja.

Ich weiß nicht, ob es irgendeine gute, freie,

selbst gehostete Geschichte dafür gibt.

Aber warum nicht irgendwie

Dropbox oder sonst irgendwas?

Ja, ich meinte einfach nur jetzt so der private USB-Stick.

Wo man kurz was hinterschieben kann.

Von Gerät zu Gerät

oder sowas. Wo man einfach dann URL eingibt

und dann kurz seinen Login. Und dann hat man das.

Das wäre irgendwie schon nett.

Ja. Ich weiß es nicht.

Ich glaube, also ich meine, das Geräteübergreifend

funktioniert das wahrscheinlich dann Google.

Du musst ja dann auch irgendwie auf die Telefone kommen.

Wäre ja dann praktisch.

Und dann bist du eh

entweder bei Apple oder bei Google.

Da kommst du ja selber gar nicht mehr drauf.

Ja, dann fallen wir doch

mit dem nächsten Thema an.

Ja, es ist ein bisschen

traurig alles, aber leider.

Ja, also

SSL-Zertifikate, hast du gesagt,

sind alles im Keddy mit drin.

Das heißt, das HTTPS mit

Unterstützer. Also kannst du mal vielleicht

unterschiedlich kurz. HTTPS, ist das dasselbe?

Naja, SSL ist eigentlich, glaube ich,

veraltet.

Das ist gar nicht mehr so, dass man halt

davon redet, weil man das irgendwie gewohnt ist.

Also mittlerweile ist das, was man eigentlich verwendet,

TLS.

Und so genau

weiß ich das jetzt auch alles nicht.

Das zu konfigurieren ist ein Schmerz.

Also ich weiß, dass ich das, ich habe das mal ein paar

Mal gemacht für NGINX.

Und das hat, das war auch, das hat länger

gedauert, als ich dachte. Es gibt da so ein

Test

von SSL Labs, wo man dann überprüfen

kann.

Ob die eigene Seite irgendwie den aktuellen

Sicherheitsanforderungen irgendwie genügt.

Muss man da irgendwie ein Zertifikat sich irgendwo generieren?

Kann man das selber erzeugen? Muss man das kaufen?

Da gibt es ja irgendwie so kostenliche Angebote.

Warum nimmt man die? Warum nimmt man

freies? Geht das auch frei?

Also ich würde da gar nicht so super

detail drauf eingehen. Also wenn man kann das kaufen,

dann hat man unter Umständen so Vorteile

wie, es wird in der Browser weiß-grün angezeigt

oder so, weil es irgendwie so Spezial-Deals

zwischen den Browser-Herstellern gibt.

Und also, ich meine, das sieht auch komisch

aus. Ich weiß nicht mal, ob das jetzt vertrauenserweckende

ist oder nicht. Vielleicht denken die Leute, das ist

lieber seltsam. Oh, Kapitalisten, weg da!

Nein, ich weiß nicht. Also, dann

ist es so, die ganzen

Certificate Authorities

sind halt

dadurch aufgefallen, also von denen

kaufst du sozusagen die Dienstleistung, dass sie

deinen Key

unterschreiben und

damit der Browser halt, weil er die

Certification Authority kennt, halt sagen kann,

okay, ich glaube, dass das jetzt die Seite

ist, mit der ich tatsächlich rede.

Die haben, sind

halt schon ganz oft dadurch aufgefallen, dass

irgendwie

sie Sachen unterschrieben haben. Also, das

eine Ding, was sie eigentlich nicht machen dürfen, Dinge

unterschreiben und damit authentifizieren, dass

jemand, der ist, der vorgibt zu sein,

der halt nicht der ist,

der halt ein anderer war. So, für Microsoft

ist das schon ein paar Mal passiert, dass jemand sich

dann als Microsoft ausgeben konnte,

der es nicht war. Dann kannst du natürlich den ganzen Leuten halt

per Windows-Update

Sachen reinschieben. Ja,

nicht so geil.

Und solche Sachen. Also, das

ist, das passiert halt dauernd. Daher ist diese

ganze Certification, äh,

Certificate Authority-Geschichte, das ist alles, das

funktioniert nicht so richtig gut. Und dann hast du

auch Probleme mit, wie was passiert, wenn du jetzt Sachen

revoken willst. Das geht alles nicht richtig.

Und das ist schrecklich.

Ähm,

insofern würde ich sagen, tja, also,

äh,

dieses letzte, also,

man muss auch heutzutage eigentlich kein Geld mehr bezahlen.

Es gibt eine freie, äh,

CA, ne, Let's Encrypt,

die in allen Browsern, äh, die, äh,

äh, äh, äh, quasi Keys drin hat,

sodass man halt überprüfen kann, ob die korrekt

signiert sind. Äh, das heißt,

ja, wo es früher gar nicht möglich war,

wo man halt kein, äh, äh,

keine verschlüsselte Verbindung bekommen hat, ohne dass

einer der Browser irgendwie schreckliche

Warnungs-Warngeschichten angezeigt hat.

Äh, äh, ohne dass man bezahlt hat.

Das geht heute. Insofern,

es ist, äh,

ja.

Ähm, und, ja,

ich mach das so. Es gibt auch Gründe, das nicht

so zu machen, aber, äh,

oh, wir haben gerade eine Live, eine, eine

E-Mail bekommen zu einem Podcast. Die ist aber leider so lange,

dass ich sie nicht lange vorlesen kann. Ähm,

von Topit.

Ja, bin gespannt. Ja, ich werde mir gleich mal

durchlesen. Ich freu mich schon. Ja, ähm,

also, Thorsten. Ja. Hi, Thorsten.

Jetzt war eine Live-Inteilung.

Fand ich super. Okay.

Ja, äh,

Engagement, äh, heute sehr hoch.

Also, wir möchten gerne tatsächlich

diesen Server, den wir jetzt ja irgendwie stehen haben, ne,

mit dem ganzen SSL-Zertifikate und was. Kann man denn

irgendwie, was, also, wahrscheinlich erzähl ich jetzt wieder irgendwelchen

Unsinn, irgendwie mit, äh, als Proxy

benutzen, irgendwie über den ins Netz connecten

und Anfragen stellen auch, dass ich irgendwie

den anderen Weg gehen kann, dass nicht jeder sieht, wovon

ich komme, dass ich dann von meinem Server ausgehe?

Na, oh, das willst du aber nicht, weil dann weiß doch

jeder, woher, woher, woher. Ja, aber das ist doch okay,

aber dann, dann ist das... Das willst du,

das willst du ja gerade nicht. Nein, aber vielleicht hab ich ja einen

anderen Standort und ich connecte immer meinen Server und dann wissen die

vielleicht, dass ich immer mein Server bin, oder

sowas, aber die wissen meinen eigenen, eigentlichen

Standort jetzt nicht, weil ich nicht immer über meinen Provider gehe.

Ja, aber da sind... Also, mein Provider weiß zum

Beispiel dann nicht mehr, wo ich hingehe, weil ich über meinen Server gehe.

Ja, okay, gut, aber, äh,

gut, aber, also,

der, der Nachteil ist, dass halt jeder,

den du, dass du, dass jeder

Webserver-Betreiber weiß,

wer du bist, was

vielleicht auch nicht so cool ist, also,

äh, das ist alles, sind alles Dinge, das

will man wahrscheinlich nicht so machen. Ja, aber, also, vielleicht, also,

zumindest, wenn die ganze Zeit

mein Provider sonst immer alles mitbekommt,

vielleicht kann man... Ist halt die Frage, vor wem du

Angst hast, also... Vielleicht vor dem Provider.

Wenn du vor dem Provider Angst hast, ja, aber... Dann könnte

man da raus, das könnte man als Tunnel benutzen.

Würde ich nicht so machen, würde ich nicht so machen, dann

nimm lieber was ordentliches, nimm lieber Tor.

Ja, okay. Oder nimm halt

einen von den VPN-Dienstleistern, aber die sind

auch, ich meine, da muss man sich auch bewusst sein, dass die, ähm...

Auch gecaptured werden.

Und vor allem, dass sie zweimal verdienen,

ne, die verdienen halt einmal, weil sie

Geld von dir bekommen, und dann verdienen sie halt nochmal, weil

sie Geld von Facebook oder sonst wem bekommen,

äh, für die, für die Nutzungsdaten, ne, also,

ähm... Also, ich hab mich jetzt

gar nicht für anonyme Surfen interessiert, sondern ich einfach

nur, ob die technischen Möglichkeiten, irgendwie, wie das

funktioniert, wenn ich jetzt da meine Connection über so einen Server

schicken will, weil ich da einrichten würde.

Ja, das hat aber nichts mit, glaube ich,

zu tun, dass es dann, da würde es dann irgendwie

sowas wie OpenVPN nehmen oder so.

Das heißt, ich würde einen VPN-Server starten, dahin

connecten und dann von dem dann weiterlaufen.

Ja.

Okay.

und dann einfach einrichten auf dem...

Genau, also das ist tatsächlich ein Anwendungsfall,

für den ich das tatsächlich auch benutze

und auch einen OpenVPN-Server laufen

habe, ist, man kann

auch bei allen, also bei iPhone geht das sehr, sehr easy,

da kannst du halt OpenVPN-Server

auch einfach eintragen als, das ist jetzt

VPN, du kannst ja den VPN irgendwie auswählen und kannst

sagen, ich nehme jetzt einfach den.

Ist halt für

Netflix

und die ganzen Streaming-Geschichten,

Spotify-Sachen, die funktionieren ja sonst im Urlaub

halt nicht mehr.

Die sind ja quasi, und wenn man dann

VPN anmacht, dann gehen die halt trotzdem.

Und dafür habe ich es halt genutzt

bisher, aber...

Ja genau, den musst du dann

auch über den Kelly routen, oder wie ist das denn mit dem

Port? Das ist kein HTTP.

Das ist kein HTTP.

Das läuft einfach auf einem Service, auf dem Rechner.

Das ist ein ganz anderes Protokoll,

das ist OpenVPN, ein eigenes Protokoll,

läuft üblicherweise, du kannst auch

bei TCP und normalerweise bei UDP

irgendwo auf einem Port, ich weiß nicht,

irgendwas... Also das heißt, ich starte einfach dann auf dem

Rechner, dann die verschiedenen Services am Anfang,

die dann halt hochgefahren sind und die dann nebenbei als

Demons dann laufen. Dazu gehört dann der OpenVPN,

der auf einem anderen Port dann läuft, als der

Kelly, der auf dem 443er läuft.

Und dadurch kann ich dann, indem ich auf die verschiedenen Ports

zugreife, dann auf die verschiedenen einzelnen

Applikationen geroutet werden. So wie das im Internet halt so üblich ist.

Was halt quasi

die unterschiedlichen Services haben halt unterschiedliche Ports.

DAP ist halt 80

und 443, Mail ist 25,

DNS ist

53,

je nachdem.

SSH ist 22.

Genau, FTP 21.

Ja.

Ja, also SSH will ich wahrscheinlich auch haben.

Ja.

Weil ich halt da irgendwie...

Aber dann ist halt auch die Frage,

als Root auf die Maschine draufgehen, ist das nicht ein bisschen riskant,

das irgendwie zu exponieren? Oder sage ich dem,

der darf sich gar nicht einloggen? Und wie mache ich das? Mache ich das per

Passwort oder muss ich da irgendwie ein Authorized Key

irgendwie am besten hinterlegen in irgendeinem SSH-Konto?

Genau, also Authentifizierung immer per Key

und dann sozusagen

legst du den Public Key

in ein

File namens Authorized Keys

in dem .ssh-Verzeichnis

auf deinem Server

und dann kannst du dich da einloggen. Und man kann glaube ich sogar dann

Login per Passwort abschalten oder sowas?

Kann man machen, ja. Sollte man vielleicht auch.

Ja, aber dann kann man tatsächlich nur noch mit seinem

Private Key connecten, ne? Was macht man denn dann,

wenn der kaputt geht?

Dann kann man sich nicht mehr connecten.

Dann ist er am 8, ja.

Kannst aber mehrere zum Beispiel nehmen. Ja, okay, aber dann ist man

normalerweise am 8, dann muss man den Server komplett abhauen dann.

Also weil das alles dann nicht mehr geht, dann muss man

den Server hart, wie

kommt man da wieder dran? Also kann man nur die Feste...

Naja, ne, also das hängt halt davon ab,

mit welchem, was das ist. Also

du kannst, also

du kannst auch zum Beispiel, weil wenn du jetzt

einen eigenen Server hast, den Fall hatten wir noch gar nicht, der ist aber auch

vielleicht gar nicht so uninteressant, jetzt bei

Hetzner oder so, wo du wirklich physikalisch eine Maschine

gemietet hast, die irgendwo im Rack steht,

da kriegst du auch eine Konsole drauf.

Na, so ein paar serielle Konsole, kannst

du dich auf das Ding, was halt auch interessant ist,

wenn du irgendwelche Dinge machen möchtest, während das Ding bootet

oder so,

wo du halt

per SSH nichts machen kannst, weil es gibt keinen

SSH, die mit der läuft, weil der Körner noch gar nicht hochgefahren ist.

Da willst du halt

was anderes haben, mit dem du dich drauf connectest und das geht da.

Oft.

Sodass du halt wirklich das Ding booten sehen kannst und

kannst auch Dinge tun beim Booten.

Genau, also

das geht alles. Insofern gibt es da noch andere Wege

rein, aber ja, bei so einem

Container, der halt einfach da...

Da geht das natürlich so nicht.

Aber das ist ja so

Wegwerf-Kram, den schmeißt man halt einfach weg.

Wenn ich den Server irgendwie

abgeschmissen habe,

geschossen habe oder so,

und der bootet nicht mehr,

dann kann ich ja nicht anders machen.

Ja, dann schmeißt du den Container weg, machst einen neuen.

Es dauert ja nicht lang, das dann wieder hochzuziehen.

Ja gut, aber wenn das im Container läuft, dann ist das kein Problem.

Also ich würde sagen, wenn das ordentlich gemacht ist,

dann dauert das von irgendwie, du kopierst

dein Projektverzeichnis dahin

oder checkst es halt aus, was du auch machen kannst.

Wenn du SSH anhast mit

irgendwie Forward Agent,

dann kannst du halt auch private Repositories

beispielsweise GitHub oder irgendwelchen GitLab

auschecken. Das Connect ist ja

einfach hin, checkst es aus,

sagst Docker Compose, irgendwie Build

und dann linkst du halt das noch einmal

in deinen Supervise-Config-Dings

da nach ETC,

sagst Supervise-Control-Restart

dein, was auch immer, wie das heißt

und das dauert dann

drei, vier Minuten und dann ist das Ding wieder oben.

Also, ja.

Selbst das könntest du noch automatisieren.

Das kannst du per Script machen, kannst du auch

per Python SSH bedienen,

per Paramiko oder so.

Paramiko heißt das?

Mit der man SSH sprechen kann.

Ja, okay.

Ja, also Ports haben wir jetzt einmal so kurz drauf eingegangen.

Also ich könnte auch irgendwie irgendwelche Ports

aufmachen oder irgendwas hinterstecken.

Macht man dann auch sowas wie so einen Honigtopf

auf, dass man einfach irgendwie so eine Reaktion hat, falls die Leute

irgendwie sagen, hey, klassischer Angriff.

Würde ich jetzt nicht machen, aber gut.

Kann man natürlich, wenn man Spaß daran hat.

Also, ja.

Fliegenfang. Also es gibt für Dangler zum Beispiel

auch so ein Honeypot-Modul

irgendwie, das einen so vorgeholt,

dass es ein Admin-Interface gäbe.

Und dann, wo sich die Leute dann einloggen können mit

Standard-Passwörtern und dann können sie da irgendwie Dinge machen,

aber das ist alles nur Fake und dann kann man sich hinterher angucken, was sie gemacht haben.

Aber, ja, ich meine,

wenn ein, aber...

Ja, wenn man ein bisschen rumspielt in der Hobbygruppe und mal so guckt, was man so alles

rausfinden kann und wie man das alles so macht und so.

Aber ich würde sagen, ich würde es deswegen nicht machen,

weil das ist gefährlich.

Das ist halt viel Code, der mit außen redet.

Das ist viel Angriffsfläche.

Ja gut, ich sag mal, wenn man auf dem Server jetzt nichts zu verstecken hat,

sondern es eh nur so zum Rumspielen ist, dann ist das ja vielleicht gar nicht so schlimm.

Dann kannst du auch einfach offen lassen.

Dann gucken wir uns die Leute an. Vielleicht ist das ja besser.

Ja, vielleicht ist das ja auch ein bisschen Honig

ausliegen.

Schokolade.

Ja, also

Firewall?

Also Firewall...

Ist das auf Routerebene dann im Serverzentrum?

Nein, nein. Also Firewall

ist halt die Frage, was die Leute darunter verstehen. Das sind auch

unterschiedliche Dinge. Also ich kenne es halt eher so aus

der Internet-Admin-Welt.

Und da

nennt man Firewall

ein System zur

Durchsetzung einer Policy am Übergang

zwischen Netzwerken. So, das ist eine Firewall.

Ich weiß, dass es so im Heimcomputer-Bereich gibt es

da irgendwie andere Definitionen von. Da gibt es

auch so Personal Firewalls oder sowas.

Aber das ist alles Quatsch. Aus meiner Perspektive,

weil die machen genau das eben nicht.

Was heißt denn

Policy-Restriktion? Also wann darf denn welches

Protokoll mit welchem ich reden? Oder darf ein bestimmtes Protokoll nicht

auf einen bestimmten Port?

Genau. Du guckst dir halt...

Firewall ist ein

Konzept. Das ist nicht unbedingt eine

Implementation. Das, was die meisten Leute

vielleicht darunter verstehen, ist sowas wie ein Paketfilter.

Paketfilter, da guckt sich immer vier Sachen an.

Quell-IP,

Ziel-IP, Quellport, Zielport.

Du kannst jetzt natürlich auf beliebige

Kombinationen davon Policies definieren.

Also sagen, okay, das lasse ich durch, das lasse ich nicht durch.

Und jetzt ein Paketfilter guckt

sich immer diese Quadruppel an

und entscheidet dann, ob er das

Paket durchlässt oder nicht. Und sowas kann man dann

mit Paketeinlösung, mit, weiß ich nicht,

PyShark machen und das dann selber bauen auch?

Da gibt es Software, für die das

macht, aber das macht nur dann Sinn.

Also einmal willst du solche

Sachen niemals verwenden, um

dich

darauf zu verlassen, sondern das ist immer nur

ein zusätzliches Sicherheitsnetz. Also

die Sachen sollten sicher sein von sich aus.

Das kann ja auch sein, dass

Paketfilter ausfallen oder nicht ordentlich funktionieren oder so.

Das sollte deine Sicherheit nicht beeinträchtigen.

Sondern das ist einfach nur, damit

du sagen kannst, ich habe hier ein Stück Hardware, das ist

sonst mit nichts verbunden.

Das ist nicht

irgendwie auf der gleichen Maschine. Da kann ich irgendwie, wenn

jemand meine Maschine aufgemacht hat oder eine Applikation

aufgemacht hat, kann er diese Policy

nicht ändern. Das heißt, dafür

muss es dann halt physikalisch getrennte

Maschine im Grunde sein, auf der

nur der Paketfilter läuft, sonst nichts. Sonst macht

es keinen Sinn. Und den hast du halt am Übergang

zwischen unterschiedlichen Netzen, weil da kannst du

halt genau auf Basis dieser

vier

Attribute irgendwie dann

deine Policy irgendwie durchsetzen. Also falls ich doch

meinen offenen File-Dings da betreiben will, dann sollte

ich dann eine Firewall zwischen dem Netz und...

Aber das kannst du überhaupt nicht. Du hast ja nicht

drüber das Netz. Also das kann... Ich würde sagen, das macht

ja nur dann Sinn, wenn du auch das Netz unter Kontrolle hast.

Aber dann muss ich das lokale Netz unter Kontrolle haben.

Du müsstest das Netz, in dem

du dir so Policy durchsetzen willst, musst du

unter Kontrolle haben. Also bei meiner eigenen Serverfarm zu Hause.

Wenn ich da... Du kannst es zu Hause machen, ja.

Für zwei verschiedene Routernetze oder sowas, die ich von einer

trennen will. Vielleicht habe ich

irgendwie ein kleines offenes

Netz da. Da gibt es ja so ein paar Optionen,

wo man frei sich verbinden kann

an einem Funk. Und dann könnte man das

mit seinem Heimnetzwerk machen. Und da sollte man dann sowas dazwischen hängen,

weil die Geräte zwar im gleichen LAN-Festival

zu viel Aufwand... Das ist viel zu viel Aufwand, um

sowas selber zu machen. Oder

ich wüsste jetzt nicht, dass das irgendein... Also

ich finde, seit diesen Zeiten

sind es vorbei. Also das ist...

Das meine ich nicht.

Ja, also ich meine, eben diese Infra... Also

die Hoster und vielleicht auch Amazon,

die werden solche Sachen betreiben.

Die machen das so.

Aber...

Für zu Hause macht das

doch kein... Ich meine, du musst wirklich

ein eigenes Gerät dafür haben, dass das nur das tut.

Und dann brauchst du mehrere davon.

Weil du willst ja

nicht nur einen... Du brauchst ja dann irgendwie

unterschiedliche Zonen

und...

Da gibt es ja unterschiedliche Konzepte,

wie du das realisierst.

Und du kommst ja mit einem Ding auch gar nicht aus. Da brauchst du mehrere

davon. Das heißt, du betreibst mehrere Rechner zu Hause

nur, um diese Policy da durchzusetzen.

Welchen Gewinn erzielst du dadurch?

Und vor allen Dingen im Verhältnis zu

dem Aufwand.

Als Rechenzentrumsbetreiber

kann man das irgendwie rechtfertigen, dass man zu jedem

Switch dann noch irgendwie einen Paketfilter stellt.

Oder so alle

zwei, drei Racks stellt man da halt

irgendwie noch einen Paketfilter dazu.

Aber zu Hause...

Da bin ich aber ganz sicher, da bin ich nicht mehr so

Glaskörper-mäßig.

Aber das Ding hilft dir ja für die meisten

Sachen, die dich sozusagen...

Nässt nicht.

Genau.

Es hängt halt davon ab, wovor du Angst hast.

Wenn du Angst davor hast, dass die

Applikationen, die bei dir laufen, was Böses tun, dann

schützt dich das alles überhaupt gar nicht.

Das schützt dich halt bloß davor, dass jemand

Verbindungen irgendwie, die du

laut Policy nicht zulässt, irgendwie

macht. Aber das passiert heute eh fast

nicht mehr.

Oder das passiert ja auch nur dann, wenn

eine Verbindung möglich wäre. Die meisten

sitzen hinter irgendeinem komischen, dynamischen

IP, irgendeinem seltsamen NAT.

Das ist mit den Verbindungen sowieso nicht so

toll. Und da müssen

ja diejenigen,

die dich...

Wenn du da irgendwie... Wenn jemand dich

kompromittiert hat, dann muss er ja irgendwie nach Hause

telefonieren. Und dann muss er das eh auf eine relativ

schlaue Art tun, sonst kommt der ja gar nicht mehr durch.

Wenn man das auf eine relativ schlaue Art tut, dann nützt dir der ganze

Paketfilter-Kram nichts. Weil

der sieht ja nichts Schlaues. Der macht ja nichts Schlaues.

Der macht ja was sehr, sehr Einfaches eigentlich.

Also

schwer. Also Firewalls sind auch quasi

aus den Relikte, aus der Paketfilter.

Naja, also Firewall ist ja unter Umständen noch viel mehr. Es ist ja nicht nur

Paketfilter, sondern das ist halt...

Man kann ja auch noch andere Dinge tun.

Man könnte auch solche Sachen machen, wie

ähm...

äh...

Na, du hast da einen Rechner,

auf dem läuft nur

äh...

wie heißt das? VLC oder so?

Nee, dieses Ding ist VNC.

Sozusagen, genau. Du connectst dich

darauf. Du hast selber... Bist du abgeschnitten

von... Du kannst halt bloß

über so eine grafische Schnittstelle irgendwie mit außen

kommunizieren. Also das macht man auch manchmal.

Das ist auch, würde ich sagen, ja eine Firewall.

Um halt zu verhindern,

dass du Netzwerke miteinander überhaupt

verbinden musst. Dann kannst du halt da sagen, okay, da ist eine...

Da ist gar keine Verbindung

in dem Sinne.

Ja.

Okay. Es würde für mich auch irgendwie unter

Firewall fallen.

Oder es kann diverse andere Geschichten geben,

äh, die halt auch da drunter fallen.

Also ich würde eher sagen, das ist halt so...

Das ist eher ein Konzept. Und, äh...

Ja, aber das ist

alles Sachen, das ist heute...

Ich würde sagen, äh, ich weiß es natürlich

nicht genau, vielleicht, das ist heutzutage eher ein Ding

für Experten. Weil

wer hat...

Mist.

Also ich meine, wenn einem das Spaß macht, kann man sich ja damit beschäftigen,

aber, ähm...

So.

Das, ähm, ja.

Die meisten Firmen machen ja auch ihr Rechenzentrumskram

nicht mehr selber. Auch das macht natürlich Spaß,

irgendwie selber Racks zu bauen und Kabel zu ziehen

und die zu labeln und so. Voll gut.

Aber das macht auch heute kaum noch jemand, weil

alle gehen halt in die Cloud und...

Okay.

Es ist halt so ein bisschen, das wird halt eher, das rutscht

halt alles so in die Richtung, ähm...

Commodity. Also früher hat es halt

hat es vielleicht noch einen Unterschied gemacht, wenn man jetzt

in einer Firma war und hat halt irgendwie

sein eigenes Rechenzentrum im Keller betrieben, äh,

ob man jetzt die Kabel

ordentlich gelabelt hat, äh, und

irgendwie da die Paketfelder ordentlich hingestellt hat

und so. Und heutzutage ist das halt so,

darüber kann man sich schwer differenzieren, weil

also außer, man macht's halt

scheiße. Aber ansonsten kann man es,

wenn man's gut macht, besser als Amazon

wird man's nicht machen können. Daher, ähm,

oder nur, also, mit einem Aufwand, der

das ist halt nicht mehr gerechtfertigt, ja.

Nicht mehr bezahlbar, meinst du? Nicht bezahlbar, ja.

Das lohnt sich einfach nicht. Also, Amazon

ist so gut, äh, die anderen

auch, äh, dass sich das

nicht mehr lohnt, das selber zu machen, um sich da noch irgendwie

was rauszuholen.

Das musst du mir nochmal genauer erklären.

Das ist so ein bisschen schade irgendwie,

weil natürlich viele coole Sachen, die früher irgendwie

interessant waren, heute halt nicht mehr,

nicht mehr so, oder, ähm, ja.

Aber ich fürchte, das ist halt so der Gang

der Dinge. Zeiten sind vorbei.

Ja. Na gut.

Aber ja, also ich meine, das ist natürlich schon alles interessant.

Also, ja. Also ich würde vielleicht

gerne nochmal kurz das mit dem Server anschließen.

Ähm, ja. So ein bisschen, was ich noch machen würde, also

für mich jetzt persönlich, ich würde gerne so ein paar IoT-Geräte

daran schicken. Also ich habe jetzt irgendwo

ein paar Raspberry-Sensoren oder sowas,

äh, die ich dann da, äh,

Broadcast oder sowas, mit MQTT

habe ich, äh, gelernt, das würde ganz gut funktionieren.

Und dann lade ich irgendwie so ein Rest, äh,

oder ein GraphQL, äh, am besten

was, was würdest du sagen, API

laufen über so ein Caddy

dann, ein Django ansteuern,

da lässt du dann... Also, in Django selber rein geht das

dann wahrscheinlich, wenn du es direkt in Django rein

schreiben willst, über wahrscheinlich

sowas wie Django REST-Framework oder halt eben über

GraphQL oder so, das sind halt so die typischen

Sachen, mit denen man halt APIs bereitstellt.

Ähm,

aber

was du dann

auch machen könntest, das ist halt die Frage. Also

MQTT ist halt insofern schicker,

als dass es halt genau für solche Anwendungsfälle gedacht ist.

Ähm,

und du dir halt über viele Sachen

nicht mehr selber Gedanken machen musst,

dass du müsstest, wenn du es halt, äh,

also wenn du jetzt zum Beispiel, äh,

irgendwie, äh, keine Ahnung, eben, äh,

du hast einen Sensor, es ist halt die Frage,

ob es jetzt wichtig ist, die Daten, die dabei rausfallen,

oder ob man die ignorieren kann, also wenn jetzt da

ein wichtiger, äh, nehmen wir an, du hast

einen Geigerzeller in deinen Raspberry Pi eingeschlossen, ja,

und, äh, irgendwie der Fallout, die Fallout-Wolke

ist überzieht über dein Wohngebiet

und, ähm, aber dummerweise

ist irgendwie gerade dein Server nicht erreichbar.

Dann ist es natürlich blöd, wenn jetzt diese

Information, dass, äh, äh,

dass dein Garten verseucht ist, äh, äh,

nicht bei dir ankommt, weil der Raspberry Pi,

der die Sensordaten bekommen hat,

sucht dir halt, äh, irgendwie an deinen Server zu schicken

und der ist halt gerade nicht da. Und was macht,

was macht dann? Schmeißt dir einfach weg. Schmeißt dir einfach weg,

ja, was soll das? So, und schmeißt dir einfach

weg und dann kriegst du die Daten nicht. Hängt

davon ab, hängt von deinen, deiner, deinen Anforderungen

ab, ob das jetzt, äh, schlimm ist oder nicht. Kann auch sein,

dass es nicht schlimm ist. Aber wenn es,

wenn du möchtest, dass die, ähm,

dann halt noch irgendwann dahin geschickt werden,

wenn der Server wieder da ist, dann brauchst du ja selber

irgendwie eine Art von Queue, dann brauchst du irgendwie eine Warteschlange,

äh, äh, wo halt die

Sensordaten erstmal auflaufen und dann halt irgendwie,

dann, wenn dein Server wieder verfügbar ist, dahin geschickt werden.

Und,

ja, das kannst du, dann kannst du noch Features dazu

bauen und dann implementierst du, äh,

MQTT oder halt

beliebiges anderes, äh, Queuing-System,

Message-Queue-System halt nach.

Und das muss man nicht tun, man kann

einfach eins nehmen, das schon fertig ist und das macht das dann

ein Verein, ne? Okay. Dann sagt man, dann schmeißt man

halt in die Queue halt irgendwie dieses Sensordatum

halt rein.

Und der überlebt dich so lange bisher in

201. Genau, aber man muss sich,

man muss sich nicht mehr selber kümmern, dass das,

irgendwie zugestellt wird und so, das passiert dann automatisch.

Also der macht dann einfach Post-Requests auf die API?

Ne, ne, ne, ne. Das Ding macht,

nein, nein, nein, das ist halt ein eigenes Protokoll. Das macht

kein, macht auch kein HTTP.

Das ist ein eigenes Protokoll. Es gibt einen

MQTT-Broker, der, äh, irgendwie

weiß, welche, äh,

ja. Was spricht der dann REST?

Nein. Was bekommt der denn dann? Kein HTTP.

Aber wie bekomme ich den denn auf

meinem Django

Backend, auf meinem Django-Server?

Du könntest natürlich, ja, du kannst halt intern

irgendwo bei dir zu Hause MQTT sprechen und dann halt

irgendwie den ganzen Kram halt periodisch

zu deinem Server schicken, aber du könntest natürlich auch,

und das ist fast wahrscheinlich dein geiler,

äh, zum Beispiel, äh,

ein VPN aufmachen.

Ja. Und, ähm,

hast halt auch, äh,

quasi einen,

ähm, ja,

Ding, was halt, äh,

äh, die, die

an der Queue hängt, sozusagen die, die

konsumiert,

die, äh, Ereignisse, die da rausfallen,

die Events, die da rausfallen, und das,

was dann halt irgendwo zum Beispiel in deine Datenbank direkt

reinschreibt. Ja, dann gehe ich aber gar nicht mehr über die API.

Dann gehst du gar nicht mehr über die API, genau. Aber dann habe ich

noch einen eigenen Service laufen, der, ähm,

der hängt aber nicht mehr im Caddy, sondern der hängt als Demon

wieder auf einem eigenen Port. Ja. Genau.

Aha, und dann muss ich dann einfach dann, der,

wie kann der denn dann mit der, das ist

mein Problem, mit der Datenbank, die im

Docker liegt, reden? Ja, bei, äh,

auf dem lokalen Host geht das ja alles, da kannst du auch

mit dem, mit der Datenbank reden, das geht.

Ah, das heißt, ich muss

dann aber den, den Container mit reinschreiben,

den

MQGT-Broadcaster, damit er

auf die Datenbank zugreifen kann?

Nö, das muss man halt bloß irgendwie auf

da ankommen. Das Ding kann in dem

Container irgendwie als Prozess laufen, es kann aber auch wieder

in einem eigenen Container laufen.

Aber das kann... Genau, ich bin jetzt gerade ein bisschen ausgestiegen

an der Stelle mit der Verzahnung. Also ich habe jetzt, ähm,

meinen Django in einem

Docker-Container laufen, der vom

Caddy angesteuert wird.

Mhm.

Das läuft selber in einem eigenen Container.

Angesteuert?

Also der Caddy, der schießt das doch zum

App-Server.

Nein, wenn Requests von außen kommen, die landen auf dem Caddy.

Und der schickt sie dann halt weiter an den Applikations-Server,

wenn sie bestimmte Container entsprechen.

Der läuft aber als Docker.

Ja, aber der Caddy kann auch als Docker-Ding

laufen. Das ist, bei der

Default-Installation mit Cookie-Cutter ist das auch so.

Da läuft auch der Caddy in einem eigenen

Container. Und dann ist das ja egal, dann kann der MQGT-

Broadcaster auch in einem Container laufen, der kann

aber dann mit den anderen Postgres-Containern zum Beispiel

reden oder sowas. Ja. Ja, okay.

Dann kann er das dann reinschreiben und kann dann darauf zugreifen.

Ja. Der Zugriff, den mache ich jetzt, weiß ich nicht,

Django kann man flott lieben,

Seaborn macht man flott lieben oder halt tatsächlich so

ein bisschen Dash sogar, habe ich gesehen, gibt Django

im Modul, um das dann irgendwie auf sich darzustellen.

Wie

kommunizieren die denn dann mit der Datenbank,

damit das dann live abgerufen werden kann, wenn ich die Daten

jetzt live auslesen möchte?

Weiß ich, ehrlich gesagt.

Bin ich mir so ein bisschen überfragt, keine Ahnung.

Also man kann das halt so machen, dass man,

also du möchtest, dass sich live irgendwie dein

Graph ändert. Ja.

Wenn ich auf den Knopf drücke, dann soll das, also auf

dem Raspberry, auf den Knopf drücke, dann soll das direkt

sichtbar sein. Ja, dann

das Einfachste ist wahrscheinlich in JavaScript

einfach zu pollen, irgendwie alle

paar hundert Millisekunden oder so einfach

nochmal die API zu fragen, gibt es neue Daten?

GetRequest und einfach. Ja.

Oder, aber das

ist halt die Frage, ob man das machen möchte.

Dann nimmst du halt WebSockets

und dann sowas auf Django-Seite, sowas wie Django-Channels

oder so, aber dann musst du halt, dann musst du

einen anderen, musst du auch bestimmt einen anderen...

Was sind denn WebSockets jetzt schon wieder? Ui, ja, das ist

halt so eine Erweiterung. Das ist halt dann auch schon

nicht mehr HTTP, das ist halt was anderes.

Bei HTTP, da hast du das

Problem, du hast keine bidirektionale Verbindung,

sondern du hast halt immer nur Request-Response.

Mhm. Request-Response

geht das nicht, weil du kannst

halt vom Server aus nichts zum Client

schicken, weil du weißt ja nicht mal, wer deine Clients sind.

Du hast ja keine Verbindung zu denen. Socket hört sich so an

wie so ein Port oder sowas, der irgendwie im Internet

rumschwebt.

Ähm, Socket. Ja.

Socket ist quasi sozusagen der, das

eine Ende der Hörer bei dem Telefon. Wenn du dir vorstellst,

halt, das ist wie so eine Verbindung, so eine

Internet-TCP-Verbindung ist halt wie so

eine Telefon-Verbindung, dann wäre Socket

irgendwie der Hörer, wo man irgendwie was reinwerfen kann,

was halt auf der anderen Seite rauskommt.

Und du kannst in beide Richtungen auch was reinwerfen. Ja, genau.

So, aber HTTP ist halt nicht so, sondern

HTTP ist eher so wie, ähm,

Rohrpost. Ja, da wirfst du halt was rein

und das... Rohrpost.

Nee, Quatsch, ach, das ist auch Unsinn. Das wäre ja auch bidirektional.

Äh, äh, ähm,

HTTP ist eher so wie... Wie so ein Katapult.

Wie, wie, du hast, äh,

äh... Katapult in eine Richtung,

fliegst immer was durch die Stadtmauer, und dann wenn du was...

Du hast, du hast, du hast

eine Telefon-Verbindung, aber, äh,

auf der Server-Seite hast du nur...

Oder du bist dann in so einem Bandseil und

versuchst mit der Hand immer ins Wasser. Ach, diese ganzen Vergleiche

sind nicht gut. Das stimmt alles nicht.

Es, äh...

Ja...

Mir fällt jetzt kein guter, mir fällt kein guter Vergleich ein.

Das ist aber auf jeden Fall so, du hast halt eben keine Verbindung

zu deinen Clients, du kannst die nicht benachrichtigen,

dass sich irgendwas geändert hat. Ja.

Du kannst immer nur darauf warten, dass sie dich fragen.

Du kannst ein Fax hin und her schicken, sowas.

Ja, du kannst halt nichts da hinschicken. Ja.

Du kannst halt nur darauf warten, dass dich jemand fragt.

Und das ist halt, äh,

also, jetzt halten wir einen Vergleich ein.

Du bist halt so wie die, äh,

wie die, äh, wie beim Bahnhof, die Information.

Ja? So, die Leute können zu dir

kommen und dich irgendwas fragen, aber wenn jetzt...

Wenn jetzt der Zug, äh, irgendwie, keine Ahnung, äh,

äh, ausfällt, äh, die Wagenreihung sich ändert

oder Godzilla drüber gelaufen ist,

dann kannst du das den ganzen

Reisenden nicht sagen.

Sondern die müssen kommen und dich fragen.

Ja. Quasi. Ja, ja.

Ja, meine Kunden haben ja so eine Durchsage, aber so weit sind wir jetzt noch nicht.

Das ist viel zu modern. Ja, ja, ja.

Das, das, äh, ja, genau. Da geht's dann natürlich schon wieder kaputt

mit der, mit der, mit der Metapher. Aber, ähm,

ähm,

ja, äh, also,

eben, äh,

wenn du dann WebSockets hast, dann geht's halt doch.

Dann hast du eben eine Verbindung zu einem Client,

den kannst du dann in Echtzeit direkt sagen, so.

Wie mach ich WebSockets an? Also, bei Django hast du gesagt

Channels. Ja, Django Channels ist ne,

das Problem ist aber, du brauchst halt einen anderen

Server dann, Applikationsserver,

weil der das kann. Und welcher Applikationsserver

kann WebSockets von Django?

Äh, das, äh, der kommt dann da mit

Django Channels, sagt mit. Der heißt irgendwie Daphne.

Und, ähm,

ja,

es gibt auch, glaube ich, einen, der,

äh,

so ähnlich ist wie Unicorn. Der heißt bloß ein bisschen anders.

Der das dann auch kann.

Äh, aber, äh,

genau. Also, das ist halt, das ist alles nicht mehr so

einfach dann. Und, ähm, ja.

Ja, aber

jetzt hab ich schon wieder jede Menge gelernt. Ich bin ja wieder

weitergekommen. Ähm, was mir jetzt das Einzige, was mir

noch so fehlt tatsächlich, wäre jetzt das Indie-Web,

was ich jetzt da irgendwie bauen wollte. Ach so, das

Indie-Web, Indie-Web-Geschichten, genau. Dafür brauchst du,

also, wenn du ein eigenes Domain hast, schon mal sehr gut,

dann, äh, kannst du schon mal ne Menge machen.

Ähm, und das auch,

vor allen Dingen kannst du ne Menge nachrüsten.

Ansonsten, bei Django sieht's da momentan noch nicht so richtig

doll aus. Also, äh,

da muss man noch ein bisschen was basteln.

Ja, ich hab jetzt tatsächlich irgendwie

geguckt, wir haben jetzt die ganze Zeit über Django geredet, aber du kannst

einfach auch irgendwie jetzt ein Flasho und Pyramid einfach

daneben, ist eigentlich relativ egal. Ja, da gibt's auch nix, aber

ja. Aber dann gibt's halt jeweils die anderen Module,

die man dann irgendwie sich herausfinden muss, welche das dann

sind, und das funktioniert aber dann quasi

relativ ähnlich.

Genau. Also, Indie-Web-Geschichten ist

momentan eher noch alles so in der PHP-Welt

zu Hause. Ja, okay.

Ja, so ist es halt, aber, ähm,

Das heißt, ich muss dann einfach den Ketti auf

ein PHP-Verzeichnis schicken, oder?

Wenn du jetzt,

nee,

den könntest du, also, ich weiß nicht, wie man

das heutzutage so macht mit PHP, also diese,

ich hoffe, dass auch mal da die Zeiten so, wo man

da irgendwie so eine Web-Route hatte

und da irgendwie PHP-Dateien, die dann irgendwie

magisch ausgeführt werden über Mod.php oder so,

und Apache, ich hoffe ja mal, dass das nicht

mehr so ist, äh, sondern

dass man da auch das inzwischen so macht, dass man da halt

irgendwie Ketti davor hat, oder irgendwie

NNX, und dann hast du halt Applikations-Server,

die halt PHP, äh...

Aber im Worst-Case könntest du sagen, dass ich neben dem Ketti dann einfach

ein Apache mit einem Mod.php laufen habe,

und der dann Ansprüche hat auf den nächsten Port.

Kannst du, ja, könntest du das natürlich auch machen. Du kannst ja einfach

im Ketti sagen, so, das, äh, bitte,

diese Domain oder diese Subdomain,

oder was auch immer, an den Apache weiterreichen geht

natürlich auch, und den in einen eigenen Container packen, klar.

Und dann fürs Indie-Web, was baue ich denn

da noch, also eigentlich auch, sagen wir mal?

Ja, kommt halt darauf an, was du machen möchtest, aber da müssen wir noch mal,

also weiß ich jetzt ehrlich gesagt auch nicht so genau.

Okay, das machen wir dann noch mal von extern,

da haben wir ja schon mal ein bisschen kurz eingerichtet, aber das könnt ihr euch da bestimmt auch einlegen,

da gibt's ja Dokus zu, aber das geht

alles mit demselben Server. Also ja,

GitLab haben wir gesagt, kannst du auch selber drauf

bauen, wenn du deine eigene Versionskontrolle bauen willst,

dann ein GitLab-Server, das

wird wahrscheinlich auch einfach ein Dienst sein,

oder, Demon?

Was ist das?

Ja, ja, ja, ja,

ja, nee, das ist einfach auch wieder eine

Web-Geschichte, ne? Also GitLab ist einfach

auch nur so ein Web-Frontend.

Ruby und Rails ist halt, ich weiß nicht genau,

wie aufwendig das zu hosten ist, also irgendwann

wird's dann natürlich schwerer. Also wenn du einen

10-Container hast, oder 20, oder irgendwann wird's dann mit dem Hauptspeicher

ein bisschen eng. Keine Ahnung.

Brauchen wir möglicherweise auch eine eigene Datenbank?

Ja.

Also Datenbanken sollte man

nicht so viele nehmen, man sollte die meisten Sachen in dieselbe Datenbank

packen.

Weil Datenbanken viel

Dinge brauchen? Nein? Ich würde das tatsächlich

so machen. Ganz viele kleine Container, ganz viele

kleine Datenbanken. Nee, ich würde das nach Systemen

auftrennen. Nach Projekten.

Ja, okay. Und dann

immer einen eigenen Container für die Datenbanken machen.

Und das nicht alles auf eine Datenbank

packen, weil auch da wiederum, wenn du das halt

irgendwie updatest oder so, du möchtest ja eigentlich,

oder du bist halt dann, du begibst dich

dann in das Gebiet. Du musst die Datenbank

löschen für ein Projekt, und dann sind alle Projekte gut.

Du upgradest die Datenbank, und dann sind alle Projekte

down. Das ist ja nicht eigentlich.

Sondern du willst halt auch vielleicht mit einem Projekt

auf einer bestimmten Datenbank-Version bleiben

können und so. Und du willst halt

die ganzen Systeme voneinander isolieren. Es ist natürlich

effizienter, wenn du irgendwo einen Datenbank-Server hast,

wo alle deine Datenbanken

liegen. Ja, viel effizienter, aber

ist halt viel schwerer, was die,

was die,

was den Betrieb angeht. Das heißt,

ich muss dann von meinem Web-Server auf den Datenbank-Server immer

hin und her connecten oder sowas, ja.

Naja, es ist halt einfach, du musst

dann, du musst dann

plötzlich Dinge tun. Du musst dann

irgendwie, da musst du Backups haben,

musst du auch so haben, aber das kriegst du alles in deinem Projekt

unter. Aber wenn du jetzt einen eigenen

Datenbank-Server hast, dann ist das mit den Backups

immer alles nicht mehr so einfach.

Dann ist, dann, pff,

dann, das, also wenn du das machst,

dann bist du halt schon im Profibereich irgendwie

unterwegs, dann machst du sonst nichts mehr. Dann machst du genau das

nur noch. Und die Frage ist,

ja, für Hobbygeschichten lohnt sich das ja überhaupt gar nicht.

Also, äh,

ja. Ja, dann sind wir wieder, ich glaube,

den Kreis können wir jetzt schließen. Wir sind ja nämlich bei

der Taiga angekommen, weil

die möchte ich jetzt vielleicht auch noch laufen lassen. Ich hätte gerne ein paar

Kanban-Boards irgendwie für mich persönlich, die ich dann da selber hoste.

Genau dasselbe. Ich muss da wieder was hochfahren,

was, was Routen über da in Keddy und

auf der Aplikation laufen und läuft.

Ja, super. Also ja, wenn ich das irgendwie

mache, ich bin gespannt, wie lange ich dafür brauche, bis das

alles rennt. Ich gebe euch die Zeit.

Ja, wenn, äh,

am Ball bleiben.

Das ist auch, aber ich meine, wenn du, also

ich höre, dass du wirst die ganze Menge Zeug betreiben.

Da brauchst du wahrscheinlich dann schon eher so

eigene Hardware oder sagen wir so, dann wird es mit eigener Hardware

deutlich günstiger, als wenn du jetzt

da irgendwie eine

virtuelle Container irgendwie

mietest, der dick genug ist, dass du das alles damit machen kannst.

Das wird dann relativ schnell teuer.

Ja, ja, also der RAM ist, glaube ich, das größte Problem.

Ja, RAM ist irgendwie das, ja, würde ich auch sagen.

Ja, ich habe noch so einen kleinen Dreck in der Ecke, aber dann

ist es auch irgendwie doof und ja.

Ja, ich muss überlegen, was da irgendwie am besten

in Frage kommt. Aber damit kannst du ja vielleicht starten.

Du kannst ja zu Hause anfangen. Ja, ja, der ist schon,

der läuft schon eine ganze Weile, aber das

macht keinen Spaß.

Ja, aber ich muss ja eh immer so ein ganzes Team bauen

und so. Aber ich möchte die ganze Nacht halt dann einfach

wieder umbauen können, dass das nicht jedes Mal

dieser ganze Konfigurationsaufwand ist.

Ich habe jetzt irgendwie einen Pedora-Server dann irgendwie hingestellt,

der so irgendwie einige Sachen auch konnte, der auch in den Postgres

auch lief und irgendwie auch dann

danken konnte, aber dass das alles nicht so

gewesen ist heute.

Aber wir haben jetzt auf jeden Fall, das finde ich total super.

Ich habe da kein Candy, kein Reels und nichts da gebaut.

Das war mir bisher völlig unbekannt und

ja, finde ich super, dass man das alles so machen

kann. Also bis jetzt geht es ja immer nur so

Docker-Containers bauen, dann läuft das alles irgendwie magisch.

Aber wenn man nicht so wirklich versteht, was dann dahinter steckt,

ist das nochmal eine ganz andere Hürde,

glaube ich, auch zu verstehen, warum was gerade nicht geht

oder so. Und ja, vielen Dank,

dass du mir das alles wieder heute hier erklärt hast.

Ich weiß nicht, ob das alles

irgendwie klar geworden ist oder nur noch viel verwirrender.

Nein, nein, das war richtig, richtig, richtig klar.

Also eine große Erleuchtung und

man kann sich das ja alles nochmal zurückspulen oder nochmal

langsam abspulen.

Ich fand es echt cool.

Ja, also auf jeden Fall.

Tolle Folge für mich mal heute hier.

Ich mag sie natürlich immer.

Ja, und

genau, also

ja, also macht

auch Spaß und ich denke,

dass man zumindest, also wenn man

ein paar Anregungen hat, wie man

selber eine Webseite irgendwie

oder Django-Python-Kram

im Web betreiben kann und

wenn man das eigentlich vielleicht heutzutage so macht,

dann ist das ja auch schon mal nicht so schlecht, weil man muss

eh viel recherchieren und bei Django

würde ich sagen, irgendwie ein Buch kaufen,

Cookie-Pattern-Template verwenden.

Ja, also ich gehe jetzt gleich

die Mail von Thorsten durch und freue mich, dass wir

heute alle wieder zugehört habt.

Fand ich richtig super.

Ich habe ja sowieso auch keine

Ja, mit Blick der Woche habt ihr das ja heute Morgen.

Habe ich schon verbrannt, so irgendwie gerade am Anfang.

Machen wir dann diesmal nicht.

Ja, das machen wir nächstes Mal.

Gut, okay.

Ja, dann super, dass ihr wieder reingeschaltet habt. Bleibt uns gewogen.

Immer dann, wann ihr auch hört, ob gerade die Sterne scheinen

oder die Sonne brüht.

Ja, wir hören uns.

Bis später. Tschüss.