003: Hexagonal Architecture

Genomgång av Hexagonal Architecture (ports and adapters pattern).

Hexagonal Architecture drawing

Hexagonal Architecture eller som det kanske mer korrekt kom att kallas senare - Ports and Adapters Pattern, är en arkitektonisk stil som syftar till att göra mjukvarusystem mer modulära, testbara och oberoende av externa teknologier. Det grundläggande syftet är att separera kärnlogiken – det som verkligen är systemets hjärta – från all yttre påverkan, såsom användargränssnitt, databaser, externa APIer eller andra infrastrukturdetaljer.

Mönstret introducerades i början av 2000-talet av Alistair Cockburn som är en av skaparna och en av de ursprungliga undertecknarna av det agila manifestet (hans efternamn ska uttalas Coburn och jag missar dessvärre detta konstant i avsnittet, hängde för mycket upp mig på manuset). Arkitekturen kom som ett svar på de alltmer komplexa beroendeförhållandena i traditionell lagerarkitektur. I klassiska lager, ofta trelagersprincipen, där exempelvis presentation, affärslogik och dataåtkomst ligger i vertikala lager, tenderar beroendena att växa felaktigt över tid – särskilt i form av att affärslogiken börjar förlita sig direkt på externa system. Hexagonal arkitektur adresserar detta genom att omstrukturera synsättet: systemets inre och yttre delar ska kommunicera via tydligt definierade gränssnitt, så kallade portar, där varje port är en abstraktion för en typ av kommunikation – exempelvis att ta emot kommandon eller hämta data.

Runt dessa portar kopplas sedan adaptrar, som är konkreta implementationer av portar för en viss kontext. En adapter kan vara ett REST-API, ett CLI, en databas-anslutning eller ett meddelandekö-system. Dessa adaptrar kan bytas ut, testas separat eller simuleras i testmiljö utan att påverka kärnlogiken.

Länkar:

alltsomkod.se

En pod om DevOps, utfallsbaserade agila ledarskapsfilosofier och programmeringsspråket Go.


Genomgång av Hexagonal Architecture (ports and adapters pattern).

Av Mike, 2025-05-26