Vortrag Martin Lehmann, Marcus Franz, Dr. Renato Vinga-Martins: "DDD als Best-Practice für Datenmodellierung von Microservices".
Java User Group Augsburg, 25. Oktober 2022
Abstract: https://www.meetup.com/de-DE/java-user-group-augsburg/events/287853088/
Video: https://www.youtube.com/watch?v=U53WFcuGqwY
Best Practices. Datenmodelle. Microservices. Drei Themen, mit denen man stundenlange Talks und Diskussionen, wohl sogar mehrtägige Workshops füllen könnte. Wir komprimieren das in sportliche 90 Minuten und zäumen den Titel von hinten auf.
Nun denn, starten wir mit Teil 1. Microservices: Ist das nun Hype, Innovation oder State-of-the-Art? Den Begriff gibt es seit 2011 und er wird inflationär verwendet. Ob man den Schritt hin zu Microservice wagen soll oder nicht, ist eine Entscheidung, die man sehr bewusst und gezielt treffen sollte. Wir geben in diesem Talk eine Entscheidungshilfe und nähern uns dem Thema aus den Blickwinkeln Fachlichkeit und Architektur. Und wir machen es uns einfach: Wir raten in diesem Talk vom Microservices-Einsatz in letzter Konsequenz erst mal ab.
Denn für "echte" Microservices nach unserer Definition müssen fachliche und organisatorische Komplexität groß genug sein (... schon Martin Fowler rät: "Don't even consider microservices unless you have a system that's too complex to manage as a monolith." ...). Anforderungen müssen sehr dynamisch / flexibel umgesetzt werden! In welchen Größenordnungen ist das eigentlich der Fall? Muss man schon Netflix sein oder geht's eine Nummer kleiner? Und erst die technischen, architektonischen wie auch betrieblichen Konsequenzen: Verteiltes System. Erhöhte Latenz. Eventual Consistency. Netzwerk-/Remote-Zugriffe mit Fehlersituationen aller Art. Alles kein Spaß.
Wer sich bis hierhin nicht abgeschrecken lässt, der benötigt Hilfestellung: Vorhang auf für Teil 2 für die fachliche Modellierung von Prozessen, Daten, letztlich also einer fachlichen Architektur, in der Verantwortlichkeiten klar benannt und Aspekte wie Datenhoheit sichergestellt sind, um nicht im Chaos des Microservice-Spaghetti zu landen. Nichts ist schlimmer als der verteilte Monolith. Hier kommt Domain-Driven Design ins Spiel. Mit Ubiquitous Language und sowohl Strategischem als auch Taktischem Design kann man eine Architektur gestalten und nach klaren, v.a. fachlichen Prinzipien aufbauen. Wir vertiefen einige Aspekte des Taktischen Designs (wie Aggregates, Entities, Value Objects).
Last not least, Teil 3: Best Practices: DDD hilft mit seiner Mustersprache auf fachlicher wie auf architektonischer Ebene bis hin zu Code-Strukturen, hier kann man auf bewährte Practices aufsetzen. So weit so gut, aber leider: Technisch komplizierte Fragen sind wesentlich leichter greifbar als die fachliche komplexen Themen. Ob es hierzu überhaupt "Best Practices" (im Wortsinne) geben kann, beantworten wir im Talk. (Wer nicht solange warten will, dem empfehlen wir dieses Video zum Umgang mit wachsender Komplexität: https://www.youtube.com/watch?v=m3QqDOeSahU )