Domain-driven Design

Kubernetes, Quarkus 1.0 & IntelliJ IDEA 2019.3 – Unsere Top-Themen der Woche

Mit Siebenmeilenstiefeln eilen wir auf das Jahresende zu! Dass die Zeit wie im Flug vergeht, liegt sicherlich auch den spannenden Themen. In der vergangenen Woche sorgte unter anderem ein Artikel zu CI/CD-Systemen für Kubernetes für Aufmerksamkeit. Zudem wurde die IntelliJ IDEA in Version 2019.3 veröffentlicht und Quarkus 1.0 ist erschienen. Kurz vor dem Quarkus-Release sprachen wir mit Alex Soto (Red Hat) über Zielrichtung und Eigenschaften des Projektes.

1969 bis 2039: Zeitlose Designprinzipien

Die Welt der Softwareentwicklung ist im steten Wandel. Technologien kommen und gehen, neue Programmiersprachen werden jedes Jahr geboren und immer mehr Menschen werden als Entwickler Teil dieser Welt. Das bedeutet allerdings nicht, dass bestimmte Richtlinien und Grundsätze sich ebenfalls dauernd ändern. In seiner Session von der JAX 2019 spricht Jason Gorman, Codemanship, über Designprinzipien, die seit Jahrzehnten valide sind und ihre Bedeutung auch in Zukunft nicht verlieren werden.

DDD-Artikelserie: Ubiquitous Language – Warum ist Sprache so wichtig?

Ein Element, das in der gesamten Domain-driven-Design-Literatur querschnittlich präsent ist, ist die Ubiquitous Language, die allgegenwärtige Sprache. Allgegenwärtig bezieht sich darauf, dass es sich hierbei um eine Sprache handelt, die von Softwareentwickler*innen und Fachexpert*innen gemeinsam gesprochen wird. Diese Sprache soll dann auch die Basis für die Entwicklung des Softwaremodells sein. Im Rahmen dieses Artikels gehen wir erst auf die Motivation für die Etablierung einer Ubiquitous Language ein, bevor schließlich das Potenzial und die Möglichkeiten für die Arbeit mit einer solchen Sprache vorgestellt werden. Weiterhin werden noch kurz die Vorgehensweisen zur Herleitung einer Ubiquitous Language erläutert.

DDD-Artikelserie: Strategic Design – Umfassend und ganzheitlich

Domain-driven Design bietet uns mit dem sogenannten Strategischen Design eine Anleitung, wie eine Domain und damit der Problemraum fachlich erfasst und aufgeteilt werden kann. Diese Aufteilung lässt sich dann auf den Lösungsraum – die Software – übertragen. Die Fachbegriffe aus DDD, die dabei eine Rolle spielen, sind: Domain, Subdomain, Bounded Context und schließlich die Context Map für das Zusammenspiel der Bounded Contexts. In diesem Artikel werden wir diese Begriffe und unser Verständnis davon vorstellen.

Strategic Domain-driven Design: So erstellt man wartbare Architekturen mit Angular und Monorepos

Mit Monorepos können große Anwendungen in kleine, übersichtliche Teile zerlegt werden. Dabei handelt es sich jedoch nur um eine Seite der Medaille: Zuvor gilt es nämlich festzulegen, anhand welcher Kriterien die Zerlegung erfolgen soll und wie die einzelnen Bibliotheken miteinander kommunizieren dürfen. Welche das sind, expliziert Manfred Steyer in seiner Session auf der JAX 2019.

Domain-driven Design, Microservices, DevOps: Der Software-Architekt als Projektmanager

In Zeiten von Agile, DevOps und DDD verändert sich auch die Rolle des Software-Architekten. Wir haben uns im Zuge der W-JAX 2018 mit Ralf D. Müller, darüber unterhalten, wie man als Software-Architekt den richtigen Mix aus Stabilität und Flexibilität findet, welche Impulse von der DevOps-Bewegung ausgehen und wie DDD dabei hilft, wertschöpfende Software zu bauen.

Software-Architektur heute: „Es geht um Menschen, Technologien sind sekundär“

Software-Architektur galt lange als die Disziplin, um in Software-Projekten für einen kohärenten Zusammenhang zu sorgen: Stabilität, Sicherheit, Planbarkeit stand im Vordergrund. Wir haben uns mit Henning Schwentner im Zuge der W-JAX 2018 darüber unterhalten, wie sich dieses Bild verändert hat und welche Rolle Trends wie DevOps und DDD dabei spielen.

Java Magazin 12.18 erschienen: Event Storming

Die Workshop-basierte Methode Event Storming hat in den letzten Jahren mehr und mehr Beachtung erfahren. Ausschließlich anhand von Klebezetteln wird so die Domäne nach und nach entzaubert. Die Ursprünge von Event Storming sind im Domain-driven Design bzw. der entsprechenden Community begründet. Im aktuellen Java Magazin 12.18 haben wir uns ausführlich mit der Methode auseinandergesetzt.

Break Your Event Chains: Langläufige Microservices & Domain-driven Design

Ereignisgesteuerte Architekturen erlauben eine gute Entkopplung von Microservices und sind grundlegend für dezentrales Datenmanagement. Gleichzeitig kann die Servicekopplung durch unreflektierte Verwendung von Ereignissen auch unbeabsichtigt grösser werden – wenn etwa komplexe, mehrere Services berührende Ende-zu-Ende-Logik über direkt peer-to-peer laufende Ereignisketten implementiert wird. In seiner Session von der W-JAX 2017 zeigt Martin Schimak, Experte im Bereich Domain-driven Design, wie eine neue Generation leichtgewichtiger und hochskalierbarer State Machines und Process Engines die konkrete Implementierung von langläufigen Services erleichtert.