Hexagonale Architektur mit Spring Boot
JUG Darmstadt Meetup, Juni 2020, online: Vortrag von Christoph Thelen (@chthelen, Software-Architekt bei QAware)
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
Abstract: Fachlichkeit sauber von der Technik trennen – dieses Versprechen gibt die Hexagonale Architektur. Das QAware Team hat einen produktiven Spring Boot Service nach dem Ports and Adapters Muster entwickelt und Erfahrungen gesammelt, die in diesem Talk besprochen werden.
4. Ports and Adapters - mit Umfeld
Integration
Domäne
REST
Messaging
UI
Messaging
Persistenz
Service
5. ● Fachliche Logik nur im Kern
○ Keine Business-Logik in den technischen Komponenten
○ “Ports”-Interfaces liegen im Kern und sind rein fachlich geschnitten
● Technische Integration findet “außen” statt
○ Adapter implementieren/verwenden die Ports
○ Konkrete Instanzen per DI verwaltet
○ Der Kern hat keine Informationen über technische Implementierungen
● Abhängigkeiten nur “nach innen”
Ports and Adapters Architektur - Prinzipien
6. ● Kapselt die Fachlogik vollständig
● Leichtes Testen der verschiedenen Komponenten
● Austauschen/Ergänzen ist einfach
Fazit:
Nichts wirklich Neues, aber Schichtentrennung und DIP konsequent angewandt.
Ports and Adapters Architektur
7. ● Aufteilung in Domain Model und Services
● “Onion Architecture” - Application, Domain, Domain Model
● DDD Ansätze wie Application Services und Repositories
● Explizites Einbeziehen von Querschnittsthemen, s. “Cluster One”
Verfeinerungen und Varianten
9. Device Configuration Service
● Verwaltet Config-Parameter und -Werte für Devices
● User Parameter
○ gesetzt in einer Companion App
○ ausgelesen von den Devices
Unser konkretes Beispiel