
Veröffentlicht 30. Januar 2025
von Lars Michaelis
Domain-Driven Design und hexagonale Architektur: Fachlichkeit im Fokus
Domain-Driven Design (DDD) ist ein Ansatz zur Modellierung komplexer Software, bei dem die fachlichen Aspekte konsequent in den Mittelpunkt gestellt werden.
Doch was ist Domain-Driven Design genau? Im Kern geht es darum, ein tiefes Verständnis der Domäne – also des fachlichen Kontextes, in dem die Software eingesetzt wird – zu erlangen. Dabei arbeiten Entwickler:innen eng mit Fachexpert:innen zusammen, um ein gemeinsames Modell zu entwickeln, das die wesentlichen Geschäftsprozesse und -regeln abbildet. Dieses Modell dient als Grundlage für die Softwareentwicklung und hilft, Missverständnisse zwischen Technik und Fachlichkeit zu vermeiden. Begriffe und Konzepte der Domäne werden einheitlich definiert und in einer sogenannten „Ubiquitous Language“ festgehalten – einer gemeinsamen Sprache, die sowohl für Entwickler:innen als auch für Fachexpert:innen verständlich ist.
Ein Konzept, das hervorragend zu diesem Ansatz passt, ist die hexagonale Architektur (auch Ports-and-Adapters-Architektur genannt). Sie sorgt dafür, dass die fachlichen Inhalte in den Kern der Anwendung integriert werden. Dabei wird die Software in drei Hauptschichten unterteilt:
Die Domänenschicht bildet das Herzstück der Anwendung. Hier befinden sich die Geschäftslogik, die zentralen Regeln und Modelle der Domäne. Diese Schicht ist vollständig unabhängig von technischen Details.
Die Anwendungsschicht steuert den Ablauf und orchestriert die Interaktion zwischen der Domäne und den äußeren Schnittstellen. Sie stellt sicher, dass die Domänenlogik korrekt und in der richtigen Reihenfolge angewendet wird.
Die Infrastrukturschicht, die über sogenannte Adapter realisiert wird, kümmert sich um die Anbindung an technische Systeme wie Datenbanken, Message-Queues oder externe APIs. Diese Adapter sind bewusst austauschbar gestaltet, um technologische Abhängigkeiten gering zu halten.
Das Besondere an der hexagonalen Architektur ist ihre klare Trennung von Fachlichkeit und Technik. Die Domäne wird durch Ports definiert, die beschreiben, welche Schnittstellen verfügbar sind, ohne sich auf die konkrete technische Implementierung festzulegen. Adapter implementieren dann diese Schnittstellen, beispielsweise für eine Datenbank oder eine Webservice-Schnittstelle.
Diese Struktur bietet viele Vorteile: Der fachliche Kern bleibt flexibel und unabhängig von technischen Entscheidungen. Technologische Komponenten können einfacher ausgetauscht werden, ohne dass der Kern der Anwendung davon beeinflusst wird. Gleichzeitig wird die Software durch die klare Trennung wartbarer und testbarer, da jede Schicht isoliert betrachtet und getestet werden kann.
Zusammen ermöglichen Domain-Driven Design und die hexagonale Architektur die Entwicklung von Software, die nicht nur robust und wartbar, sondern vor allem nah an den tatsächlichen Anforderungen der Fachdomäne ist.
Workshop-Angebot
Wenn du tiefer in diese Themen einsteigen möchtest, bietet sich unser zweitägiger Workshop an. Der Workshop kann entweder bei euch vor Ort oder in unseren Räumlickeiten in Bremen stattfinden. Alles, was du benötigst, ist ein Entwicklernotebook mit einer beliebigen IDE und Programmiersprache – der Rest wird gemeinsam im Workshop erarbeitet. Sehr gerne können auch ganze Teams inkl. Productowner:innen und Scrummaster:innen teilnehmen.
Für mehr Infos buche dir hier ganz einfach einen Besprechungstermin mit Lars Michaelis oder schreibe ihm eine E-Mail.