Hexagonale Architektur, auch "Ports and Adapters" genannt, ist ein Architekturstil, der Anwendungslogik strikt von technischen Schnittstellen trennt. Die Anwendung definiert Ports (abstrakte Schnittstellen für ein- und ausgehende Interaktionen), die durch Adapter für konkrete Technologien wie HTTP, Datenbanken oder Messaging implementiert werden.
Typische Implementierungen unterscheiden Driver-Adapter (z. B. REST-Controller, CLI-Befehle), die die Anwendung nutzen, und Driven-Adapter (z. B. Datenbank- oder Messaging-Integrationen), die von der Anwendung benutzt werden. Die hexagonale Form im Diagramm betont, dass es keine bevorzugte "Oben"- oder "Unten"-Richtung gibt; Schnittstellen sind gleichwertig.
Einsatzzweck ist die Testbarkeit und Austauschbarkeit der Außenwelt. Geschäftslogik kann ohne Webframework, Datenbank oder Messaging-System ausgeführt und getestet werden. Adapter werden bei Bedarf ausgetauscht, ohne dass der Kern angefasst werden muss - ein zentrales Mittel gegen Framework- und Datenbank-Lock-in.
Hexagonale Architektur wurde 2005 von Alistair Cockburn beschrieben (Whitepaper "Hexagonal Architecture"), basierend auf Ideen, die er nach eigenen Aussagen bereits Anfang der 1990er Jahre erprobte. Sie steht in direkter Verwandtschaft zu Clean Architecture und Onion Architecture und wird oft synonym mit "Ports and Adapters" verwendet.
In der Microservices- und DDD-Welt hat das Muster eine Renaissance erlebt, weil es sich besonders gut mit Bounded Contexts, Domain Events und CQRS kombinieren lässt. Cockburn selbst betont gerne, dass die sechseckige Form keinerlei tiefere Bedeutung hat - sie war einfach ein praktisches Diagramm, um beliebig viele Ports anzudeuten.