Latest / Coding Buddies | Tech & Dev-Mindset / #146 Jede kleine Änderung wird zum Großumbau – hexagonale Architektur ist die Lösung
Transcript
- 0:00Du setzt dich ja als Kind auch nicht aufs Fahrrad, fährst
- 0:02einmal los, fällst hin und denkst dir so Alter was ne
- 0:05Kacke, ich bin raus. Coating Buddies Dein Podcast
- 0:08rund um Softwareentwicklung und aktueller Tech News herzlich
- 0:12Willkommen. Halli Hallo und herzlich
- 0:25Willkommen zur neuen Folge des Coding Vadis Podcasts.
- 0:28Schön, dass du wieder eingeschaltet hast.
- 0:30Wir sind neu ins Jahr gestartet 2.
- 0:32Folge des Jahres Es geht weiter und ich möchte dafür meinen
- 0:36Partner begrüßen, meinen lieben Kollegen Fabi, was geht ab, was
- 0:41geht ab Tino Grüße dich und wie findest du neue Ansprache neues
- 0:46Jahr es ändert sich alles jetzt ja, es ist abgefahren.
- 0:53Oder aber was geht ab? Bleibt also das das kann ich dir
- 0:55versprechen, ich hab mich schon mal gefragt so wenn du
- 0:59angenommen du hörst so mehrere Folgen hintereinander, dann geht
- 1:01es immer los mit ja neue Folge, neue Folge neue Folge was geht
- 1:06ab, was geht ab? Na ja, aber die Leute wissen
- 1:10dann einfach direkt, was abgeht. Halt ne.
- 1:12Ja, was geht denn so ab? Ja, noch nicht viel.
- 1:14Also ich bin ziemlich entspannt ins neue Jahr gestartet, muss
- 1:17ich sagen und du schön bei dir ist.
- 1:19Ja, doch, ich auch, ich auch all die Zeiten mit fetten, Riesen,
- 1:22Partys sind vorbei bei mir ja ja, dieses Jahr ist alles anders
- 1:26oder wie ich mein ich werd alt weißt du das hast du dir zur
- 1:33Jahreswende überlegt, das ist das Jahr wo ich alt werde nee
- 1:38cool weiß ich nicht, ich find es, ich find es wirklich immer
- 1:40relativ entspannt wenn man einfach so, also beim
- 1:45Reinfeiern. Irgendwie in so einer kleinen,
- 1:48entspannten Gruppe ist. Weißt du so, die Leute kennt man
- 1:50alle, man es fühlt sich irgendwie so zu Hause weißt du
- 1:54das das das gefällt mir das mag ich find ich gut ja ja muss
- 1:58nicht mehr die große Riesenparty sein ich find.
- 2:00Ich bin auch ehrlich, dass Silvester einfach so n bisschen
- 2:02überbewertet ist. Aber na ja, was soll es, was
- 2:04soll es immer so, also ist nicht so das Highlight des Jahres was
- 2:08viele erwarten sag ich mal. Ich hab also ich versteh auch
- 2:11gar nicht wieso das so n Ding eigentlich immer generell.
- 2:14Ist wahr. Wie auch immer.
- 2:15Also dieses weißt du ja jetzt Silvester richtig, der Hammer,
- 2:19weißt du ich mir mal. Denke so es wird genauso viel
- 2:22der Hammer wie alles andere wenn du jetzt zum Beispiel ne Party
- 2:25veranstaltest wird es wahrscheinlich.
- 2:27Ja genau so ne normale Party die da.
- 2:30Na die Wahrscheinlichkeit ist hoch, aber ich sag mal es ist ja
- 2:33der positive Effekt dabei ist, dass wir ja auch die 1.
- 2:36Folge des Jahres dann sehr entspannt aufnehmen konnten,
- 2:39nicht völlig im Arsch waren sag ich mal ne muss man einfach mal
- 2:41ganz klar so sagen und genauso geht es uns jetzt ja, wir haben
- 2:45Bock, ich hab Bock. Auf ne neue Folge.
- 2:50Genau, der Podcast ist schuld, dass wir nicht mehr feiern.
- 2:52Nein, so ist es auch nicht gut okay gut, kommen wir mal.
- 2:56Zum Thema heute, weil ich glaub wir brauchen heute n bisschen
- 2:59Zeit ist n spannendes Thema ist n umfangreiches Thema und
- 3:05deswegen werden wir heute mal keine Zeit mit Geplauder
- 3:08verschwenden. Fabi und deswegen werd ich jetzt
- 3:11noch n bisschen plaudern Nein starten wir mal rein, was haben
- 3:15wir heute vorbereitet komm hau mal raus du hast n Thema
- 3:17mitgebracht ich find das Thema Klasse, es ist sogar n Community
- 3:20Wunsch Thema gewesen und ich denk mal das hat dich inspiriert
- 3:22sei ehrlich na klar aber krass hab ich Bock hau mal raus.
- 3:26Ja, ich glaube, wir hatten das schon n bisschen auf den Schirm.
- 3:28Und dann kam noch der Wunsch und dann hat es einfach gepasst.
- 3:32Also bevor ich das jetzt einfach so nenne, ne und sage was es
- 3:36ist, möchte ich mal, dass du dir so ne kleine Situation
- 3:38vorstellst und vielleicht gucken kannst, ob du sagst kenne ich
- 3:43oder ist mir komplett fremd, habe ich noch nie erlebt.
- 3:46Ja gucken wir mal. Also stell dir mal vor, ja
- 3:51kriegst n Ticket. Ne ganz harmlos, da steht drin
- 3:55sowas wie also Arbeit ist jetzt in einem, also hättest du jetzt
- 3:59n arbeitsticket arbeitsticket ja also du kriegst kein Ticket
- 4:02irgendwie beim Auto weil du falsch.
- 4:03Geparkt hast, weil ich hab gerade.
- 4:05Rausgeguckt vor Panik, aber nee, alles gut.
- 4:08Ach so, übrigens du hast n Ticket, du wirst gerade
- 4:12abgeschleppt. Nein, also stell dir vor du du
- 4:15bekommst ein Ticket feature ne sowas.
- 4:19Ganz harmlos steht drauf. OK, wir müssen den
- 4:22Überweisungsprozess unserer Software leicht anpassen.
- 4:24Ne, das heißt wir sind so Thema Bankbereich einfach mal
- 4:27unterwegs und du sagst OK entspannt müssen den
- 4:31Überweisungsprozess anpassen. Ja überleg dir jetzt was für
- 4:34Anforderungen dahinter stehen, die sind auf jeden Fall
- 4:37beschrieben und du öffnest aber den Code und merkst dann so na
- 4:40OK warte mal es geht ja hier um ne fachliche Änderung.
- 4:45Der Überweisungsprozess hat nur was mit Business, mit der
- 4:48Business Logik zu tun und jetzt guckst du dir das an und denkst
- 4:50dir so, jetzt muss ich irgendwie was am Rest Controller ändern.
- 4:53Ich muss NDTO ändern damit das funktioniert.
- 4:56Ich muss irgendwie noch an einem Repo was basteln und im Worst
- 5:01case noch ne mittelschwere Datenbank Migration machen ne
- 5:05und? Du bist halt da repo.
- 5:07Meinst du jetzt n Datenbank Repository nehm ich mal an oder
- 5:09OK gut. Und du?
- 5:15Bist dabei, guckst dir das an, Programmierst auch schon und
- 5:17mittendrin fragst du dich dann so was soll eigentlich der
- 5:20Scheiß, also weißt du ob man es kennt?
- 5:24Ne, jetzt hast du nämlich die Situation kenn ich nein, aber
- 5:30die Frage an der Stelle ne die man sich dann stellen kann oder
- 5:32die man sich vielleicht auch öfter mal stellt ist warum muss
- 5:35ich eigentlich so viel Technik anpassen?
- 5:37Also weil ich ja auch von Rest gesprochen hab irgendwie die TO
- 5:40ändern repo und so weiter. Obwohl eigentlich sich nur die
- 5:44Business Logik ändert. Ne, also eigentlich soll ja nur
- 5:46quasi in dem in der Logik des Kerns sag ich mal deiner
- 5:50Software soll irgendwie was verändert werden, was aber
- 5:53eigentlich mit dieser ganzen technischen Geschichte drumherum
- 5:56nichts zu tun hat. Und wenn dir das was sagt, ja
- 6:02dieser eine Punkt sagt dir was, aber der Rest ich weiß nicht
- 6:04hast du sowas schon mal gehabt? Ist dir das schon mal über den
- 6:07Weg gelaufen? Ja, ja, ja, ja, ja.
- 6:10Vor allem auch Tickets. Wo drin steht n bisschen was
- 6:12anpassen. So also von der von der von dem
- 6:15Grad der Genauigkeit der Tickets.
- 6:17Ja OK das versteh ich auch, aber wir sind jetzt wirklich bei das
- 6:20Ticket ist das Ticket ist top ja können wir mal davon ausgehen
- 6:23Ticket alles super ja gut dann würd ich sagen kenn ich die
- 6:26Situation trotzdem weil es zeigt einfach wenn ich unglaublich
- 6:30viel an verschiedenen Stellen anpassen muss, dass ich schon ne
- 6:33harte Kopplung hab am Ende und alles irgendwie vielleicht ein.
- 6:38Etwas viel zu sehr ineinander greift, sage ich mal.
- 6:43Und das technische von der von der Business Logik wie Du
- 6:48meintest, vielleicht einfach nicht genug getrennt ist.
- 6:51Echt ja würde ich da würden die Refactoring Alarmglocken
- 6:55angehen, die man ja gekonnt ignoriert.
- 6:58Dann nein sollte man nicht, aber ja doch kenne ich kenne ich zu
- 7:03gut, gerade in größeren Projekten die schon ne Weile
- 7:06leben. Ja, also größere Projekte sind
- 7:08da auch schon irgendwie Stichwort, aber das Ding ist
- 7:11auch wenn man sich jetzt vielleicht gedacht hat, OK, doch
- 7:14so ne Situation kommt mir bekannt vor, wie du ja auch
- 7:16schon meintest Kino, dann hilft da oder kann etwas helfen.
- 7:20Ja, das heißt ja nicht immer, dass es auf jeden Fall hilft,
- 7:22aber es ist auf jeden Fall möglich, dass es helfen könnte
- 7:25und zwar seine Architektur, seine Softwarearchitektur
- 7:27anzupassen, zum Beispiel mit der hexagonalen Architektur ne und?
- 7:33Das ist eigentlich auch so das Thema.
- 7:34Wir hatten ja in der letzten Folge angefangen mit
- 7:37Softwarearchitekturen so ganz allgemein und auch schon
- 7:39angeteasert, dass wir auch hexagonale Architekturen mal
- 7:43betrachten wollen und genau das wollen wir heute mal machen, um
- 7:46zu gucken, wie funktioniert das eigentlich, was ist hexagonale
- 7:49Architektur und warum heißt das überhaupt hexagonale
- 7:53Architektur, hab ich mich zum Beispiel früher mal gefragt.
- 7:56Ja, ich guck jetzt mal noch fancy klingen.
- 7:59Ja, von so 6 ne ich keine Ahnung.
- 8:01Das gucken wir uns alles mal in dieser Folge an.
- 8:03Finde. Ich gut, also Kern der Folge
- 8:06ist, wie schaffe ich es quasi meine Businesslogik ins Zentrum
- 8:10zu packen und die ganze Technik die du beschrieben hast
- 8:14austauschbar zu machen? Das ist so n bisschen das
- 8:17Kernelement um genau nicht mehr in diesen Pain zu kommen, dass
- 8:22alles ineinander verwurstelt ist und man alles anpassen muss,
- 8:25quasi nur weil man n bisschen die Businesslogik ändert, genau.
- 8:30Ja, sehr, sehr cooles Thema. Hab ich Bock drauf Fabi wegen
- 8:35diesem Thema oder dem Titel sag ich mal, dass man es hexagonale
- 8:39Architektur nennt. Interessanterweise ist es ja
- 8:42wirklich darunter Mehrgeläufig als unter dem Alternativnamen,
- 8:47weil man kann auch sagen, dass es so n Ports and Adapter
- 8:50Architecture ist. Also so Ports and Adapter
- 8:53Architektur so und. Trotzdem muss ich sagen, kannte
- 8:58ich es immer nur unter hexagonale Architektur.
- 9:01Aber du hast schon recht, klar, Hexa steht jetzt irgendwo für 6,
- 9:05ne für so n Sechseck sag ich mal.
- 9:07Aber eigentlich heißt das jetzt nicht, dass man jetzt genauso
- 9:11viel Schnittstellen haben muss oder so viel weiß ich was haben
- 9:15soll, sondern es ist geht schon um ne beliebige Anzahl, aber um
- 9:19sich das ganze vielleicht optisch besser vorstellen zu
- 9:22können, hat man das vielleicht gewählt.
- 9:24Liebe, zuhören, Liebe zuhören. Falls du weißt, warum es exakt
- 9:27genauso auch genannt wird, dann lass es uns gerne wissen.
- 9:30Es interessiert uns es vielleicht auch so, so coole
- 9:33sind so coole Sidefacts, die man wissen kann.
- 9:37Ja, auf jeden Fall. Wie gesagt, soll es darum gehen,
- 9:40dass man die Fachlogik in den Kern setzt und die technischen
- 9:43Details, die du jetzt zum Beispiel genannt hattest, ne,
- 9:46wie zum Beispiel, wie binden wir uns denn an?
- 9:49Ja, wir nehmen Rest. Ja OK, wir haben ne Rest
- 9:51Controller auf einmal. Wo legen wir unsere Daten ab, na
- 9:55wir haben Datenbank XY ne Post Rest beispielsweise OK gut
- 9:59wieder n technisches Detail was alles wichtig für unsere
- 10:02Anwendung ist. Aber und das ist der
- 10:04entscheidende Punkt, austauschbar weil.
- 10:07Man kann verschiedene Datenbanken anbinden, je
- 10:09nachdem, was man gerade für sein Projekt, sag ich mal als besser
- 10:14beachtet erachtet. Ja oder auch
- 10:18kommunikationsschnittstellen, ja nach außen muss nicht Rest sein,
- 10:21gibt es auch verschiedene Möglichkeiten und das sind halt
- 10:24alles so technische Details, die auch gerade wir hatten ja auch
- 10:28mal über Domain driven Design gesprochen und jetzt sind wir
- 10:34hier quasi auf Architekturebene. Aber trotzdem hilft diese
- 10:38Betrachtungsweise greift hier halt auch.
- 10:41Und dieses fachliche von dem Technischen zu trennen hilft
- 10:44natürlich auch ungemein in der Projektkommunikation.
- 10:48Leute, die eher auf die Business Logik schauen und Leute die eher
- 10:51sagen ich versuch das Ganze umzusetzen und sind mehr im
- 10:54technischen Aspekt unterwegs und wenn die Architektur da schon
- 10:57vorgibt, dass man das klar trennen kann, hilft das auch
- 11:00ungemein in der Entwicklung und auch in der Kommunikation halt
- 11:04ja. Genau.
- 11:05Also im Endeffekt haben wir ja diese Grundidee, dass man so n
- 11:09zentralen Kern hat, und dieser Kern bildet dann im Endeffekt
- 11:13die Domain ab. Ne, weil du jetzt Domain driven
- 11:15development gesagt hast beziehungsweise Domain driven
- 11:18Design Design ja ja, so viel weißt du BDDDDDTDD manchmal
- 11:27Design, manchmal Development, in dem Fall Design ja genau, aber.
- 11:32Das das heißt, du hast irgendwo deine Domain beziehungsweise wie
- 11:35gesagt Deine Business Logik die irgendwo im Kern sitzt und dann
- 11:38hast du und weil du ja meintest so Ports und Adapter hast du so
- 11:41verschiedene Ports, ne die dann an die zentrale Logik die
- 11:45Schnittstelle zu nach außen da bieten ne also du hast dann
- 11:50quasi so bestimmte Ports die als Schnittstellen gelten und da
- 11:55können dann Adapter von von draußen andocken und die Idee
- 12:00ist halt zu sagen. Innerhalb deines Kerns ne gibt
- 12:05es halt nur ne Logik und keine Technik, keine Datenbanken.
- 12:09Es wird quasi keine Datenbank erwähnt, es wird keine
- 12:13Kommunikationsart erwähnt. Sag ich jetzt mal, sondern ja
- 12:18oder oder keine UI irgendwas Definition die da irgendwie
- 12:24darauf schließen lassen könnten, dass irgendwie ne gewisse UI da
- 12:27irgendwie mit drin ist oder dass irgendwas passiert an dieser
- 12:30Stelle. Sondern wirklich, dass du nur
- 12:32sagst, OK, wir haben unsere reine Business Logik, die da
- 12:36drin verankert ist. Ne und wir gehen da natürlich
- 12:41auch noch mal logischerweise mit einer kleinen Analogie drauf ein
- 12:43später, dass man sich das vielleicht auch noch n bisschen
- 12:45besser vorstellen kann. Aber und diese du meinst ja
- 12:50hexagonal, also mein Wissensstand ist, dass das
- 12:56wirklich nur so ne Art, ich sag mal Darstellung ist, ne.
- 13:01Ne, dass du sagst, du hast so diese, also diese so n Hexagon
- 13:05kann man sich ja vorstellen und an jede Seite kann dann so n
- 13:09Adapter andocken und jede Seite ist n Port ne und rein
- 13:12theoretisch ne kann du könntest auch 8 Seiten da dran packen
- 13:15oder 3 oder was auch immer ne also dieses.
- 13:17Und es ist halt einfach ne gute Darstellungs.
- 13:20Dann ne. Aber ich find es auch.
- 13:22Lustig hat sich das auch so n bisschen.
- 13:23Durchgesetzt ne, ich find es aber auch lustig wieso
- 13:25hexagonal, weil ganz am Anfang als ich es immer gehört hab,
- 13:28dachte ich mir so alter hexagonal was.
- 13:30Was soll ich mir da drunter vorstellen?
- 13:31Gar keinen Plan gehabt ne, ich dacht mir immer so was was ist
- 13:34muss man da irgendwie seine Logik in 6 Teile auf also sein
- 13:37seine Software in 6 Teile aufteilen aber was was passiert
- 13:40hier auf jeden Fall also das hat mich auf jeden Fall am Anfang
- 13:43mal n bisschen bisschen verwirrt.
- 13:46Genau. Aber wie du ja schon meintest,
- 13:48man kann sich das Halt gut vorstellen, wenn du jetzt die
- 13:50Business Logik quasi in der Mitte als Kern sitzt.
- 13:52Ich zieh dann quasi so n Hexagon Außenrum ne und hab in der Mitte
- 13:56meinen Kern und dann. Stell ich halt oder definier ich
- 14:00halt Ports an den Seiten, an dem man sich andocken kann sozusagen
- 14:05oder verbinden kann ja um quasi mit der Business Logik zu
- 14:11kommunizieren zu interagieren sag ich mal.
- 14:13Je nachdem was ich da jetzt anbinde und das ist halt
- 14:17eigentlich nur im Kern von Grundgedanken her ne richtig
- 14:21richtig coole Sache. Ja, natürlich.
- 14:23Der Teufel steckt im Detail. Es ist immer die Frage, wie kann
- 14:26man das umsetzen, es ist nicht easy umzusetzen, es ist
- 14:30aufwendig, es umzusetzen, aber im Kern erstmal muss ich sagen,
- 14:34ist das ne sehr coole architekturweise ne, also
- 14:38architekturart quasi eine Software zu gestalten oder so
- 14:41ein System. Ich finde mal, ich glaub man
- 14:43muss also weil du sagst es ist schwierig.
- 14:46Ich weiß nicht, ob es schwierig umzusetzen ist, aber ich finde,
- 14:49dass es ne ne. Schwierig ist, so diszipliniert
- 14:52zu sein, es dann auch wirklich. Ja OK, das wirklich so
- 14:55durchzuziehen ne, weil genauso wie es genauso bei TDD ne ich
- 14:59finde TDD an sich ne um n kleinen noch mal n kleinen
- 15:03Sidequest hier anzufangen ist ist ja nicht schwer, aber die
- 15:07Denkweise dahinter und das zu verstehen und zu verinnerlichen,
- 15:09das ist halt genau der Punkt und hier ist es halt eben würde ich
- 15:12sagen auch. Ja, es ist halt wieder klassisch
- 15:13Theorie und Praxis. Ne, in der Theorie klingt es
- 15:15einfach, aber jetzt mit einem Team es langfristig in einem
- 15:19großen Projekt umzusetzen. Bedarf, Erfahrung, einfach.
- 15:23Da können wir vielleicht auch später noch mal.
- 15:25Auf jeden Fall. Kommen, wenn wir sagen, so pro
- 15:27Contra wann eignet es sich, wann nicht?
- 15:30Aber das jetzt halt nur schon mal als Ausblick, weil wir
- 15:32gerade sagen, OK es ist auf dem Papier ziemlich cool, aber es
- 15:36bringt natürlich seine Schwierigkeiten mit ne das ist
- 15:39jetzt kein Free Lunch, dass ich sage so jedes jedes
- 15:42Softwareprojekt mach ich jetzt so.
- 15:43Ja, definitiv. Aber wenn ich das jetzt noch
- 15:46mal, ich fass noch mal kurz zusammen, ne wieso wie man sich
- 15:48so jetzt das vorstellen kann. Du hast also quasi den Kern, ne
- 15:51das wie gesagt Business regeln sind da drin irgendwelche Use
- 15:54Cases die sich da drin abbilden oder du hast halt da bestimmte
- 15:57Entitäten drin. Zu deiner Business Logik eben
- 16:01die ganze Logik im Kern kennt keine technischen Details,
- 16:05hatten wir ja schon gesagt und. Hat auch eigentlich nichts mit
- 16:09irgendeinem Framework in dem Sinne zu tun.
- 16:10Ne die Ports an sich sind Schnittstellen, ne diese Ränder
- 16:15an den hexagonalen Architekturen sozusagen.
- 16:18Oder am Hexagon. Und das können Inbound und
- 16:22outbound Ports sein. Im Endeffekt eigentlich nur,
- 16:24dass definiert wird. OK, das System hat ja
- 16:27prinzipiell also diese Business Logik ist da, dieser Kern ist da
- 16:30und es ist diesem Kern völlig egal wie der von außen
- 16:33angesprochen wird oder also was ihn von außen anspricht oder was
- 16:38er oder an wen er Daten nach draußen gibt, sozusagen ne und
- 16:42diese diese Ports, diese Schnittstellen definieren
- 16:44einfach nur OK, das ist so. Ich nenn es jetzt mal so n
- 16:47bisschen salopp gesagt, so ne Art Protokoll wo du sagst Ey
- 16:51pass auf, du bekommst das von mir und ich krieg das von dir so
- 16:55und egal was jetzt von außen kommt ne das sind dann diese
- 16:58Adapter die da andocken können. Es können halt auch in und
- 17:00outbound Adapter sein, weil du kannst ja irgendwas zum Beispiel
- 17:03bekommen ne oder irgendwas rausschicken zum Beispiel über
- 17:07Rest ne und da hast du dann im Endeffekt eigentlich diese
- 17:11diesen Kern, diese diese Schnittstellen und diese Adapter
- 17:13von draußen und. Diese beiden Dinge sind
- 17:16unabhängig voneinander und das ist genau der Punkt innen drin.
- 17:18Business Logik außen dran, außen dran Technik weil wie du gesagt
- 17:23hast, Rest kann auch angepasst werden durch was weiß ich ne Web
- 17:27socket oder durch Soap oder frag mich nicht so verschiedene
- 17:30Technologien ne. Aber noch mal kurz zu den Ports.
- 17:35Ja, sie definieren im Prinzip nur was rein und raus geht, aber
- 17:38es ist halt n unfassbar. Entscheidender.in der
- 17:41Architektur diese Ports richtig zu definieren und auch zu
- 17:45entscheiden, was es Inbound und outbound und dass man halt auch
- 17:49die Unterscheidung trifft und nicht sagt, das sind jetzt
- 17:51Ports, da definiere ich jetzt mal irgendwie Daten und mal geht
- 17:56es rein, mal schreibt der eine drauf, mal schreibt der andere
- 17:59drauf, mal liest der eine, Mal der andere, sondern damit kann
- 18:02ich halt dadurch, dass ich sie quasi definiere als Inbound und
- 18:05Outbound. Schaffe ich halt auch meine
- 18:08Dependencies zu regeln. Ne, ob die jetzt quasi von außen
- 18:12nach innen gehen oder von innen nach außen, das heißt es gibt
- 18:17mir halt auch Kontrolle darüber, wie der Informationsfluss quasi
- 18:22aussieht und ich finde das ist zum Beispiel auch so ein tricky
- 18:26Part, dass man das halt richtig sauber definiert und einhält,
- 18:31auch ne. Weil jede Architektur ist halt
- 18:34wie du meintest auch abhängig vom Team.
- 18:36Wie gut wird es umgesetzt? Ja, wenn ich jetzt anfange die
- 18:39ersten 5 Ports sauber zu machen und danach frickel ich mir so n
- 18:43Port zusammen wo jeder drauf schreibt und liest oder noch
- 18:46besser ich geh dann doch wieder direkt irgendwie an die Business
- 18:49Logik ran, dann ist das Kind im Boden gefallen schon wieder und
- 18:52das ist halt so die Schwierigkeit ne also man muss
- 18:54da halt klar definierte Ports haben und sich überlegen.
- 18:58Wie sehen meine Dependencies aus und in welche Richtung wird
- 19:01kommuniziert? Ja, definitiv.
- 19:03Das ist n guter Punkt. Das das ist auf jeden Fall
- 19:09wichtig, gerade weil du ja auch, sagen wir mal du hast ne
- 19:12Datenbank und ne Datenbank, also wenn du es jetzt mal mit so
- 19:15einem Schichtenmodell vergleichst, hast du
- 19:16wahrscheinlich so n Schichtenmodell immer ganz
- 19:18unten, das heißt du kommst halt irgendwie von oben rein, kommst
- 19:22durch die Schichten und bist unten an der Datenbank irgendwie
- 19:24angekommen beim. Bei so einem Hexagonal, bei
- 19:28dieser hexagonalen Architektur ist es ja nicht so, dass du
- 19:31irgendwie ne Art Schicht hast, sondern du hast ja wirklich
- 19:34diese Datenbank, auch die von außen irgendwo andockt.
- 19:37Ne, das heißt, du hast ja mehr oder weniger so n externes
- 19:39System und da musst du dann natürlich auch gucken, OK, wie
- 19:41hast du denn, welche Flüsse hast du denn innerhalb deiner
- 19:44Architektur überhaupt, weil. So ne Datenbank sendet
- 19:50normalerweise eigentlich eher weniger von alleine an die
- 19:53Business Logik, sondern es wird immer angefragt, so als als
- 19:56vielleicht kann man sich das so dann n bisschen mehr vorstellen,
- 19:59weißt du? Ja genau, gutes Beispiel.
- 20:02Genau das sind halt so die Sachen, ne, also wie wie muss
- 20:06die Kommunikation denn halt einfach aussehen am Ende
- 20:09speziell für diesen Port ja. Weil ich kann jetzt sagen, ja
- 20:13gut, das ist ich bin jetzt eine Datenbank an, da ist mir klar,
- 20:15wie das funktioniert, aber es geht ja genau darum, nicht zu
- 20:18sagen, wie es technisch funktioniert, sondern über einen
- 20:21Port zu definieren, wie erwarte ich meine Kommunikation und dann
- 20:25muss das mit dem Adapter zur Datenbank matchen, sozusagen ne.
- 20:28Ja genau, um sich das jetzt vielleicht.
- 20:31Vielleicht können wir uns das jetzt noch mal mit einer kleinen
- 20:32Analogie ein bisschen vertrauter machen, ne, ich hatte ja am
- 20:36Anfang schon mal so ein bisschen diese.
- 20:39So eingeleitet mit dem Beispiel eine Analogie mitgebracht habe
- 20:43ich geil, ich habe am Anfang ja schon mal ein bisschen
- 20:46eingeleitet mit dieser, mit diesem Ticket, wo wir gesagt
- 20:49haben, okay, wir müssen irgendwie die Überweisungslogik
- 20:51ändern oder was das war, ich habe es jetzt schon wieder
- 20:53vergessen, ne, du kannst dich noch erinnern, das heißt stell
- 20:58dir mal vor, wir sind irgendwie im Bankwesen unterwegs, ne, ich
- 21:02habe jetzt mal bewusst Banken gewählt, weil ich glaube.
- 21:07Wir sollten mal einmal jetzt auf Essen verzichten.
- 21:11Was verzeih ich den dir? Ich hab noch nicht.
- 21:13Ich hab noch nicht gefrühstückt, OK, nee, aber das heißt ne Bank
- 21:20kann man kann man sich ja vorstellen, jeder hat irgendwie
- 21:22mit Banken zu tun und muss vielleicht ab und an mal Geld
- 21:24abheben oder irgendwas bei der Bank machen und ne Bank hat ja
- 21:28an sich immer irgendwelche Schalter ne also du kannst ja
- 21:30irgendwie zum Beispiel an den Schalter gehen, ne in der Bank
- 21:33gehst du rein, da sitzt jemand, du kannst mit dieser Person
- 21:35reden, ne? Und wenn du jetzt aber zum
- 21:39Beispiel sagst, was ist denn jetzt ne Bank, ne, also wo zum
- 21:42Beispiel sitzt der Kern, was sind die Ports und was ist jetzt
- 21:46zum Beispiel so ein Adapter? Ne um das mal so ein bisschen
- 21:51klar voneinander zu trennen und sich vorstellen zu können, wenn
- 21:54wir sagen der Kern sind Bankenregeln ne, das sind
- 21:56wirklich feste Regeln, die Regeln legen zum Beispiel fest,
- 22:00wie darf man Geld überweisen, ne reicht das Guthaben aus, welche
- 22:03Gebühren fallen aus, so was, das sind Sachen.
- 22:06Die werden einfach innerhalb dieser Bank so gehandelt, wie
- 22:09sie sind. Das heißt, es sind regeln, die
- 22:11ändern sich im Normalfall selten, ja, vielleicht keine
- 22:14Ahnung, kommt irgend n neues Gesetz und das heißt ja, die
- 22:16Gebühren fallen da und dafür weg, das ist jetzt n neues
- 22:19Gesetz, dann muss das angepasst werden, aber prinzipiell sind es
- 22:22eigentlich Dinge die selten geändert werden und sie gelten
- 22:25halt auch immer gleich ne, also unabhängig davon wie der Kunde
- 22:29jetzt zu dieser Bank kommt ne so das ist also unsere wie wir es
- 22:33ja schon so schön genannt haben, unsere Business Logik.
- 22:35Und wenn du jetzt sagst, OK, der Kunde kommt zur Bank, wie kann
- 22:39er denn zur Bank kommen, ne, dann gibt es ja verschiedene
- 22:43Möglichkeiten. Ne der kann zum Beispiel sagen,
- 22:46ey ich komm vielleicht über n Schalter, also wirklich wie ich
- 22:49meinte du gehst in die Bank. Redest mit einer Person.
- 22:52Du machst das über die App ne, also du kannst ja so richtig all
- 22:55School Style, du gehst in die Bank und machst ne Überweisung
- 22:58ne so wie vielleicht noch, ich glaub es geht noch also ich
- 23:01glaub meine Oma die macht das noch manchmal so ne dass sie die
- 23:04hat sich glaub ich mal tierisch darüber aufgeregt, dass man das
- 23:08bald oder ich weiß nicht vielleicht mittlerweile nicht
- 23:10mehr, aber sie hatte sich auf jeden Fall mal drüber aufgeregt,
- 23:12dass es dieses Online Banking gibt, wo man ja irgendwie online
- 23:14was machen kann und sie möchte das immer nur beim Schalter
- 23:17machen. So nach dem Motto.
- 23:21Und ich glaub, dann wurde irgendwann mal das Portemonnaie
- 23:23in der Bank geklaut. Aber ist ne andere Geschichte,
- 23:25also vielleicht doch lieber online Banking Oma, aber du
- 23:30kannst es, aber das ist genau der nächste Punkt, ne online
- 23:32Banking, du kannst es über ne App machen, du kannst aber auch
- 23:35an den Geldautomaten gehen und am Geldautomaten diese
- 23:37Überweisung ausführen. Also du kannst ja du hast
- 23:39verschiedene Möglichkeiten irgendwie an diese Bank
- 23:42ranzukommen, das heißt du hast ne wie kommt der Kunde zur Bank,
- 23:46das ist ja dann wieder der Adapter und damit aber auch.
- 23:50Der Schalter, damit die App damit n Geldautomat auch immer
- 23:55quasi die gleiche Möglichkeit hat diese Regeln anzusprechen
- 23:59gibt es halt eben diese Ports. Ne das ist im Endeffekt die
- 24:03Festlegung wie kommuniziert wird ne also wie ist zum Beispiel ein
- 24:08ich nenn es jetzt mal Schalter bei der Bank definiert weißt du
- 24:11also n Schalter im Allgemeinen sind nicht jetzt n Schalter wo
- 24:14jetzt ne Person drin sitzt sondern ganz allgemein das
- 24:16heißt? Wie muss n Auftrag aussehen,
- 24:18damit die Bank ihn bearbeiten kann?
- 24:19So rum ne und OK, dann ist es halt egal ob du jetzt zum
- 24:23Beispiel am also beim Adapter ne wenn der Schalter sagt OK der
- 24:26Mitarbeiter spricht mit dem Kunden oder ne App nimmt
- 24:30irgendwelche Klicks entgegen oder n Geldautomaten hat zeigt
- 24:34dir überm Bildschirm was an, du hast diese Tasten, da unten ist
- 24:36es du hast unterschiedliche Eingaben ist es irgendwie das
- 24:38ist die Technik, ne die Technikseite diese Adapter und
- 24:44dann. Wird ja irgendwie gesagt.
- 24:46OK du ich brauch aber diese und diese und diese Daten und dann
- 24:48kriegst du das was du brauchst für ne Überweisung.
- 24:50Das können wir dann in unserer Business Logik umsetzen und
- 24:53genau so. Heißt am Ende.
- 24:55Wird das alles irgendwie nen Auftrag, dass Geld transferiert
- 24:59wird? Überwiesen wird zum Beispiel
- 25:01genau, genau, genau und ja, also im Endeffekt ist der Ausgang
- 25:07dann von dem was du reingibst immer der gleiche ne also die
- 25:10Logik läuft, läuft im Kern halt eben gleich ab, brauchst halt
- 25:14die richtigen Daten. So und mehr nicht.
- 25:16Ne und ich hab mal so n lustigen was heißt lustig bisschen lustig
- 25:22vielleicht n bisschen ernsthaftig gemeint, die also
- 25:26die Logik im Kern, die muss richtig schön sauber sein, ne
- 25:28das das muss geil sein und draußen an den Adaptern ne da
- 25:32kannst du n bisschen frickeln das.
- 25:33Kann so n bisschen dreckig sein, das ist in Ordnung.
- 25:37Wie kannst du sowas sagen, das ist nicht mehr dein Problem,
- 25:41dann ne du arbeitest nur an der Business Logik und dann.
- 25:44Stellst die Ports zur Verfügung. Draußen müssen sie zusehen, in
- 25:47der harten Außenwelt weißt du da, wo es ums Eingemachte geht?
- 25:53Nein, aber ich, ich versteh dein Beispiel, das ist ja auch n
- 25:56gutes Beispiel, weil wie gesagt am Ende, wenn du jetzt zum
- 26:00Beispiel verschiedene Eingaben hast, weil du meintest, so ich
- 26:02kann das über ne App machen, ja und da kann ich die Daten
- 26:05ausfüllen, dann hab ich vielleicht noch ne UI da drin
- 26:08und weiß ich was alles ne aber am Ende.
- 26:11Kommt ne Anfrage an die Business Logik bitte eine Überweisung
- 26:15durchzuführen. Genauso gehe ich in die Bank wie
- 26:17du meintest Füll den Zettel aus, die Mitarbeiterin nimmt, das
- 26:21wird vielleicht eingescannt, eingelesen, automatisiert oder
- 26:24jemand tippt das vielleicht noch in seine sein Interface ein,
- 26:28aber am Ende ist es wieder der gleiche Auftrag der sagt Bitte
- 26:31Geld von A nach B. So.
- 26:33Und das gleiche auch wenn ich noch an irgendeinen Automaten
- 26:36gehe. Genau, und das ist halt n gutes
- 26:40Beispiel, weil jetzt kann ich halt sagen, so im Kern sieht es
- 26:44halt immer gleich aus und die Außenwelt kann ich jetzt
- 26:47beliebig erweitern, reduzieren oder anpassen.
- 26:51Ja also das, weil wir reden ja immer davon das anzubinden und
- 26:55Fakt ist aber auch es muss nicht ne definierte Anzahl an
- 26:58Schnittstellen von Anfang angeben, ja.
- 27:02Wie du ja meintest. Früher gab es halt keine App,
- 27:04mit der ich das machen konnte. Hätte ich jetzt mal.
- 27:07Klar, es ist jetzt sehr lange und es hat es ist viel passiert
- 27:09in der Zeit, aber gehen wir mal davon aus, wir haben jetzt
- 27:11unsere Software noch so mit dieser Architektur und auf
- 27:14einmal kommt jemand ey ich hab ne krasse Idee, wir können das
- 27:17mit einer App machen, ihr wisst nicht was ne App ist.
- 27:19Stellt euch vor ihr habt so ein Ding in der Hand und damit habt
- 27:22ihr Zugriff ja ein Smartphone ihr wisst nicht was ein
- 27:25Smartphone Smartphone aber. Dann kann ich ja sagen, OK, ich
- 27:31erweitere es um einen Port und hab ne neue Schnittstelle
- 27:35sozusagen und ich implementier diesen Adapter oder ich geh mit
- 27:39einem weiteren Adapter an so einen Port ran.
- 27:41Wie auch immer das denn umgesetzt werden soll, aber ich
- 27:43kann es erweitern oder auch reduzieren, wenn ich zum
- 27:46Beispiel sag ey ganz ehrlich, es kommt gefühlt nur noch einer im
- 27:50Monat und will n Überweisungszettel abgeben, das
- 27:54streichen wir. Dann kann ich das sozusagen
- 27:56wegnehmen, diesen Pfad also jetzt wirklich rein
- 27:58architekturmäßig auf dem Papier. Ja, genau das hat jetzt mit
- 28:03nicht viel zu tun, dass jemand mit dem Zettel ankommt, aber
- 28:05damit man sich das vorstellen kann, ja, genau das heißt, der
- 28:08Port ist quasi noch intakt, aber es wurde n Adapter quasi
- 28:10gestrichen, ne genau. Und wir in dem Fall würde ich
- 28:13jetzt mal davon ausgehen, dass es dann so aussieht.
- 28:15Ja, also wir hatten ja zum Beispiel jetzt den Port
- 28:17Überweisung tätigen, ne, das ist ja so ne oder weniger auch so ne
- 28:21Art use case, dann ne. Und genauso kannst du jetzt zum
- 28:24Beispiel auch, ich glaub, das kam ja irgendwann auch mal,
- 28:27dieses Identität bestätigen, zum Beispiel online beispielsweise,
- 28:30ne, da kam jetzt irgendwann dazu, ne ich, ich weiß jetzt
- 28:34nicht wie das in den 70er Jahren war, ob man da einfach zur Bank
- 28:38gegangen ist und gesagt hat, Jo Ick möcht n Konto anlegen, alles
- 28:41klar, heutzutage musst du dich ja richtig also übertrieben
- 28:44ausweisen und alles. So ne Identitätsprüfung machen
- 28:48und dann hast du zum Beispiel auch wieder so n Port für die
- 28:50Identitätsprüfung. Das heißt du kannst zum
- 28:52Beispiel, es gibt ja verschiedene Verfahren, ne, also
- 28:54irgendwie online über auch wieder irgendwie über ne App
- 28:57oder du gehst halt in irgendeine Filiale rein oder frag mich
- 29:00nicht, ich glaub da gibt es verschiedene Möglichkeiten und
- 29:04das könnte ja jetzt zum Beispiel auch wieder n Port sein, genauso
- 29:06wie zum Beispiel n Dauerauftrag einrichten, Konto eröffnen was
- 29:10weiß ich Kontostand abfragen. Könnten alles irgendwie Port
- 29:13sein, die ja irgendwie gleichzeitig wieder bestimmte
- 29:16Adapter. Ne.
- 29:17Also der Adapter könnte der Gleiche sein den du anschließt,
- 29:20ne es könnte überall wieder die App sein, die sozusagen diesen
- 29:22Port anspricht, ist ja kein Problem, ne aber im groben und
- 29:26ganzen hast du trotzdem immer wieder irgendwie bestimmte
- 29:29Adapter die du anschließt, ne beispielsweise finde ich bei der
- 29:32Identitätsprüfung machst du das ja meistens nicht mit Deiner
- 29:36Banking App von Deiner Bank, sondern mit einer dritten App.
- 29:40Zum Beispiel mit so einem ident verfahren.
- 29:41Weißt du, dann hast du ja dann keine Ahnung wie die Dinger alle
- 29:45immer heißen. So, aber gefühlt gibt es da zig
- 29:48Millionen und dann kannst du dich damit so identifizieren,
- 29:51aber das ist mehr oder weniger dann auch wieder n Adapter der
- 29:54an diesen entsprechenden Port irgendwo angrenzt, ne.
- 29:58Ja, jetzt mit dem Beispiel kann man sich ja denken, OK, das
- 30:01klingt richtig, richtig, fantastisch und auch in der
- 30:04Theorie. Wie ihr das erklärt habt, so,
- 30:07das klingt nach einer coolen Architektur.
- 30:09Die Frage ist, und das haben wir schon mal so n bisschen
- 30:11angeteasert, läuft das immer so? Ja, funktioniert das immer so?
- 30:15Und ja, ich glaub man hat es schon n bisschen gemerkt, wir
- 30:18haben durchblicken lassen, nee funktioniert nicht immer so, nee
- 30:23Leute sind nicht immer so wirklich überzeugt davon, wenn
- 30:25man sowas vorschlägt und die Frage ist ja da jetzt ganz klar
- 30:30warum, ja warum ist das so warum?
- 30:35Ist vor allem also wo ist das Problem?
- 30:38Ja, das ist, fangen wir mal damit an, bevor wir zum Warum
- 30:42kommen, man muss ja erstmal bisschen was lokalisieren, das
- 30:44bleibt wo liegt das Problem und ich finde das Problem liegt sehr
- 30:51selten dabei in dem Architekturkonzept.
- 30:54Klar wir kommen doch dazu, es gibt Fälle wo diese Architektur
- 31:00wirklich nicht Sinn macht. Aber wenn sie Sinn macht und es
- 31:03trotzdem Probleme gibt, da muss man sagen, liegt es oft nicht an
- 31:06der Architektur selbst, sondern daran, wie sie verstanden und
- 31:10umgesetzt wird. Ne.
- 31:12Und das ist genau der.es klingt in der Theorie einfach, es
- 31:17umzusetzen wie du meintest ist schwierig und erfordert sag ich
- 31:21mal auch oftmals wirklich erfahrene Coder und Coderin
- 31:27beziehungsweise ein Mix. Ja, das heißt nicht, dass du
- 31:30jetzt keine Junior Developer dabei haben darfst.
- 31:33Gar nicht. Das heißt das absolut nicht,
- 31:35aber man muss zumindestens n paar Leute haben, die ne gewisse
- 31:39Erfahrung haben in Sachen Architekturen, die auch n
- 31:42bisschen was erlebt haben schon und wissen wie wichtig das ist,
- 31:48es konsequent durchzusetzen und nicht nur in den ersten 2
- 31:52Wochen. Na ja, genau, aber ich find es
- 31:55auf jeden Fall. Das ist so, also können wir
- 31:57eigentlich trotzdem gleich mal direkt kurz thematisieren
- 31:59zumindest also ich hab auf jeden Fall auch schon öfter mal so
- 32:03gehört, so ja hier, klar, da nimmst du die hexagonale
- 32:07Architektur und dann ist alles supi ne tolle Sache so ne so n
- 32:11bisschen sarkastisch halt so, weil dann offensichtlich eben
- 32:15dahinter stand. OK, das ist halt doch nicht geil
- 32:17so nach dem Motto hab ich probiert ist voll voll
- 32:19bescheuert ne und klar. Ist das immer die?
- 32:23Also ich frag mich dann immer, wie oft hast du es probiert,
- 32:25weil das ist find ich immer für mich n wichtiger Punkt du setzt
- 32:30dich ja als Kind auch nicht aufs Fahrrad, fährst einmal los,
- 32:32fällst hin und denkst dir so Alter was ne Kacke ich bin raus
- 32:36ja oder was weiß ich stehst das erste Mal als kleines Kind auf,
- 32:40fällst wieder hin und sagst weißt du was ich krieg den Rest
- 32:43meines Lebens. Durch die Gegend.
- 32:47Macht. Also man muss natürlich Übung
- 32:51reinstecken, klare Sache, aber es kann natürlich auch an
- 32:53unterschiedlichen Dingen liegen und zwar du meintest ja OK, wann
- 32:57lohnt sich es nicht, Gegenfrage oder Gegenreaktion, manchmal ist
- 33:03es ja auch so, dass es so Leute gibt, die sagen, sag mir nicht,
- 33:08was wir tun. Wir nehmen aber auf jeden Fall
- 33:10ne hexagonale Architektur und dann hast du halt auch schon mal
- 33:13n Problem, wo du dann vielleicht Leute davon überzeugst, dass das
- 33:16Kacke ist. Ne, weil es halt eben überhaupt
- 33:18nicht passt. Ne, warum es nicht passt.
- 33:20Gut, das können wir uns noch mal angucken.
- 33:22Dann aber ja, das ist so dieses typische over Engineering, ne,
- 33:25also wie sieht das Projekt aus? Weiß nicht genau, vielleicht
- 33:30wirklich mal NMVP machen, lass mal n ganz kleines
- 33:33Minimalbeispiel machen. Ja, können wir gerne tun, aber
- 33:37erstmal hexagonale Architektur. Ich hab hier schon mal 10 Ports
- 33:40aufgeschrieben, die wir eventuell brauchen und 10
- 33:44weitere, die wir vielleicht brauchen und Adapter hab ich
- 33:47auch schon vorbereitet, weil wir müssen ja verschiedene Sachen
- 33:50dann an die Ports anschließen und verbinden und das ist halt
- 33:53genau der falsche Weg ne ja das ist so Anti jakni hoch 10 ja
- 33:58also dann. Erschlag ich ja quasi schon im
- 34:02Workload alle Coder und Coderin da dran und dann hat schon
- 34:06keiner mehr Bock da drauf und das entspricht auch nicht dem
- 34:10Grundgedanken zu sagen, ich bin flexibel und entkoppelt und ich
- 34:14kann erweitern, reduzieren und anpassen.
- 34:17Nee, das ist ich hau einfach alles rein, was gerade durch
- 34:19meinen Kopf geht und hoffe, dass am Ende irgendwas Cooles
- 34:22rauskommt und kann behaupten ja ich hab ne geile Architektur
- 34:24verwendet, also es lag nicht an mir, dass das gescheitert ist.
- 34:27So ne. Aber ich sag mal so, also selbst
- 34:29wenn es sich lohnt ne und man sagt OK hexagonale Architektur
- 34:33ist ne gute Sache, würde passen dann braucht man sich trotzdem
- 34:36ja nicht direkt hinzustellen und zu sagen so jetzt erstmal 10
- 34:39Ports definieren 20 Interfaces an den Start bringen, so und
- 34:43eigentlich aber noch gar nicht wissen was das System eigentlich
- 34:46wirklich kann. Ne ich glaub das ist n häufiges
- 34:48Problem leider Gottes das hatten wir auch schon öfter mal
- 34:51angesprochen, dass man sich. Manchmal viel zu wenig über
- 34:56darüber Gedanken macht, was eigentlich genau passieren soll
- 34:59im System, teilweise auch geschuldet durch zu wenig
- 35:03Gedanken, in die Tickets geflossen.
- 35:04So was soll eigentlich wirklich gemacht werden, was will der
- 35:08User überhaupt und am Ende hast du irgendein Systemmorloch, wo
- 35:12du dir eigentlich denkst, so was was war eigentlich noch mal hier
- 35:15der Sinn dahinter? Ne also es macht Sinn zu sagen
- 35:18was ist. Ist eigentlich wirklich von
- 35:20unserem System oder von unserer Anwendung von unserem Produkt.
- 35:23Was wird wirklich erwartet? So was ist wirklich der Sinn
- 35:26dahinter und dann kannst du ja ne wie wir auch schon meinten
- 35:29bestimmte Use Cases davon ableiten und dann vielleicht
- 35:32anfangen zu sagen, das könnten mal irgendwann Ports werden,
- 35:36weil das sind ja so Use Cases die sich herauskristallisiert
- 35:39haben, aber lass uns erstmal mit einem anfangen, ne weil.
- 35:43Auch selbst dann, wenn du sagst, hexagonale Architektur lohnt
- 35:46sich ja vor allem auch eigentlich erst dann, wenn du
- 35:49wirklich sagst, OK, wir haben irgendwie ne fachlogik, ne, also
- 35:52die irgendwie wirklich, du hast irgendwie ne Business Logik zu
- 35:55deinem Produkt wo du sagst das ist ne Logik, die verändert sich
- 35:57nicht, dann kannst du überhaupt erst mal sagen, OK, da könnte
- 36:00vielleicht irgendwie ne hexagonale Architektur
- 36:02rausspringen und dann ist noch die Frage, hast du so mehrere
- 36:05Zugangswege, weißt du also auch von außen musst du mehrere
- 36:08Adapter anschließen, es bringt dir ja auch nichts wenn du
- 36:10sagst. Ja gut, wir haben hier n Port,
- 36:13da kommt immer ein Adapter dran und fertig ist die Laube.
- 36:15Weißt du Mhm so dann OK, keine Ahnung 1000 Jahren hast du ne
- 36:20hexagonale Architektur aufgesetzt, aber an jeden Port
- 36:22schließt ein, also wird ein Adapter angeschlossen.
- 36:26Ja, das ist halt n großer Punkt. Wenn jetzt zum Beispiel mein
- 36:29System oder mein Projekt, sag ich mal n einfaches Back End mit
- 36:34so Crude Operation ist und. Da hängt jetzt nur eine
- 36:39Datenbank dran, ne kleiner ne, das ist jetzt wirklich n kleines
- 36:42Projekt und da wird es keine Variation geben, dann brauch ich
- 36:45das nicht machen ja weil dann wenn ich Anpassung mache ist eh
- 36:50immer nur der eine Teil betroffen.
- 36:53Und den muss ich anpassen, wenn es denn in die Richtung geht.
- 36:57Ja, also wenn ich jetzt zum Beispiel ja an der Datenbank was
- 37:01anpasse oder an dem Controller oder was auch immer, dann ist es
- 37:03halt immer diese eine Kette und dann brauch ich das so nicht
- 37:06aufbauen, dann ist das einfach nur Overhead am Ende.
- 37:09Ja. Die du nämlich schon meintest.
- 37:11Wenn ich aber mehrere Schnittstellen hab oder eine
- 37:14Logik halt für verschiedene Außenweltschnittstellen
- 37:18bereitstellen möchte, ja wie dein Bankbeispiel zum Beispiel.
- 37:22Ja, dann, dann kommen wir halt eher in die Richtung und was mir
- 37:28halt auch, weil ich vorhin meinte, dass die Ports so
- 37:31unglaublich wichtig sind. Ich find NN absoluter
- 37:35Stolperstein dabei ist halt auch, dass man genau die Theorie
- 37:39versteht, ja, dass man sagt ja OK, versteh ich ja, dann hab ich
- 37:43Ports und da gehen Adapter dran und dann hab ich das alles
- 37:46entkoppelt easy ja versteh ich. Und dann fang ich an und sag ja
- 37:51gut, dann haben wir jetzt n Port, das ist jetzt n Rest user
- 37:56Controller ne und der kann dann irgendwie über die Userdaten was
- 38:00ändern, abfragen was auch immer immer jetzt zum Beispiel bei dem
- 38:03Bankbeispiel ich bin da jetzt Kunde ne und das ist halt schon
- 38:06wieder genau der falsche Weg zu sagen ja der Port also du
- 38:09definierst jetzt n Port, der heißt Rest user Controller, da
- 38:13ist schon mal da gehen schon mal die Alarmglocken an weil dann.
- 38:17Bist du gedanklich wieder komplett in deiner Restwelt
- 38:19unterwegs und sagst? Ja, wir, wir haben irgendwelche
- 38:22Rest calls und müssen Rest Endpunkte bereitstellen und was
- 38:25auch immer ne und das ist ja überhaupt kein Domain driven
- 38:29Design mehr am Ende und wir haben ja gesagt, im Kern achten
- 38:32wir auf die Domain und das heißt die Domain ist ja eher sowas wie
- 38:36ich hab n Kunde ja und ich hab Kundendaten und so also das ist
- 38:41so das Wording was sich dann. Im Kopf haben muss und nicht
- 38:44rest User Controller der Rest User Controller ist eher schon
- 38:48wieder Richtung Adapter, dann am Ende, dass ich sage ich möchte
- 38:51jetzt meine Rest Schnittstelle an mein Port Kundendaten
- 38:55anschließen und das über Rest. Weißt du also so muss ich das
- 38:59betrachten aber viele verschmelzen Port und Adapter
- 39:03dann nicht auf dem Papier auf dem Papier ist das klar
- 39:06hingeschrieben ne aber wenn es dann Richtung Software geht und
- 39:10Umsetzung Implementierung. Dass sie da denn anfangen, moks
- 39:14zu machen und das nicht klar trennen.
- 39:15Also dass das im Kopf eigentlich nicht klar getrennt ist.
- 39:18Ja, du hast dann eher sowas wie Kunde speichern, Kunde laden
- 39:22oder sowas anstatt n rest user Controller Port ne so nach dem
- 39:25Motto ich mein. Genau, also wirklich das
- 39:27fachliche. Was passiert dahinter?
- 39:29Kurz Daten abfragen beispielsweise.
- 39:32Genau das Ding ist halt. Man könnte sich jetzt
- 39:34hinstellen, sagen ja warte mal aber ist Port Port, ist ja nicht
- 39:36Kern im Kern, soll ja sozusagen diese Business Logik sein und
- 39:39nicht die Technik reingezogen werden, wieso dann in den Ports,
- 39:44wieso darf das da auch nicht sein?
- 39:45Also erstmal hast du ja vom Grundbild her ist ja dieses
- 39:49Hexagon ne wenn du dir dieses noch mal so in den ins ins
- 39:53Gedächtnis rufst. Sind die Kanten ja gehören zum
- 39:55Hexagon ne. Also das ist ja sozusagen, es
- 39:57ist ja ne, alles andere sind die Adapter die von außen dann
- 40:00andocken und alles was außerhalb dieses Hexagons ist.
- 40:05Technik alles was drin ist, keine Technik und demzufolge
- 40:08muss man sich auch vorstellen, dass ja der Kern genauso diese
- 40:12Funktionen nutzen muss oder zur Verfügung stellt, dann im
- 40:14Endeffekt über diesen Port, das heißt der Kern kennt diese
- 40:18Funktionen und der Kern sollte halt keine Technik kennen, so
- 40:20fertig ne, das ist halt der Punkt definitiv und.
- 40:24Da muss man sich dann auch überlegen so kein Port ist nicht
- 40:27n Interface für jede Klasse, sondern es dient halt für einen
- 40:30Use Case am Ende ne so kann man das am am schönsten schneiden.
- 40:34Ich weiß nicht warum ich mir hatte mal n Kollege erzählt, der
- 40:38hieß übrigens auch Tino, war so einer der auch nettesten
- 40:42Menschen muss wohl am Namen liegen weiß ich nicht die so
- 40:46kennenlernen. Durfte bisher.
- 40:48Es gibt n Paar von uns. Aber ich, also es hat jetzt
- 40:53vielleicht nicht hundertprozentig was mit
- 40:54hexagonaler Architektur zu tun, aber ich muss irgendwie immer
- 40:56wieder daran denken, weil er irgendwann auch mal meinte, du
- 40:58hast n einen, wenn du zum Beispiel von außen hast NDTO,
- 41:03das kommt irgendwie in dein System rein, ne und du kannst
- 41:05theoretisch dieses DTO genauso 1 zu 1 weiterverwenden in deinem
- 41:08System an sich macht es ja Sinn so, weil du dir denkst, warum
- 41:12muss ich jetzt noch mal Overhead drauf packen und eigentlich das
- 41:14mehr oder weniger gleiche Objekt noch mal.
- 41:19Duplizieren, anders benennen und dann aber irgendwie dann an
- 41:23einer anderen Stelle verwenden. Und ich fand, eigentlich macht
- 41:27es, also es klingt erstmal so, ja OK, warum sollte man das tun,
- 41:30aber und das ist wirklich interessant wenn du sagst du
- 41:33hast zum Beispiel auf deiner Seite wo du das DTO verwendest
- 41:36ne ich geh jetzt mal extra von Ports und Adaptern weg, da
- 41:39möchtest du noch was hinzufügen. Irgendwie was erweitern und du
- 41:43willst aber noch nicht das komplett in eine gesamte andere
- 41:46Software die dahinter hängt umsetzen?
- 41:49Dann hast du trotzdem irgendwo diese diesen diese Trennung
- 41:52zwischen deinem GTO und deiner Entity sag ich jetzt mal oder
- 41:55deinem deinem Weiß nicht Business Objekt nenn ich es mal.
- 42:00Indem du sozusagen es einmal rüber shiftest.
- 42:02Und du sagst ja zum Beispiel, 5 Attribute kommen auf 5
- 42:05Attribute. Wenn du jetzt hier 6 hast, dann
- 42:07sagst du halt OK 5 von den 6 Attributen kommen auf diese 5
- 42:10Attribute, das heißt du kannst super irgendwas erweitern und
- 42:13wenn du irgendwas erweiterst außen sag ich jetzt mal, musst
- 42:17du es noch nicht innen erweitern, das heißt du kannst
- 42:19Stück für Stück das Ganze aufbauen, du bist halt
- 42:21entkoppelt ne und ich finde das passt irgendwie auch super dazu
- 42:24zu diesem, zu diesem, zu dieser hexagonalen Architektur,
- 42:26irgendwie muss ich mal daran denken.
- 42:28Fand ich auf jeden Fall. Das Gleiche geht natürlich auch
- 42:30in die andere Richtung definitiv.
- 42:32Also du kannst natürlich auch, sag ich mal von nach innen, also
- 42:36innen in deiner fachlichen Logik sozusagen was anpassen und
- 42:39erweitern, möchtest aber noch nicht, dass die Außenwelt sich
- 42:43updaten muss und nicht zwangshaft als zwangsweise oder
- 42:46nur n Teil. Ja, also da, du bist halt
- 42:49einfach entkoppelt und frei, das ist n riesengutes Beispiel was
- 42:51du da n riesengutes Beispiel. Es ist schon.
- 42:54Riesen Superlative heute sag es ist das Beste, es ist das beste
- 43:00und deswegen finde ich ist das auch absolut sinnvoll.
- 43:05Ne man kommt oft an den Punkt, dass man sagt Boah jetzt
- 43:08wirklich noch ne DTO klasse oder ne Datenstruktur dafür.
- 43:13Es ist doch genau das gleiche, kann ich nicht einfach das
- 43:16interne Modell rausgeben, das passt doch ja nee.
- 43:20Eben nicht beruhigt diese diese, diese sag ich mal.
- 43:23Abstraktion einbauen ja, diese Entkopplung, um einfach später
- 43:27diese Möglichkeit zu haben und das Ganze fördert auch deine
- 43:30Testbarkeit am Ende, was für uns beide auch immer n riesen Punkt
- 43:33ist, den wir predigen, weil das vor allem n riesen Punkt sein
- 43:36sollte. Es ist halt auch rediger was
- 43:38Alter ich. Es ist ja auch unfassbar wichtig
- 43:42ne hohe Testbarkeit zu ermöglichen und die Architektur
- 43:45ist sehr gut geeignet dafür, weil was wir ja jetzt sehen ist,
- 43:48wir haben ne interne Business Logik die definiert also unsere
- 43:52Architektur definiert wie man sie ansprechen kann und welche
- 43:56Daten sie anfordern kann, sozusagen nach innen und außen
- 43:59und wie ich ja anfangs meinte. Genau in diesem Zuge muss auch
- 44:03deine deine deine Software Abhängigkeit gerichtet sein und
- 44:08damit schaffe ich es dann halt beispielsweise auch wirklich
- 44:11gute Tests dafür zu schreiben, weil was man ja jetzt ganz klar
- 44:15sieht. Ich hab n Port und meine
- 44:17Business Logik erwartet, zum Beispiel Daten auf diesen Port
- 44:21die verarbeitet werden sollen und gibt Daten zurück.
- 44:24So und jetzt kann ich ja ganz einfach sagen Hey ich hab n
- 44:28Adapter mit der echten Außenwelt aber.
- 44:31Aber ich kann auch genauso mir nen eigenen Adapter schreiben
- 44:33für meine Testwelt und den Andocken sag ich mal ne und
- 44:38schon hab ich ne super testbarkeit an der Stelle.
- 44:41Ja, definitiv ohne die echte Außenwelt kennen zu müssen.
- 44:45Ich meine, wie nervig ist das, wenn du kennt, jeder der Tests
- 44:49schreibt kennt das, denkt sich so EY ist n Judith Test ist
- 44:51wirklich nur reine Logik, super easy wie geil kann man das
- 44:54Abtesten und dann kommst du irgendwann an n Test weil
- 44:56denkst. Ah, da hängt jetzt die Datenbank
- 44:58mit dran. Wie mach ich das?
- 44:59Ah, da muss ich ne Menge wegmocken ja noch n Service hier
- 45:02noch n Service ah OK ich hab jetzt also ich hab die Datenbank
- 45:05ich hab n Service ich hab noch n Service ah und da geht noch mal
- 45:08NHTTP Call irgendwie raus und du denkst dir so ah da muss ich
- 45:11alles wegmocken oh das wird so richtig scheiße und das ist der
- 45:14Punkt wo du dir denkst ah vielleicht könnte man noch mal n
- 45:17bisschen was an dem ganzen Kram ändern weil wenn du dir denkst
- 45:20das ist richtig scheiße testbar da geht noch was.
- 45:26Das auf jeden Fall. Das ist halt, das ist halt n
- 45:28unglaublich guter Punkt und richtig guter Pluspunkt, vor
- 45:32allem bei dieser Architektur, weswegen wir sie auch wirklich
- 45:36mögen. Ja, also sagen wir mal so, wenn
- 45:39jetzt jemand sich fragt zum Beispiel ja, OK, ich guck euch
- 45:43öfter mal auf Twitch zu, da macht ihr mal so kleine Mini
- 45:46Projekte, hab ich ja jetzt noch nichts von der hexagonalen
- 45:49Architektur gesehen. Und genau das haben wir ja auch
- 45:52argumentiert hier verdammt Schande über unser Haus, wir
- 45:55müssen es machen, nein, weil das halt auch Mini Projekte sind, wo
- 45:58es dann halt einfach keinen Sinn macht das so aufzubauen.
- 46:02Aber liebe Zuhörer, lieber Zuhörer, wenn du sagst Ey als
- 46:06Community Projekt, lass uns das doch mal angucken, lass uns das
- 46:09mal zusammen umsetzen, lass mal die Pro und Cons daran erkennen.
- 46:14Dann kann man das auch sehr gerne machen und sich mal n
- 46:16Beispiel überlegen. Ich denke das gibt auf jeden
- 46:18Fall richtig Mehrwert. Hätten wir Bock drauf oder Fabi
- 46:21das mal so als kleiner Appell kann man gerne mal machen und
- 46:26eine Sache noch zu dem Kollegen mit auch mit dem Namen Tino Ne,
- 46:30da muss ich jetzt einfach kurz mal auf topic ne Story erzählen,
- 46:33ich dachte ja immer mein Leben lang, dass der Name recht selten
- 46:37ist, weil ich komme aus einer Kleinstadt und da kannte ich nur
- 46:40einen anderen Tino ja. Schon viel.
- 46:43Dann bin ich so, dann sind wir, haben wir ja zusammen studiert.
- 46:46In der Stadt gab es noch mal einen OK, das waren dann schon
- 46:48mal 2 andere in meinem bisherigen Leben, und irgendwie
- 46:51dachte ich mir immer so, ja, der ist es scheint wirklich selten
- 46:54zu sein, der Name ne und ich weiß noch, da waren wir
- 46:58irgendwann mal mit Freunden auf dem Wochenendtrip und saßen so
- 47:00im Zug und da kam das Thema auf ja, dass n Freund meinte ja dein
- 47:06Name ist wirklich selten, ich hab noch nie n anderen Kino
- 47:09kennengelernt, ja. Und auf einmal dreht sich hinter
- 47:13also auf der Bank dahinter jemand um und sagt ja, also ich
- 47:16heiße auch Tino und dann hä, das gibt's ja nicht, das ist ja
- 47:19krass und der da drüben heißt übrigens auch Tino, Nee, komm,
- 47:23jetzt verarscht du ihn. Und dann saß noch ein dritter
- 47:26Tino in dem gleichen Abteil drin, und die haben alle ihren
- 47:28Ausweis gezeigt und ich auch, ich dachte okay, das ist krass,
- 47:31das sind mehr Tinos von einem Waggon als ich mein ganzes Leben
- 47:35kennengelernt habe. Aber dann waren alle auch
- 47:37versammelt in einem Raum, oder? Ja, alle in dem gleichen ja,
- 47:42also das also die also. Alle Deutschen waren dann dort.
- 47:47Na, außer die 2, die ich vorher kennengelernt hatte, die waren
- 47:49nicht mehr. Also es gibt dann insgesamt 7
- 47:51Ah, OK. Ja, ich glaub mehr gibt es noch
- 47:53nicht. Pipapo o.
- 47:57K. Gut auf.
- 47:58Jeden Fall so am Ende der Folge. Ja, auf jeden Fall so
- 48:01zusammenfassend ja, um vielleicht noch mal so n tollen
- 48:05Spruch zu bringen, um das ganze Thema sanft zu fassen.
- 48:08Mach es nicht kaputt. Jetzt kommt mal ne geile
- 48:10folgendes hier. Wenn man sagt, so hexagonale
- 48:14Architektur ne in einer guten Architektur, ja wenn sie
- 48:18hexagonal ist, kann man Technik löschen, ja ohne dass man
- 48:23Fachlogik neu schreiben muss, so als kleiner Merksatz vielleicht
- 48:26am Ende. Ja, schön gut, gut hu.
- 48:29Ich hatte ein bisschen Angst, aber das war gut, Fabi, das war
- 48:31sehr gut da, so können wir es stehen lassen, jetzt am Ende,
- 48:33das heißt, mir bleibt nur noch übrig, mich bei dir zu bedanken
- 48:36für die Folge, es hat sehr, sehr viel Spaß gemacht, sehr sehr
- 48:39cooles Thema und noch mal in deine Richtung liebe
- 48:43Zuhörerinnen, lieber Zuhörer, wenn du fragen hast.
- 48:46Anmerkung Erfahrung, vor allem auch zu dem Thema, dann lass es
- 48:50uns bitte wissen, schreib uns eine Mail und oder meld dich auf
- 48:53dem Discord, wo du möchtest. Du kannst uns auf vielen
- 48:56Plattformen erreichen, wir würden uns super super freuen
- 48:58darüber und gehen gerne in den Austausch mit dir.
- 49:01Alle links in den Shownotes wie immer.
- 49:03Und wenn dir dieser Podcast gefällt oder du dir jetzt so
- 49:06denkst, ey cool, jetzt sprechen Sie über Architektur.
- 49:09Ja, das ist so n so n neuer Bereich, den sie jetzt anfangen
- 49:12im Podcast richtig geil, da lass doch gerne ne Bewertung da, das
- 49:16würde uns mega freuen empfiehl den Podcast weiter wenn du
- 49:19denkst hey hier mein Team ne wir sind ja gerade so am überlegen
- 49:22Architekturtechnisch die müssen das mal hören dann ruhig
- 49:25weiterempfehlen. Würde uns mega freuen und.
- 49:28So die Kirsche auf der Sahne oder irgendwie, so sagt man das
- 49:32doch, wäre natürlich in den Shownotes findest du n
- 49:34spendling, wenn du uns damit unterstützen würdest.
- 49:36Vielen vielen Dank, möchtest natürlich nicht, würdest vielen
- 49:41vielen Dank dafür und ansonsten hören wir uns alle beim nächsten
- 49:45Mal wieder. Habt ne schöne Zeit, startet
- 49:49noch weiterhin gut ins neue Jahr und bis dahin.
- 49:53Eure Kunden weiß gemeinsam besser.
- 49:58Ich habe jetzt richtig crock ein neues Creacle Factor.
- 50:00Genau, ich habe ja schon mal so was, macht die ID auf.
- 50:05Ich mache ja schon.