{"id":3623,"date":"2023-06-13T13:29:49","date_gmt":"2023-06-13T13:29:49","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/the-power-of-hexagonal-architecture\/"},"modified":"2024-09-10T07:51:21","modified_gmt":"2024-09-10T07:51:21","slug":"styrken-ved-sekskantet-arkitektur","status":"publish","type":"post","link":"https:\/\/thecodest.co\/da\/blog\/the-power-of-hexagonal-architecture\/","title":{"rendered":"Styrken ved sekskantet arkitektur"},"content":{"rendered":"<p>I denne omfattende guide vil vi dykke ned i nuancerne af <strong>Sekskantet arkitektur<\/strong>og udforsker dens definition, komponenter og historie. Vi vil drage sammenligninger mellem <strong>Sekskantet arkitektur<\/strong> og andre popul\u00e6re arkitekturm\u00f8nstre for at fremh\u00e6ve dets unikke styrker. Vi vil ogs\u00e5 unders\u00f8ge dets kritiske rolle i dom\u00e6nedrevet design (DDD) og <a href=\"https:\/\/thecodest.co\/da\/dictionary\/microservices\/\">mikrotjenester<\/a>som f\u00e5r stadig st\u00f8rre betydning i den moderne verden. <a href=\"https:\/\/thecodest.co\/da\/blog\/8-key-questions-to-ask-your-software-development-outsourcing-partner\/\">softwareudvikling<\/a>.<\/p>\n<h2>1. Introduktion til sekskantet arkitektur<\/h2>\n<p>I det dynamiske landskab af<strong> <a href=\"https:\/\/thecodest.co\/da\/dictionary\/software-architecture\/\">software-arkitektur<\/a><\/strong>, <strong>Sekskantet arkitektur<\/strong>ogs\u00e5 kendt som Ports and <strong>M\u00f8nster for adaptere<\/strong>har vist sig at v\u00e6re en formidabel udfordrer, der gradvist udfordrer normerne for <strong>traditionel lagdelt arkitektur<\/strong>.<\/p>\n<p>Drevet af behovet for et arkitektonisk design, der kunne sikre nem testning og \u00f8get vedligeholdelsesevne, <strong>Sekskantet arkitektur<\/strong> blev udt\u00e6nkt. Dens mission: at levere robuste <strong>Software-applikationer<\/strong> uhindret af omverdenens forviklinger og lunefuldhed.<\/p>\n<p>I l\u00f8bet af denne artikel vil vi begive os ud p\u00e5 en rejse gennem historien om <strong>Sekskantet arkitektur<\/strong> - en arkitektur, der befinder sig i krydsfeltet mellem enkelhed og kraft. Vi vil afd\u00e6kke dens historie, struktur og principper og yderligere sammenligne den med andre <strong>arkitektoniske m\u00f8nstre<\/strong>. Vi vil unders\u00f8ge dets potentiale til at h\u00f8jne kvaliteten af softwareapplikationer og reducere den stigende m\u00e6ngde af teknisk g\u00e6ld, som plager softwarebranchen.<\/p>\n<h2>2. Definition af sekskantet arkitektur<\/h2>\n<p>Det er kernen i det, <strong>Sekskantet arkitektur<\/strong>eller Ports and <strong>Arkitektur for adaptere<\/strong>er et designm\u00f8nster, der bygger p\u00e5 adskillelse af bekymringer. Det opdeler en applikation i to prim\u00e6re sektioner: den indvendige og den udvendige.<\/p>\n<p>Indersiden, ogs\u00e5 kaldet applikationskernen, huser <strong>Forretningslogik<\/strong> og dom\u00e6neobjekter - kernen af v\u00e6rdi i din software. Denne indre helligdom forbliver l\u00f8srevet fra eksterne p\u00e5virkninger og bevarer dermed integriteten af den <strong>Forretningslogik<\/strong> og dom\u00e6nemodellen.<\/p>\n<p>Ydersiden er p\u00e5 den anden side de eksterne systemers rige - fra <strong>brugergr\u00e6nseflade<\/strong> til databaseadgang - som interagerer med applikationskernen. Disse interaktioner styres gennem en mekanisme af porte og adaptere, der sikrer en ren adskillelse mellem <strong>Applikationskerne<\/strong> og dets eksterne akt\u00f8rer.<\/p>\n<h2>3. Den sekskantede arkitekturs historie<\/h2>\n<p><strong>Sekskantet arkitektur<\/strong> er skabt af Alistair Cockburn, en vision\u00e6r, der f\u00f8rst formulerede dette koncept som en reaktion p\u00e5 begr\u00e6nsningerne i traditionelle <strong>lagdelt arkitektur<\/strong>. Det blev designet til at skabe en teknologi-agnostisk <strong>Dom\u00e6nelag<\/strong> der isolerer kernen <strong>Forretningslogik<\/strong> fra ydre p\u00e5virkninger, som f.eks. <strong>brugergr\u00e6nseflade <a href=\"https:\/\/thecodest.co\/da\/dictionary\/what-is-code-refactoring\/\">Kode<\/a><\/strong> og databaseadgang.<\/p>\n<p>I traditionelle <strong>lagdelt arkitektur<\/strong>\u00c6ndringer i \u00e9t lag kunne smitte af p\u00e5 andre lag og f\u00f8re til utilsigtede konsekvenser. Desuden blev testning kompliceret af indviklede afh\u00e6ngigheder mellem lagene.<\/p>\n<p><strong>Sekskantet arkitektur<\/strong> opstod som en l\u00f8sning, der tilb\u00f8d en model, hvor \u00e6ndringer i en del af systemet ikke ville forstyrre de andre dele. I bund og grund fors\u00f8gte den at g\u00f8re <strong>Forretningslogik<\/strong> uafh\u00e6ngig af, om den blev tilg\u00e5et via en <a href=\"https:\/\/thecodest.co\/da\/blog\/find-your-ideal-stack-for-web-development\/\">web<\/a> gr\u00e6nseflade, en <strong>REST <a href=\"https:\/\/thecodest.co\/da\/blog\/compare-staff-augmentation-firms-that-excel-in-api-team-staffing-for-financial-technology-projects\/\">API<\/a><\/strong>eller endda en <strong>Kommandolinje<\/strong>.<\/p>\n<h2>4. Komponenter i sekskantet arkitektur<\/h2>\n<p><strong>Sekskantet arkitektur<\/strong>der er opkaldt efter sin sekskantede illusion i diagrammatiske fremstillinger, best\u00e5r af tre kernekomponenter: den <strong>Dom\u00e6nemodel<\/strong>, porte (prim\u00e6re og sekund\u00e6re) og adaptere (prim\u00e6re og sekund\u00e6re).<\/p>\n<p>Den<strong> Dom\u00e6nemodel<\/strong> er hjertet i softwareapplikationen, der indkapsler <strong>forretningsregler<\/strong> og kernelogik. Dom\u00e6neobjekterne i denne model indeholder specifikke forretningsv\u00e6rdier og -regler.<\/p>\n<p>Dern\u00e6st har vi portene, ledningerne mellem <strong>Dom\u00e6nemodel<\/strong> og omverdenen. <strong>Prim\u00e6re porte<\/strong> udstille applikationens <strong>Forretningslogik<\/strong>og fungerer som gateway til applikationskernen. De repr\u00e6senterer de use cases, som applikationen underst\u00f8tter.<\/p>\n<p><strong>Sekund\u00e6re porte<\/strong>er p\u00e5 den anden side udadvendte. De viser gr\u00e6nseflader, som applikationen har brug for fra omverdenen, som f.eks. persistenslag eller eksterne tjenester.<\/p>\n<p>Til sidst har vi adapterne, som fungerer som overs\u00e6ttere mellem <strong>Dom\u00e6nemodel<\/strong> og den ydre verden. De konverterer <a href=\"https:\/\/thecodest.co\/da\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">data<\/a> fra det format, der bruges af <strong>eksterne systemer<\/strong> til det format, der bruges af <strong>Forretningslogik<\/strong>og omvendt.<\/p>\n<h2>5. Porte og adaptere<\/h2>\n<p><strong>Porte og adaptere<\/strong> danner bro mellem <strong>Applikationskerne<\/strong> og de eksterne akt\u00f8rer. De prim\u00e6re porte repr\u00e6senterer de business use cases, som applikationen udstiller, og som giver de eksterne akt\u00f8rer mulighed for at interagere med applikationen. T\u00e6nk p\u00e5 dem som servicegr\u00e6nsefladerne i din <strong>Forretningslag<\/strong>.<\/p>\n<p>Sekund\u00e6re porte er p\u00e5 den anden side gr\u00e6nseflader, som din applikation har brug for fra omverdenen. Det kan v\u00e6re tjenester som databaseadgang, <a href=\"https:\/\/thecodest.co\/da\/dictionary\/web-services\/\">webtjenester<\/a>eller endda tidstjenester. De eksponerer det, som applikationen har brug for, uafh\u00e6ngigt af teknologi eller leverand\u00f8rspecifikke egenskaber.<\/p>\n<p>Adaptere er de fysiske manifestationer af disse porte. De overs\u00e6tter data fra det format, der bruges af <strong>Forretningslogik<\/strong> til det format, der bruges af de eksterne akt\u00f8rer, og omvendt. Disse adaptere kan v\u00e6re teknologispecifikke adapterkonverteringer til REST-API'er, SQL-databaser eller beskedsystemer, men de kan ogs\u00e5 v\u00e6re batch-scripts eller <strong>brugergr\u00e6nseflade<\/strong> kode. Adapterne danner gr\u00e6nsen for applikationen og g\u00f8r det muligt for applikationen at v\u00e6re teknologi-agnostisk.<\/p>\n<h2>6. Prim\u00e6re og sekund\u00e6re porte og adaptere<\/h2>\n<p>Prim\u00e6re porte repr\u00e6senterer de operationer, som vores program kan udf\u00f8re - de kommandoer, som vores kernedom\u00e6ne kan acceptere. De er ofte implementeret som gr\u00e6nseflader i sprog som <a href=\"https:\/\/thecodest.co\/da\/blog\/top-programming-languages-to-build-e-commerce\/\">Java<\/a>og definerer, hvilke operationer applikationen tilbyder.<strong>Prim\u00e6re adaptere<\/strong>er derfor implementeringer af disse gr\u00e6nseflader for specifikke eksterne akt\u00f8rer.<\/p>\n<p>P\u00e5 den anden side er sekund\u00e6re porte gr\u00e6nseflader, som kernedom\u00e6net bruger til at interagere med omverdenen. Det kan v\u00e6re gr\u00e6nseflader til at bevare dom\u00e6neobjekter eller sende notifikationer. <strong>Sekund\u00e6re adaptere<\/strong> er de faktiske implementeringer af disse gr\u00e6nseflader - en <strong>SQL-database<\/strong> adapter eller en adapter til e-mailnotifikationer, for eksempel.<\/p>\n<p>Sammen kan <strong>prim\u00e6re og sekund\u00e6re porte og adaptere<\/strong> danner en fleksibel, modul\u00e6r gr\u00e6nse omkring applikationen, der adskiller <strong>Dom\u00e6nelogik<\/strong> fra tekniske bekymringer. De h\u00e5ndh\u00e6ver en klar adskillelse af ansvarsomr\u00e5der og giver mulighed for, at forskellige dele af systemet kan udvikle sig uafh\u00e6ngigt af hinanden.<\/p>\n<h2>7. Afh\u00e6ngighedsregel og inversion af afh\u00e6ngighed<\/h2>\n<p>Afh\u00e6ngighedsreglen er et grundl\u00e6ggende princip i <strong>Sekskantet arkitektur<\/strong> der siger, at afh\u00e6ngigheder skal pege indad mod applikationens kerne. Kernen i applikationen er ikke afh\u00e6ngig af nogen bestemt database, brugergr\u00e6nseflade eller andre eksterne instanser.<\/p>\n<p>Dette princip h\u00e6nger t\u00e6t sammen med <strong>Princippet om inversion af afh\u00e6ngighed<\/strong> (DIP), et af SOLID-principperne for objektorienteret design. DIP siger, at moduler p\u00e5 h\u00f8jt niveau (<strong>Forretningslogik<\/strong> eller <strong>Dom\u00e6nelag<\/strong> b\u00f8r ikke afh\u00e6nge af moduler p\u00e5 lavt niveau (som databaseadapter). I stedet b\u00f8r begge v\u00e6re afh\u00e6ngige af abstraktioner. Denne omvending af afh\u00e6ngigheder g\u00f8r det muligt at isolere h\u00f8jniveaumodulerne fra \u00e6ndringer i lavniveaumodulerne, hvilket fremmer et design, hvor <strong>Forretningslogik<\/strong> driver den overordnede arkitektur.<\/p>\n<h2>8. Kortl\u00e6gning<\/h2>\n<p>Kortl\u00e6gning er en vigtig proces i <strong>Sekskantet arkitektur<\/strong>hvor en teknologispecifik adapter konverterer data fra det format, der bruges af <strong>eksterne systemer<\/strong> til et format, som vores <strong>Dom\u00e6nelag<\/strong> kan forst\u00e5. Denne kortl\u00e6gning letter overs\u00e6ttelsen mellem applikationens interne og eksterne repr\u00e6sentationer af data.<\/p>\n<p>For eksempel, n\u00e5r en HTTP-anmodning kommer ind i vores applikation fra en ekstern gr\u00e6nseflade som en <strong>REST API<\/strong>skal foresp\u00f8rgselsdataene overs\u00e6ttes fra JSON til dom\u00e6neobjekter, som applikationen kan bruge. Denne overs\u00e6ttelse er adapternes ansvar.<\/p>\n<p>Omvendt vil adapterne konvertere dom\u00e6neobjekterne tilbage til JSON, n\u00e5r applikationen skal sende et svar. Det g\u00f8r det muligt for kerneapplikationen at forblive uvidende om detaljerne i den eksterne verden og samtidig sikre, at den kan fortolke indg\u00e5ende data korrekt og formatere udg\u00e5ende data. <\/p>\n<h2>9. Fordele ved sekskantet arkitektur<\/h2>\n<p><strong>Sekskantet arkitektur<\/strong> giver et v\u00e6ld af fordele, som i h\u00f8j grad kan tilskrives afkoblingen af softwareapplikationer fra deres eksterne elementer og den klare afgr\u00e6nsning mellem de forskellige dele af et system.<\/p>\n<p>En af de grundl\u00e6ggende fordele er adskillelsen af bekymringer, som fremmer kodens vedligeholdelighed og l\u00e6sbarhed. Afkoblingen af kernen <strong>Forretningslogik<\/strong> fra <strong>verden udenfor<\/strong> giver mulighed for \u00e6ndringer i teknologispecifikke adaptere, databaser og <strong>brugergr\u00e6nseflader<\/strong> uden at \u00e6ndre p\u00e5 kernen <strong>Forretningslogik<\/strong>.<\/p>\n<p><strong>Sekskantet arkitektur<\/strong> udm\u00e6rker sig ogs\u00e5 inden for testbarhed. Arkitekturens isolering af eksterne afh\u00e6ngigheder g\u00f8r det muligt for udviklere at k\u00f8re automatiserede regressionstests og skrive <strong>Automatiserede testsuiter<\/strong> lettere. Denne isolering forbedrer applikationens modstandsdygtighed, da \u00e6ndringer i en komponent ikke vil p\u00e5virke de andre negativt.<\/p>\n<p>Desuden underst\u00f8tter arkitekturen flere adaptere til den samme port, hvilket \u00e5bner d\u00f8ren for flere adaptere til den samme sekund\u00e6re port. Denne fleksibilitet g\u00f8r det muligt for applikationen at interagere med forskellige typer databaser eller underst\u00f8tte forskellige <strong>brugergr\u00e6nseflade<\/strong> platforme.<\/p>\n<h2>10. Vedligeholdelsesevne<\/h2>\n<p>Inden for softwareudvikling er vedligeholdelsesevne ofte en eftertragtet egenskab, men det er en egenskab, som traditionelle arkitektoniske stilarter kan have sv\u00e6rt ved at tilbyde. <strong>Sekskantet arkitektur<\/strong> skiller sig ud her med sin st\u00e6rke v\u00e6gt p\u00e5 vedligeholdelighed.<\/p>\n<p>Ved at fokusere p\u00e5 adskillelse af bekymringer, <strong>Sekskantet arkitektur<\/strong> sikrer, at \u00e6ndringer i \u00e9n del af programmet ikke smitter af p\u00e5 andre dele. Denne egenskab hj\u00e6lper med at reducere den tid og indsats, der bruges p\u00e5 at forst\u00e5 og fejlfinde koden.<\/p>\n<p>Derudover tilskynder arkitekturen til genbrug af kode ved at fremme et design, hvor kernen<strong> Forretningslogik<\/strong> er isoleret fra de specifikke teknologier, der bruges til at drive applikationen. Denne afkobling g\u00f8r det muligt for udviklere at udskifte, opgradere eller refaktorere <strong>eksterne gr\u00e6nseflader<\/strong> uden at p\u00e5virke kernelogikken, hvilket reducerer risikoen for at introducere fejl.<\/p>\n<h2>11. Reduktion af teknisk g\u00e6ld<\/h2>\n<p>Teknisk g\u00e6ld, som er et stort problem inden for softwareudvikling, henviser til de fremtidige omkostninger ved refaktorering og rettelse af genveje og hacks i koden. <strong>Sekskantet arkitektur<\/strong> tilbyder en proaktiv tilgang til at mindske en s\u00e5dan g\u00e6ld.<\/p>\n<p>Ved at muligg\u00f8re en klar adskillelse mellem kernen <strong>Forretningslogik<\/strong> og <strong>eksterne komponenter<\/strong>, <strong>Sekskantet arkitektur<\/strong> reducerer sandsynligheden for sammenflettet kode, der kan give hovedpine ved vedligeholdelse og \u00f8ge den tekniske g\u00e6ld. Arkitekturens iboende vedligeholdelsesevne og testbarhed spiller ogs\u00e5 en rolle i at reducere den tekniske g\u00e6ld, da de hj\u00e6lper med at forhindre indf\u00f8relsen af fejl og letter refaktoriseringsindsatsen.<\/p>\n<p>Desuden er evnen til <strong>Sekskantet arkitektur<\/strong> til at underst\u00f8tte \u00e6ndringer i infrastrukturen uden at kr\u00e6ve \u00e6ndringer i <strong>Forretningslogik<\/strong> giver en beskyttende buffer mod teknisk g\u00e6ld. Denne evne g\u00f8r det muligt for teams at tilpasse sig \u00e6ndringer i krav eller teknologier uden at skulle omskrive store dele af applikationen.<\/p>\n<h2>12. Sekskantet arkitektur i praksis<\/h2>\n<p>I praksis, <strong>Sekskantet arkitektur<\/strong> giver en struktureret tilgang til softwareudvikling. Den sekskantede gr\u00e6nse omkring kerneapplikationen giver en klar afgr\u00e6nsning af, hvor applikationen slutter, og hvor <strong>verden udenfor<\/strong> begynder.<\/p>\n<p>Adapterne fungerer som gatekeepere, der overs\u00e6tter anmodninger fra eksterne akt\u00f8rer til en form, som kerneapplikationen kan forst\u00e5, og vice versa. P\u00e5 den m\u00e5de sikrer de, at kerneapplikationen forbliver agnostisk over for detaljerne i verden udenfor, uanset om det er en database, en <strong>ekstern API<\/strong>eller en <strong>brugergr\u00e6nseflade<\/strong>.<\/p>\n<h2>13. Dom\u00e6nedrevet design (DDD)<\/h2>\n<p>Domain-Driven Design (DDD) er en softwareudviklingsmetode, der prioriterer de centrale forretningskoncepter, eller de <strong>Dom\u00e6nelogik<\/strong>som den prim\u00e6re drivkraft i designet. Denne metode stemmer bem\u00e6rkelsesv\u00e6rdigt godt overens med <strong>Sekskantet arkitektur<\/strong>, som ogs\u00e5 understreger vigtigheden af <strong>Forretningslogik<\/strong> og den <strong>Dom\u00e6nemodel<\/strong> i arkitekturen.<\/p>\n<p>I forbindelse med <strong>Sekskantet arkitektur<\/strong>DDD sikrer, at applikationens h\u00f8jniveaumoduler - dom\u00e6nelagene - er uafh\u00e6ngige af de eksterne elementer som f.eks. <strong>brugergr\u00e6nseflade<\/strong> eller databasen. Denne uafh\u00e6ngighed sikres af porte og adaptere, som afsk\u00e6rmer dom\u00e6nelaget fra de specifikke forhold i databasen.<strong> eksterne systemer<\/strong>og dermed g\u00f8re det muligt for<strong> Dom\u00e6nelogik<\/strong> til at udvikle sig uafh\u00e6ngigt.<\/p>\n<p>Desuden, <strong>Sekskantet arkitektur<\/strong> supplerer DDD's strategiske designprincipper, herunder begrebet afgr\u00e6nsede kontekster. Hver afgr\u00e6nset kontekst i DDD kan forestilles som en sekskant i <strong>Sekskantet arkitektur<\/strong>med dom\u00e6nemodellen som kerne og <strong>Porte og adaptere<\/strong> der fungerer som gr\u00e6nser.<\/p>\n<h2>14. Mikroservices<\/h2>\n<p>Microservices, en anden moderne arkitektonisk stil, kan have stor gavn af <strong>Sekskantet arkitektur<\/strong>. Den decentrale karakter af mikrotjenester - hvor hver tjeneste indkapsler en specifik forretningskapacitet - stemmer fint overens med indkapslingen af <strong>Forretningslogik<\/strong> inden for sekskantens kerne.<\/p>\n<p>Ligesom hvordan hver <a href=\"https:\/\/thecodest.co\/da\/blog\/exploring-microservice-based-frontend-architecture\/\">Mikroservice<\/a> skal v\u00e6re l\u00f8st koblet sammen med andre, hver sekskant i <strong>Sekskantet arkitektur<\/strong> er ogs\u00e5 isoleret fra andre og kommunikerer kun gennem de definerede porte og adaptere. Det g\u00f8r det muligt for hver mikrotjeneste at have sin egen <strong>Sekskantet arkitektur<\/strong>hvilket resulterer i en samling af autonome, l\u00f8st koblede tjenester.<\/p>\n<p>Isolationen, der leveres af <strong>Sekskantet arkitektur<\/strong> kan v\u00e6re s\u00e6rlig nyttig, n\u00e5r man skal h\u00e5ndtere kompleksiteten og den distribuerede karakter af mikrotjenester. Ved at isolere <strong>kerneforretningslogik<\/strong> fra den ydre verden, <strong>Sekskantet arkitektur<\/strong> sikrer, at <strong>Forretningslogik<\/strong> forbliver intakt, uanset \u00e6ndringer i andre tjenester eller <strong>eksterne systemer<\/strong>.<\/p>\n<h2>15. Sammenligning af den sekskantede arkitektur med andre arkitekturer<\/h2>\n<p>Den m\u00e5de, software er designet p\u00e5, kan have stor indflydelse p\u00e5, hvordan den udvikler sig over tid. At sammenligne <strong>Sekskantet arkitektur<\/strong> til andre arkitekturer giver <a href=\"https:\/\/thecodest.co\/da\/blog\/why-us-companies-are-opting-for-polish-developers\/\">os<\/a> en dybere forst\u00e5else af dens styrker og potentielle afvejninger.<\/p>\n<h2>16. Sekskantet arkitektur vs. lagdelt arkitektur<\/h2>\n<p><strong>Lagdelt arkitektur <\/strong>er en traditionel <strong>arkitektonisk m\u00f8nster<\/strong> der strukturerer en applikation i logiske lag - ofte pr\u00e6sentations-, forretnings- og dataadgangslag. Den st\u00f8rste ulempe ved dette m\u00f8nster er, at det tilskynder til en st\u00e6rk afh\u00e6ngighed mellem lagene, hvilket f\u00f8rer til en situation, hvor \u00e6ndringer i et lag kan smitte af p\u00e5 hele applikationen.<\/p>\n<p>I mods\u00e6tning hertil, <strong>Sekskantet arkitektur<\/strong> minimerer s\u00e5danne afh\u00e6ngigheder. I stedet for lag har den en <strong>Applikationskerne<\/strong> omgivet af udskiftelige adaptere. \u00c6ndringer i en databaseserver vil f.eks. kun p\u00e5virke den tilsvarende adapter og efterlade <strong>Applikationskerne<\/strong> og andre adaptere uber\u00f8rt.<\/p>\n<h2>17. Sekskantet arkitektur vs. ren arkitektur<\/h2>\n<p><strong>Ren arkitektur<\/strong>, en anden <strong>arkitektonisk m\u00f8nster<\/strong>deler mange ligheder med <strong>Sekskantet arkitektur<\/strong>. De l\u00e6gger begge v\u00e6gt p\u00e5 adskillelse af bekymringer, sigter mod at isolere kernen <strong>forretningsregler<\/strong> fra eksterne detaljer, og hold dig til <strong>Princippet om inversion af afh\u00e6ngighed<\/strong>.<\/p>\n<p>Men.., <strong>Sekskantet arkitektur<\/strong> fokuserer mere p\u00e5, hvordan applikationen interagerer med <strong>udenfor<\/strong> verden ved hj\u00e6lp af porte og adaptere, mens <strong>Ren arkitektur<\/strong> giver en mere detaljeret struktur for de indre lag i arkitekturen. Med andre ord, <strong>Ren arkitektur<\/strong> kan ses som et supers\u00e6t af <strong>Sekskantet arkitektur<\/strong>med yderligere vejledning i, hvordan man organiserer applikationens interne struktur.<\/p>\n<h2>18. Sekskantet arkitektur vs. l\u00f8g-arkitektur<\/h2>\n<p><strong>L\u00f8g-arkitektur<\/strong> er en anden arkitektonisk stil, der har til form\u00e5l at isolere <strong>kerneforretningslogik<\/strong> fra <strong>eksterne gr\u00e6nseflader<\/strong> og infrastruktur. Den har flere koncentriske lag med dom\u00e6nemodellen i midten, og hvert lag kan kun afh\u00e6nge af lagene indeni.<\/p>\n<p>Selv om de har et f\u00e6lles m\u00e5l, har Hexagonal og <strong>L\u00f8g-arkitektur <\/strong>opn\u00e5 det p\u00e5 lidt forskellige m\u00e5der. <strong>L\u00f8g-arkitektur<\/strong> l\u00e6gger stor v\u00e6gt p\u00e5 afh\u00e6ngighedernes retning og sikrer, at alle afh\u00e6ngigheder g\u00e5r indad. <strong>Sekskantet arkitektur<\/strong>mens den ogs\u00e5 st\u00f8tter indadvendte afh\u00e6ngigheder, l\u00e6gger den st\u00f8rre v\u00e6gt p\u00e5 interaktionen med <strong>verden udenfor <\/strong>gennem dens porte og adaptere.<\/p>\n<h2>19. Test i sekskantet arkitektur<\/h2>\n<p>En vigtig styrke ved<strong> Sekskantet arkitektur<\/strong> er dens fokus p\u00e5 testbarhed. Ved at isolere kerneapplikationen fra<strong> verden udenfor<\/strong> gennem porte og adaptere giver Hexagonal Architecture mulighed for at udf\u00f8re <strong>Automatiserede tests<\/strong> der kan give tillid til softwarens stabilitet og korrekthed.<\/p>\n<p>I en <strong>Sekskantet arkitektur<\/strong>, den <strong>prim\u00e6re porte<\/strong>som indkapsler kernen <strong>forretningsregler<\/strong>kan testes uafh\u00e6ngigt af den ydre verden. I stedet for at kommunikere med en rigtig database under testning, kan en <strong>database-adapter<\/strong> kan skiftes ud med en testdouble, der simulerer en rigtig databases opf\u00f8rsel. Det g\u00f8r det muligt for udviklere at fokusere p\u00e5 at teste <strong>forretningsregler<\/strong>snarere end databasens interaktion.<\/p>\n<p>Desuden, <strong>Automatiserede regressionstests<\/strong> kan nemt konstrueres til at validere, at systemet opf\u00f8rer sig som forventet, n\u00e5r der foretages \u00e6ndringer. Dette niveau af testbarhed er en betydelig fordel, n\u00e5r det drejer sig om at vedligeholde og opdatere software, da det hj\u00e6lper med at opdage og l\u00f8se problemer tidligt i processen. <a href=\"https:\/\/thecodest.co\/da\/blog\/how-the-codests-team-extension-model-can-transform-your-in-house-development-team\/\">udviklingsproces<\/a>.<\/p>\n<p>Derudover er strukturen i<strong> Sekskantet arkitektur<\/strong> underst\u00f8tter ogs\u00e5 integrationstest. Ved at erstatte <strong>eksterne komponenter<\/strong> (som en databaseserver eller en <strong>ekstern API<\/strong>) med testdoubler kan udviklere teste, hvordan <strong>Applikationskerne<\/strong> integreres med disse komponenter uden at skulle bruge de faktiske eksterne systemer. Det kan i h\u00f8j grad forbedre testens hastighed og p\u00e5lidelighed.<\/p>\n<h2> Konklusion<\/h2>\n<p><strong>Sekskantet arkitektur<\/strong> fremst\u00e5r som en fristende l\u00f8sning i den store m\u00e6ngde af softwareudviklingsstrategier. Den skiller sig ud ved at afkoble <strong>Applikationskerne<\/strong> fra det eksterne milj\u00f8, hvilket sikrer en h\u00f8j grad af vedligeholdelighed, testbarhed og fleksibilitet. Denne adskillelse g\u00f8r det lettere for udviklere at fokusere p\u00e5 kernen. <strong>Forretningslogik<\/strong>samtidig med at softwarens modstandsdygtighed over for \u00e6ndringer i <strong>eksterne systemer<\/strong>.<\/p>\n<p>Selv om der er ulemper forbundet med sekskantet arkitektur, g\u00f8r dens mange fordele den til et meget v\u00e6rdifuldt aktiv i enhver udviklers v\u00e6rkt\u00f8jskasse. I forbindelse med <strong>software-arkitektur<\/strong>forts\u00e6tter den sekskantede model med at h\u00e6vde sin dominans.<\/p>\n<p>Denne artikel, der er krydret med <strong>Kodeeksempler<\/strong>har til form\u00e5l at give en grundig forst\u00e5else af <strong>Sekskantet arkitektur<\/strong> og dens potentielle fordele. Husk, at hemmeligheden bag en effektiv arkitektur ikke ligger i blind overholdelse af m\u00f8nstre, men i at forst\u00e5 de underliggende principper og implementere dem med omtanke for at opfylde specifikke krav.<\/p>\n<p>I den sekskantede arkitektur er gr\u00e6nsefladen defineret mellem <strong>Applikationslag<\/strong> og den <strong>Datalag<\/strong> er af afg\u00f8rende betydning. Uanset om du er en <a href=\"https:\/\/thecodest.co\/da\/dictionary\/what-is-a-software-architect\/\">softwarearkitekt<\/a> overvejer at anvende denne metode, eller en <a href=\"https:\/\/thecodest.co\/da\/blog\/hire-vue-js-developers\/\">Udvikler<\/a> I bestr\u00e6belserne p\u00e5 at forst\u00e5 dens kompleksitet er det tydeligt, at denne arkitekturs indflydelse forts\u00e6tter med at vokse. Den viser forskellige m\u00e5der, hvorp\u00e5 den kan udnyttes effektivt. For eksempel i en <strong><a href=\"https:\/\/thecodest.co\/da\/dictionary\/what-is-fintech-in-banking\/\">Bankvirksomhed<\/a> ans\u00f8gning<\/strong>, den <strong>Repository-gr\u00e6nseflade<\/strong> kan fungere som en sekund\u00e6r adapter, der bygger bro over <strong>applikationens kerne<\/strong> med <strong>Ekstern kode<\/strong>. Denne adskillelse giver fleksibilitet til at bytte <strong>konkret implementering<\/strong> af en <strong>filsystem<\/strong> eller en specifik teknologi, uden at det p\u00e5virker applikationstjenesterne.<\/p>\n<p>Den <strong>udvikling <a href=\"https:\/\/thecodest.co\/da\/dictionary\/how-to-lead-software-development-team\/\">hold<\/a><\/strong> kan nu arbejde p\u00e5 <strong>venstre side<\/strong> af applikationen uden at bekymre sig om <strong>eksterne faktorer<\/strong>og dermed sikre en problemfri fremgang. Og s\u00e5 afslutter vi vores udforskning af verden af <strong>Sekskantet arkitektur<\/strong>en arkitektonisk stil, der fortsat udvider sin indflydelse i hele softwareudviklingslandskabet.<br \/>\n<a href=\"https:\/\/thecodest.co\/contact\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/interested_in_cooperation_.png\" alt=\"Samarbejdsbanner\" \/><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Udforsk Hexagonal Architectures evne til at forbedre softwarens vedligeholdelsesevne, testbarhed og tilpasningsevne.<\/p>","protected":false},"author":2,"featured_media":3624,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3623","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>The Power of Hexagonal Architecture - The Codest<\/title>\n<meta name=\"description\" content=\"Explore the power of Hexagonal Architecture in software development, enhancing maintainability, testability, and flexibility. Learn how this architectural style, also known as Ports and Adapters, separates core business logic from external systems, supporting Domain-Driven Design, microservices, and reducing technical debt.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/da\/blog\/styrken-ved-sekskantet-arkitektur\/\" \/>\n<meta property=\"og:locale\" content=\"da_DK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Power of Hexagonal Architecture\" \/>\n<meta property=\"og:description\" content=\"Explore the power of Hexagonal Architecture in software development, enhancing maintainability, testability, and flexibility. Learn how this architectural style, also known as Ports and Adapters, separates core business logic from external systems, supporting Domain-Driven Design, microservices, and reducing technical debt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/da\/blog\/styrken-ved-sekskantet-arkitektur\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-13T13:29:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-10T07:51:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/unlocking_the_possibilities_with_hexagonal_architecture.png\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"540\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"thecodest\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"thecodest\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/the-power-of-hexagonal-architecture\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/the-power-of-hexagonal-architecture\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"The Power of Hexagonal Architecture\",\"datePublished\":\"2023-06-13T13:29:49+00:00\",\"dateModified\":\"2024-09-10T07:51:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/the-power-of-hexagonal-architecture\\\/\"},\"wordCount\":2868,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/the-power-of-hexagonal-architecture\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/unlocking_the_possibilities_with_hexagonal_architecture.png\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/the-power-of-hexagonal-architecture\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/the-power-of-hexagonal-architecture\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/the-power-of-hexagonal-architecture\\\/\",\"name\":\"The Power of Hexagonal Architecture - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/the-power-of-hexagonal-architecture\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/the-power-of-hexagonal-architecture\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/unlocking_the_possibilities_with_hexagonal_architecture.png\",\"datePublished\":\"2023-06-13T13:29:49+00:00\",\"dateModified\":\"2024-09-10T07:51:21+00:00\",\"description\":\"Explore the power of Hexagonal Architecture in software development, enhancing maintainability, testability, and flexibility. Learn how this architectural style, also known as Ports and Adapters, separates core business logic from external systems, supporting Domain-Driven Design, microservices, and reducing technical debt.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/the-power-of-hexagonal-architecture\\\/#breadcrumb\"},\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/the-power-of-hexagonal-architecture\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/the-power-of-hexagonal-architecture\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/unlocking_the_possibilities_with_hexagonal_architecture.png\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/unlocking_the_possibilities_with_hexagonal_architecture.png\",\"width\":960,\"height\":540},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/the-power-of-hexagonal-architecture\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Power of Hexagonal Architecture\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"name\":\"The Codest\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thecodest.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"da-DK\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"width\":144,\"height\":36,\"caption\":\"The Codest\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/pl.linkedin.com\\\/company\\\/codest\",\"https:\\\/\\\/clutch.co\\\/profile\\\/codest\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"caption\":\"thecodest\"},\"url\":\"https:\\\/\\\/thecodest.co\\\/da\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kraften i sekskantet arkitektur - The Codest","description":"Udforsk styrken ved hexagonal arkitektur i softwareudvikling, der forbedrer vedligeholdelsen, testbarheden og fleksibiliteten. L\u00e6r, hvordan denne arkitektoniske stil, ogs\u00e5 kendt som Ports and Adapters, adskiller kerneforretningslogik fra eksterne systemer, underst\u00f8tter dom\u00e6nedrevet design, mikrotjenester og reducerer teknisk g\u00e6ld.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thecodest.co\/da\/blog\/styrken-ved-sekskantet-arkitektur\/","og_locale":"da_DK","og_type":"article","og_title":"The Power of Hexagonal Architecture","og_description":"Explore the power of Hexagonal Architecture in software development, enhancing maintainability, testability, and flexibility. Learn how this architectural style, also known as Ports and Adapters, separates core business logic from external systems, supporting Domain-Driven Design, microservices, and reducing technical debt.","og_url":"https:\/\/thecodest.co\/da\/blog\/styrken-ved-sekskantet-arkitektur\/","og_site_name":"The Codest","article_published_time":"2023-06-13T13:29:49+00:00","article_modified_time":"2024-09-10T07:51:21+00:00","og_image":[{"width":960,"height":540,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/unlocking_the_possibilities_with_hexagonal_architecture.png","type":"image\/png"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/the-power-of-hexagonal-architecture\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/the-power-of-hexagonal-architecture\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"The Power of Hexagonal Architecture","datePublished":"2023-06-13T13:29:49+00:00","dateModified":"2024-09-10T07:51:21+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/the-power-of-hexagonal-architecture\/"},"wordCount":2868,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/the-power-of-hexagonal-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/unlocking_the_possibilities_with_hexagonal_architecture.png","articleSection":["Software Development"],"inLanguage":"da-DK","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/the-power-of-hexagonal-architecture\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/the-power-of-hexagonal-architecture\/","url":"https:\/\/thecodest.co\/blog\/the-power-of-hexagonal-architecture\/","name":"Kraften i sekskantet arkitektur - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/the-power-of-hexagonal-architecture\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/the-power-of-hexagonal-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/unlocking_the_possibilities_with_hexagonal_architecture.png","datePublished":"2023-06-13T13:29:49+00:00","dateModified":"2024-09-10T07:51:21+00:00","description":"Udforsk styrken ved hexagonal arkitektur i softwareudvikling, der forbedrer vedligeholdelsen, testbarheden og fleksibiliteten. L\u00e6r, hvordan denne arkitektoniske stil, ogs\u00e5 kendt som Ports and Adapters, adskiller kerneforretningslogik fra eksterne systemer, underst\u00f8tter dom\u00e6nedrevet design, mikrotjenester og reducerer teknisk g\u00e6ld.","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/the-power-of-hexagonal-architecture\/#breadcrumb"},"inLanguage":"da-DK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/the-power-of-hexagonal-architecture\/"]}]},{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/thecodest.co\/blog\/the-power-of-hexagonal-architecture\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/unlocking_the_possibilities_with_hexagonal_architecture.png","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/unlocking_the_possibilities_with_hexagonal_architecture.png","width":960,"height":540},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/the-power-of-hexagonal-architecture\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"The Power of Hexagonal Architecture"}]},{"@type":"WebSite","@id":"https:\/\/thecodest.co\/#website","url":"https:\/\/thecodest.co\/","name":"Codest","description":"","publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thecodest.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"da-DK"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","width":144,"height":36,"caption":"The Codest"},"image":{"@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/pl.linkedin.com\/company\/codest","https:\/\/clutch.co\/profile\/codest"]},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","caption":"thecodest"},"url":"https:\/\/thecodest.co\/da\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3623","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/comments?post=3623"}],"version-history":[{"count":5,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3623\/revisions"}],"predecessor-version":[{"id":8012,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/posts\/3623\/revisions\/8012"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/media\/3624"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/media?parent=3623"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/categories?post=3623"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/da\/wp-json\/wp\/v2\/tags?post=3623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}