Hexagonale Architektur ist seit einigen Jahren ein beliebtes Thema in der Software Engineering Community. Nicht zuletzt durch den Microservice Trend der letzten Jahre ist es ein verbreiteter Architekturstil, der helfen kann Services zu strukturieren. Bei der Umsetzung kommt dabei oft die Frage auf, wie die Vorteile: Entkopplung der Geschäftslogik, Testbarkeit, Erweiterbarkeit und klare Anwendungsstruktur erreicht werden können.
Video zum Talk ist unter folgendem Link auffindbar:
https://youtu.be/sgAXtNv7LjM
In diesem Talk stellen Otto und Sven ihre Erfahrungen im Einsatz von Hexagonaler Architektur aus der Praxis vor und gehen auf die essentiellen Bestandteile ein und wie diese auf die verschiedenen Architekturziele einzahlen.
Der Talk wendet sich an Entwickler und Architekten, die Benefits und Tradeoffs in der Anwendung Hexagonaler Architektur besser verstehen wollen.
4. Hexagonal
Architecture
2005
Alistair Cockburn
“Ports & Adapters Architecture”
- Separation of Concerns
- (UI & DB) Testability & Mockability
- “Primary/Secondary” or
“Driving/Driven” Adapters
- Use Cases as Application Boundary
https://alistair.cockburn.us/hexagonal-architecture/
5. Onion
Architecture
2008
Jeffrey Palermo
- Separation of Concerns via Controlled Coupling
- Application Core: Object Model
(Domain Model) with Business Rules
- Externalize Infrastructure
- Relies on Dependency Inversion
https://jeffreypalermo.com/2008/07/the-onion-architecture-part-1/
6. Clean
Architecture
2012
Robert C. Martin
- The Dependency Rule
- Entities encapsulate Business Rules
- Use Cases as Layer
- What and how to cross boundaries: Flow
- Different wording, similar concepts
https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
7. Enter the
Microservice Hype
2012+
- Microservices
- Domain-Driven Design (DDD)
- CQRS
- …
-
We need to talk!
DDD, Hexagonal, Onion, Clean, CQRS, … How I put it all together
9. There is one
essential thing …
… there is the inside and the outside …
Alistair Cockburn
Dennis Hamilton - https://www.flickr.com/photos/orcmid/1850093537/
33. - Think domain first
- Use the domain objects in the ports
if possible
- Isolate technologies in the adapters
- Move business logic as far to the
center as possible
It’s not so
complicated
34. - Better testability
- Easier to understand
- Easier to adapt to technological
changes
- Easier to guard against regressions
- Easier to focus on business code
And the benefits
are …