Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DDD als Best-Practice für Datenmodellierung von...

DDD als Best-Practice für Datenmodellierung von Microservices

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 )

Martin Lehmann

October 25, 2022
Tweet

More Decks by Martin Lehmann

Other Decks in Technology

Transcript

  1. Copyright © Accso – Accelerated Solutions GmbH 1 v.3 v.3.18

    Best-Practices für Datenmodelle mit Microservices MARCUS FRANZ, MARTIN LEHMANN, DR. RENATO VINGA-MARTINS Java User Group Augsburg, 25. Oktober 2022 @marcus__franz @mrtnlhmnn @accso
  2. Copyright © Accso – Accelerated Solutions GmbH 3 v.3 v.3.18

    DDD als Best-Practice für Datenmodellierung von Microservices MARCUS FRANZ, MARTIN LEHMANN, DR. RENATO VINGA-MARTINS @marcus__franz @mrtnlhmnn @accso Java User Group Augsburg, 25. Oktober 2022
  3. Copyright © Accso – Accelerated Solutions GmbH 4 Martin Lehmann

    Accso - Accelerated Solutions GmbH Cheftechnologe Martin Lehmann ist Diplom-Informatiker und arbeitet als Cheftechnologe bei der Accso. Seit Ende der 90er-Jahre arbeitet er als Softwarearchitekt und -entwickler in der Softwareentwicklung in Individualentwicklungsprojekten für Kunden verschiedener Branchen. Er interessiert sich besonders SW-Architektur und die Herausforderungen Verteilter Systeme. [email protected] @mrtnlhmnn www.xing.com/profile/Martin_Lehmann3
  4. Copyright © Accso – Accelerated Solutions GmbH 5 Dr. Renato

    Vinga-Martins Accso - Accelerated Solutions GmbH Dr. Renato Vinga-Martins arbeitet bei der Accso – Accelerated Solutions GmbH mit technologischem Schwerpunkt als Architekt, Berater und Projektleiter in allen Phasen der Individualsoftware-Entwicklung. Er begleitet seit über 20 Jahren Kunden in ihren Projekten. [email protected]
  5. Copyright © Accso – Accelerated Solutions GmbH 6 Marcus Franz

    Accso - Accelerated Solutions GmbH Marcus ist Managing Consultant bei der Accso - Accelerated Solutions GmbH. Er arbeitet seit mehr als 10 Jahren in der Softwareentwicklung und ist Domain-driven-Design-Enthusiast. [email protected]
  6. Copyright © Accso – Accelerated Solutions GmbH 7 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 abschrecken 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.) Abstract
  7. Copyright © Accso – Accelerated Solutions GmbH 8 Datenmodellierung mit

    Domain-Driven Design Microservices Wann? Konsequenzen! Agenda
  8. Copyright © Accso – Accelerated Solutions GmbH 9 gute funktionale

    Skalierbarkeit wachsende Komplexität, Größe Team, Geographische Verteilung Produktgröße / Fachlichkeit NfAs, Architektur, Technik wachsende (Team-) Autonomie Selbstorganisation Eigenverantwortung Organisatorische Koordinierung stetige/steigende Innovationsfähigkeit Liefergeschwindigkeit / Produktivität Änderbarkeit / Anpassbarkeit Erweiterbarkeit getrennte Lebens-/Deployment-Zyklen strenge Konsistenz gute architektonisch/technische Beherrschbarkeit Modularisierung technische Skalierbarkeit Automatisierung Dezentralisierung Berechtigungsschutz Resilience Refactoring-Fähigkeit Testbarkeit gute Beobachtbarkeit fachliches Monitoring technisches Monitoring
  9. Copyright © Accso – Accelerated Solutions GmbH 10 gute funktionale

    Skalierbarkeit strenge Konsistenz wachsende Komplexität, Größe Team, Geographische Verteilung Produktgröße / Fachlichkeit NfAs, Architektur, Technik wachsende (Team-) Autonomie Selbstorganisation Eigenverantwortung Organisatorische Koordinierung stetige/steigende Innovationsfähigkeit Liefergeschwindigkeit / Produktivität Änderbarkeit / Anpassbarkeit Erweiterbarkeit getrennte Lebens-/Deployment-Zyklen Testbarkeit gute Beobachtbarkeit fachliches Monitoring technisches Monitoring gute architektonisch/technische Beherrschbarkeit Modularisierung technische Skalierbarkeit Automatisierung Dezentralisierung Berechtigungsschutz Resilience Refactoring-Fähigkeit
  10. Copyright © Accso – Accelerated Solutions GmbH 11 Microservice-Architekturen fördern

    Wachstum und Flexibilität. Photo by Brian Breeden on Unsplash
  11. Copyright © Accso – Accelerated Solutions GmbH 12 Kosten und

    Nutzen sind abzuwägen! Netflix priorisiert Ziel „Innovation“ über „Zuverlässigkeit“ und „Effizienz“
  12. Copyright © Accso – Accelerated Solutions GmbH 13 Kosten und

    Nutzen sind abzuwägen! REWE priorisiert das Ziel „Wachstum“ 0-5 Teams 5-15 Teams 15-35 Teams 50+ Teams
  13. Copyright © Accso – Accelerated Solutions GmbH 14 Wie stellt

    sich Komplexität dar? Grad der Vernetzung Kommunikation wächst quadratisch mit der Anzahl der Teilnehmer
  14. Copyright © Accso – Accelerated Solutions GmbH 16 Microservices adressieren

    Komplexität, indem sie Kopplung reduzieren. Können wir wirklich mit Team-Skill Komplexität beherrschen?
  15. Copyright © Accso – Accelerated Solutions GmbH 17 Das Cynefin-

    Framework rät bei Komplexität zu Emergent Practices.
  16. Copyright © Accso – Accelerated Solutions GmbH 18 Komplexität senkt

    die Produktivität und erfordert eigene Lösungsstrategien.
  17. Copyright © Accso – Accelerated Solutions GmbH 19 Umgang mit

    Komplexität? Der Demingkreis: PDCA! Emergent Practice: Situativ reagieren – keine Allgemeinrezepte Im Unterschied zu komplizierten Situationen, wollen wir uns anpassen können, nicht optimieren. Es geht nicht primär um Kostenreduktion.
  18. Copyright © Accso – Accelerated Solutions GmbH 24 Das Team

    muss Gesamtverantwortung übernehmen: Autonomie Produkte statt Projekte über den gesamten Lebenszyklus
  19. Copyright © Accso – Accelerated Solutions GmbH 27 Wie hängen

    Komplexität und Autonomie voneinander ab? Komplexität Autonomie Monolithen niedrig hoch wenig viel Monolithen eignen sich für gut planbare Situationen. Microservices Microservices eignen sich für hohe Flexibilität.
  20. Copyright © Accso – Accelerated Solutions GmbH 28 Datenmodellierung mit

    Domain-Driven Design Microservices Wann? Konsequenzen! Agenda
  21. Copyright © Accso – Accelerated Solutions GmbH 29 gute funktionale

    Skalierbarkeit strenge Konsistenz wachsende Komplexität, Größe Team, Geographische Verteilung Produktgröße / Fachlichkeit NfAs, Architektur, Technik wachsende (Team-) Autonomie Selbstorganisation Eigenverantwortung Organisatorische Koordinierung gute architektonisch/technische Beherrschbarkeit Modularisierung technische Skalierbarkeit Automatisierung Dezentralisierung Berechtigungsschutz Resilience Refactoring-Fähigkeit stetige/steigende Innovationsfähigkeit Liefergeschwindigkeit / Produktivität Änderbarkeit / Anpassbarkeit Erweiterbarkeit getrennte Lebens-/Deployment-Zyklen Testbarkeit gute Beobachtbarkeit fachliches Monitoring technisches Monitoring
  22. Copyright © Accso – Accelerated Solutions GmbH 32 Integration Auf

    welchem Layer? Welche Kommunikations- patterns? Versionierung?
  23. Copyright © Accso – Accelerated Solutions GmbH 39 … und

    weitere Fehler- quellen! Verteilung wirkt sich aus: Latenz!
  24. Copyright © Accso – Accelerated Solutions GmbH 58 Strenge Konsistenz

    durch Orchestrierung nötig? Reicht Choreography mit Eventual Consistency? Welche Qualitätseigenschaften sind zu erfüllen?
  25. Copyright © Accso – Accelerated Solutions GmbH 61 Verteilung bedingt

    getrennte Datentöpfe! Keine Konsistenz, nur „Eventual Consistency“ Daten Daten Daten Daten Daten Daten Daten Daten
  26. Copyright © Accso – Accelerated Solutions GmbH 71 gute funktionale

    Skalierbarkeit wachsende Komplexität, Größe Team, Geographische Verteilung Produktgröße / Fachlichkeit NfAs, Architektur, Technik wachsende (Team-) Autonomie Selbstorganisation Eigenverantwortung Organisatorische Koordinierung stetige/steigende Innovationsfähigkeit Liefergeschwindigkeit / Produktivität Änderbarkeit / Anpassbarkeit Erweiterbarkeit getrennte Lebens-/Deployment-Zyklen strenge Konsistenz gute architektonisch/technische Beherrschbarkeit Modularisierung technische Skalierbarkeit Automatisierung Dezentralisierung Berechtigungsschutz Resilience Refactoring-Fähigkeit Testbarkeit gute Beobachtbarkeit fachliches Monitoring technisches Monitoring
  27. Copyright © Accso – Accelerated Solutions GmbH 72 gute funktionale

    Skalierbarkeit wachsende Komplexität, Größe Team, Geographische Verteilung Produktgröße / Fachlichkeit NfAs, Architektur, Technik wachsende (Team-) Autonomie Selbstorganisation Eigenverantwortung Organisatorische Koordinierung stetige/steigende Innovationsfähigkeit Liefergeschwindigkeit / Produktivität Änderbarkeit / Anpassbarkeit Erweiterbarkeit getrennte Lebens-/Deployment-Zyklen strenge Konsistenz gute architektonisch/technische Beherrschbarkeit Modularisierung technische Skalierbarkeit Automatisierung Dezentralisierung Berechtigungsschutz Resilience Refactoring-Fähigkeit Testbarkeit gute Beobachtbarkeit fachliches Monitoring technisches Monitoring
  28. Copyright © Accso – Accelerated Solutions GmbH 73 Datenmodellierung mit

    Domain-Driven Design Microservices Wann? Konsequenzen! Agenda
  29. Copyright © Accso – Accelerated Solutions GmbH 75 Domain-Driven Design

    von Eric Evans 2003 Implementing Domain-Driven Design von Vaughn Vernon 2013 Building Microservices von Sam Newman Patterns, Principles, and Practices of Domain Driven Design von Scott Millett und Nick Tune 2015 Kandinsky 2017 Domain Driven Design Europe Microservices von Eberhard Wolff 2016 Heute Domain-Driven Design Timeline
  30. Copyright © Accso – Accelerated Solutions GmbH 76 DDD? Was

    ist das eigentlich? – Eine persönliche Sicht DDD ist eine Philosophie ... bei welcher der Fokus auf der Fachlichkeit liegt. DDD ist ein Werkzeugkasten Fachlichkeit Technologie
  31. Copyright © Accso – Accelerated Solutions GmbH 77 Die drei

    Säulen des DDD Domänenmodell Domänenwissen Kollaborative Modellierungstechniken Domain-driven Design Ubiquitous Language Strategisches Design Taktisches Design
  32. Copyright © Accso – Accelerated Solutions GmbH 78 Domänenmodell Domänenwissen

    Kollaborative Modellierungstechniken Domain-driven Design Ubiquitous Language Strategisches Design Taktisches Design
  33. Copyright © Accso – Accelerated Solutions GmbH 79 Warum verwenden

    wir Modelle? ? ! Reduzierung der Komplexität durch die Erzeugung einer Abstraktion um ein spezifisches Problem zu lösen!
  34. Copyright © Accso – Accelerated Solutions GmbH 80 Domänenmodell Domänenwissen

    Kollaborative Modellierungstechniken Domain-driven Design Ubiquitous Language Strategisches Design Taktisches Design
  35. Copyright © Accso – Accelerated Solutions GmbH 81 Ubiquitous Language

    - eine einheitliche Sprache basierend auf dem Domänenmodell Ohne eine einheitliche Ubiquitous Language gibt es durch das Übersetzen der Sprachen eine zusätzliche kognitive Belastung Die Ubiquitous Language sollte überall Einzug finden Gespräche, Mails, Tickets, Code, DB, usw.
  36. Copyright © Accso – Accelerated Solutions GmbH 82 Domänenmodell Domänenwissen

    Kollaborative Modellierungstechniken Domain-driven Design Ubiquitous Language Strategisches Design Taktisches Design
  37. Copyright © Accso – Accelerated Solutions GmbH 84 Domänenmodell Domänenwissen

    Kollaborative Modellierungstechniken Domain-driven Design Ubiquitous Language Strategisches Design Taktisches Design
  38. Copyright © Accso – Accelerated Solutions GmbH 86 E-Commerce Versand

    Marketing Kaufempfehlung Verkauf Produktkatalog Strategisches Design – Subdomänen
  39. Copyright © Accso – Accelerated Solutions GmbH 87 Strategisches Design

    – Ein Modell für alles E-Commerce Versand Marketing Kaufempfehlung Verkauf Produktkatalog Produkt: -ID -Beschreibung -Preis -Farbe -Punktewert -Lagerort - …
  40. Copyright © Accso – Accelerated Solutions GmbH 88 Strategisches Design

    – Ein Modell je Kontext E-Commerce Marketing Kaufempfehlung Verkauf Produktkatalog Produkt: -ID -Farbe -Beschreibung -Preis -… Produkt: -ID -Preis - … Produkt: -ID -Punktewert - … Produkt: -ID - … Versand Produkt: -ID -Lagerort - …
  41. Copyright © Accso – Accelerated Solutions GmbH 89 Strategisches Design

    – Bounded Context Produkt: -ID -Farbe -Beschreibung -Preis -… Produkt: -ID -Preis - … Produkt: -ID -Punktewert - … Produkt: -ID - … Produkt: -ID -Lagerort - … Versand Produktkatalog Kaufempfehlung Marketing Verkauf Die Grenze des Modells und was wir darunter verstehen wird als Bounded Context bezeichnet. Es kann theoretisch mehr als einen Bounded Context in einer Subdomäne geben.
  42. Copyright © Accso – Accelerated Solutions GmbH 90 Strategisches Design

    – Bounded Context API Domain Logic Persistence <<Bounded Context>> Produktkatalog <<Bounded Context>> Verkauf <<Bounded Context>> … Produkt: -ID -Beschreibung -Preis - … Die Komplexität kann reduziert werden, indem für jede Subdomäne (Bounded Context), ein eigenes Modell erstellt wird, um spezifische Probleme innerhalb der Subdomäne zu lösen. SOAP REST … Produkt Produkt … ORM Event Sourcing … Produkt: -ID -Preis - … …
  43. Copyright © Accso – Accelerated Solutions GmbH 91 Strategisches Design

    – Context Map Versand Produktkatalog Kaufempfehlung Marketing Verkauf
  44. Copyright © Accso – Accelerated Solutions GmbH 92 Strategisches Design

    – Context Map Upstream Downstream Upstream und Downstream beschreiben den Fluss von Modellen.
  45. Copyright © Accso – Accelerated Solutions GmbH 93 Strategisches Design

    – Context Map Versand Produktkatalog Kaufempfehlung Marketing Verkauf Upstream Downstream
  46. Copyright © Accso – Accelerated Solutions GmbH 94 Domänenmodell Domänenwissen

    Kollaborative Modellierungstechniken Domain-driven Design Ubiquitous Language Strategisches Design Taktisches Design
  47. Copyright © Accso – Accelerated Solutions GmbH 95 Taktisches Design

    – eine Mustersprache Der Domain Layer ist unabhängig von den anderen Layern. Die Implementierung der Persistence ist Teil des Infrastructure Layers. Im Application Layer werden Domäne und Infrastruktur zusammengebracht
  48. Copyright © Accso – Accelerated Solutions GmbH 96 Beispiel –

    Warenkorb Ein Kunde kann einen neuen Warenkorb eröffnen. Der Warenkorb hat einen maximalen Einkaufswert, der nicht überschritten werden darf. Einem Warenkorb können Produkte hinzugefügt werden. Wird erstmals ein Produkt in den Warenkorb gelegt, gibt es eine Preisbindung. Für Produkte kann eine Limitierung pro Warenkorb existieren. …
  49. Copyright © Accso – Accelerated Solutions GmbH 98 Taktisches Design

    – Value Object Eigenschaften Vergleich über die Werte Unveränderlich Selbstvalidierend Kann aggregiert sein Kann berechenbar sein Anzahl Adresse Preis …
  50. Copyright © Accso – Accelerated Solutions GmbH 99 Taktisches Design

    – Value Object Eigenschaften Vergleich über die Werte Unveränderlich Selbstvalidierend Kann aggregiert sein Kann berechenbar sein Anzahl Adresse Preis …
  51. Copyright © Accso – Accelerated Solutions GmbH 100 Taktisches Design

    – Value Object Eigenschaften Vergleich über die Werte Unveränderlich Selbstvalidierend Kann aggregiert sein Kann berechenbar sein Anzahl Adresse Preis …
  52. Copyright © Accso – Accelerated Solutions GmbH 101 Taktisches Design

    – Value Object Eigenschaften Vergleich über die Werte Unveränderlich Selbstvalidierend Kann aggregiert sein Kann berechenbar sein Anzahl Adresse Preis …
  53. Copyright © Accso – Accelerated Solutions GmbH 102 Taktisches Design

    – Value Object Eigenschaften Vergleich über die Werte Unveränderlich Selbstvalidierend Kann aggregiert sein Kann berechenbar sein Anzahl Adresse Preis …
  54. Copyright © Accso – Accelerated Solutions GmbH 103 Taktisches Design

    – Value Object Eigenschaften Vergleich über die Werte Unveränderlich Selbstvalidierend Kann aggregiert sein Kann berechenbar sein Anzahl Adresse Preis …
  55. Copyright © Accso – Accelerated Solutions GmbH 104 Taktisches Design

    – Value Object Eigenschaften Vergleich über die Werte Unveränderlich Selbstvalidierend Kann aggregiert sein Kann berechenbar sein Anzahl Adresse Preis …
  56. Copyright © Accso – Accelerated Solutions GmbH 106 Taktisches Design

    – Entity Eigener Lebenszyklus Vergleich über (fachliche) Id‘s Selbstvalidierend Zustandsabhängige Validierung Validierung von Invarianten Eigenschaften Referenzierung von Aggregates über deren Id Warenkorbzeile
  57. Copyright © Accso – Accelerated Solutions GmbH 107 Taktisches Design

    – Entity Eigener Lebenszyklus Vergleich über (fachliche) Id‘s Selbstvalidierend Zustandsabhängige Validierung Validierung von Invarianten Eigenschaften Referenzierung von Aggregates über deren Id Warenkorbzeile
  58. Copyright © Accso – Accelerated Solutions GmbH 108 Taktisches Design

    – Entity Eigener Lebenszyklus Vergleich über (fachliche) Id‘s Selbstvalidierend Zustandsabhängige Validierung Validierung von Invarianten Eigenschaften Referenzierung von Aggregates über deren Id Warenkorbzeile
  59. Copyright © Accso – Accelerated Solutions GmbH 109 Taktisches Design

    – Entity Eigener Lebenszyklus Vergleich über (fachliche) Id‘s Selbstvalidierend Zustandsabhängige Validierung Validierung von Invarianten Eigenschaften Referenzierung von Aggregates über deren Id Warenkorbzeile
  60. Copyright © Accso – Accelerated Solutions GmbH 110 Taktisches Design

    – Entity Eigener Lebenszyklus Vergleich über (fachliche) Id‘s Selbstvalidierend Zustandsabhängige Validierung Validierung von Invarianten Eigenschaften Referenzierung von Aggregates über deren Id Warenkorbzeile
  61. Copyright © Accso – Accelerated Solutions GmbH 111 Taktisches Design

    – Entity Eigener Lebenszyklus Vergleich über (fachliche) Id‘s Selbstvalidierend Zustandsabhängige Validierung Validierung von Invarianten Eigenschaften Referenzierung von Aggregates über deren Id Warenkorbzeile
  62. Copyright © Accso – Accelerated Solutions GmbH 113 Nachteile eines

    großen Objektgraphen Warenkorb Warenkorbzeile Anzahl Preis Kunde Produkt Preis Größe Farbe Adresse Kategorie (privat, gewerblich) … … E-Mail ✗ Besitzt hohe Komplexität Verschlechtert die Wartbarkeit ✗ Nicht benötigte Daten werden geladen Verschlechtert die Performance ✗ Unnötiges Locking durch zu große Konsistenzgrenze Verschlechtert die Performance max. Einkaufswert
  63. Copyright © Accso – Accelerated Solutions GmbH 114 Taktisches Design

    – Aggregate Ist eine fachlich motivierte Konsistenzgrenze Modellierung anhand Invarianten und Use Cases Besitzt genau eine Root-Entity als Einstiegspunkt oder ist eine Zustandsänderung interner Entities nur über bereitgestellte fachliche Methoden Die Root-Entity gibt dem Aggregate seinen konzeptionellen Namen Eigenschaften & Herausforderungen ☇ Sollten klein gehalten werden Warenkorb Produkt Kunde
  64. Copyright © Accso – Accelerated Solutions GmbH 115 Taktisches Design

    – Aggregate Ist eine fachlich motivierte Konsistenzgrenze Modellierung anhand Invarianten und Use Cases Besitzt genau eine Root-Entity als Einstiegspunkt oder ist eine Zustandsänderung interner Entities nur über bereitgestellte fachliche Methoden Die Root-Entity gibt dem Aggregate seinen konzeptionellen Namen Eigenschaften & Herausforderungen ☇ Sollten klein gehalten werden Warenkorb Produkt Kunde
  65. Copyright © Accso – Accelerated Solutions GmbH 116 Taktisches Design

    – Aggregate Ist eine fachlich motivierte Konsistenzgrenze Modellierung anhand Invarianten und Use Cases Besitzt genau eine Root-Entity als Einstiegspunkt oder ist eine Zustandsänderung interner Entities nur über bereitgestellte fachliche Methoden Die Root-Entity gibt dem Aggregate seinen konzeptionellen Namen Eigenschaften & Herausforderungen ☇ Sollten klein gehalten werden Warenkorb Produkt Kunde
  66. Copyright © Accso – Accelerated Solutions GmbH 117 Taktisches Design

    – Aggregate Ist eine fachlich motivierte Konsistenzgrenze Modellierung anhand Invarianten und Use Cases Besitzt genau eine Root-Entity als Einstiegspunkt oder ist eine Zustandsänderung interner Entities nur über bereitgestellte fachliche Methoden Die Root-Entity gibt dem Aggregate seinen konzeptionellen Namen Eigenschaften & Herausforderungen ☇ Sollten klein gehalten werden Warenkorb Produkt Kunde
  67. Copyright © Accso – Accelerated Solutions GmbH 118 Taktisches Design

    – Aggregate Ist eine fachlich motivierte Konsistenzgrenze Modellierung anhand Invarianten und Use Cases Besitzt genau eine Root-Entity als Einstiegspunkt oder ist eine Zustandsänderung interner Entities nur über bereitgestellte fachliche Methoden Die Root-Entity gibt dem Aggregate seinen konzeptionellen Namen Eigenschaften & Herausforderungen ☇ Sollten klein gehalten werden Warenkorb Produkt Kunde
  68. Copyright © Accso – Accelerated Solutions GmbH 119 Das Modell

    – unterteilt in Aggregates Warenkorb Warenkorbzeile Anzahl Preis Kunde Produkt Preis Größe Farbe Adresse Kategorie (privat, gewerblich) … … E-Mail Modelliert anhand von Use Cases und Invarianten Modelliert nicht die Realität oder Persistenzstruktur nach Vermeidet bidirektionale Assoziationen Referenziert andere Aggregates über deren Id Modelliert nicht anhand der Anforderungen einer UI Aggregierung von Aggregates kann der Application Service übernehmen. ✗Die Performance von lesenden Anfragen nimmt ab. Ggf. CQRS in Betracht ziehen max. Einkaufswert
  69. Copyright © Accso – Accelerated Solutions GmbH 121 Taktisches Design

    – Repository Abstraktion des Datenzugriffs in Form einer Facade Nur Aggregates dürfen geladen werden Sonst können Invarianten verletzt werden Das Interface ist Teil der Domäne Die Implementierung gehört zur Infrastruktur Übersetzt zwischen Domänen- und Persistenzmodellen Eigenschaften
  70. Copyright © Accso – Accelerated Solutions GmbH 122 Taktisches Design

    – Repository Abstraktion des Datenzugriffs in Form einer Facade Nur Aggregates dürfen geladen werden Sonst können Invarianten verletzt werden Das Interface ist Teil der Domäne Die Implementierung gehört zur Infrastruktur Übersetzt zwischen Domänen- und Persistenzmodellen Eigenschaften
  71. Copyright © Accso – Accelerated Solutions GmbH 123 Taktisches Design

    – Repository Abstraktion des Datenzugriffs in Form einer Facade Nur Aggregates dürfen geladen werden Sonst können Invarianten verletzt werden Das Interface ist Teil der Domäne Die Implementierung gehört zur Infrastruktur Übersetzt zwischen Domänen- und Persistenzmodellen Eigenschaften
  72. Copyright © Accso – Accelerated Solutions GmbH 124 Taktisches Design

    – Repository Abstraktion des Datenzugriffs in Form einer Facade Nur Aggregates dürfen geladen werden Sonst können Invarianten verletzt werden Das Interface ist Teil der Domäne Die Implementierung gehört zur Infrastruktur Übersetzt zwischen Domänen- und Persistenzmodellen Eigenschaften
  73. Copyright © Accso – Accelerated Solutions GmbH 125 Taktisches Design

    – Repository Abstraktion des Datenzugriffs in Form einer Facade Nur Aggregates dürfen geladen werden Sonst können Invarianten verletzt werden Das Interface ist Teil der Domäne Die Implementierung gehört zur Infrastruktur Übersetzt zwischen Domänen- und Persistenzmodellen Eigenschaften
  74. Copyright © Accso – Accelerated Solutions GmbH 126 Taktisches Design

    – Repository Abstraktion des Datenzugriffs in Form einer Facade Nur Aggregates dürfen geladen werden Sonst können Invarianten verletzt werden Das Interface ist Teil der Domäne Die Implementierung gehört zur Infrastruktur Übersetzt zwischen Domänen- und Persistenzmodellen Eigenschaften
  75. Copyright © Accso – Accelerated Solutions GmbH 127 Taktisches Design

    – Repository Abstraktion des Datenzugriffs in Form einer Facade Nur Aggregates dürfen geladen werden Sonst können Invarianten verletzt werden Das Interface ist Teil der Domäne Die Implementierung gehört zur Infrastruktur Übersetzt zwischen Domänen- und Persistenzmodellen Eigenschaften
  76. Copyright © Accso – Accelerated Solutions GmbH 132 Datenmodellierung mit

    Domain-Driven Design Microservices Agenda Wann? Konsequenzen!
  77. Copyright © Accso – Accelerated Solutions GmbH 136 Leseliste für

    den Einstieg Prof. Peter Kruse Wie reagieren Menschen auf wachsende Komplexität 03/2008 https://www.youtube.com/watch?v=m3 QqDOeSahU Verdeutlicht die Bedeutung von Komplexität für unsere Lösungsstrategien Tobias Flohre Wer Microservices richtig macht, braucht keine Workflow Engine und kein BPMN 09/2015 https://blog.codecentric.de/2015/09/wer- microservices-richtig-macht-braucht-keine-workflow- engine-und-kein-bpmn/ Verdeutlicht die konträren Philosophien Orchestrierung und Choreographie
  78. Copyright © Accso – Accelerated Solutions GmbH 137 Leseliste für

    den Einstieg Martin Fowler The Many Meanings of Event-Driven Architecture GOTO 2017, 05/2017 https://www.youtube.com/watch?v=STKCRSUsyP0 Verdeutlicht die Konsequenzen von Events als First Class Citizen der Architektur, ggf. mit eigenem Lebenszyklus. Stefan Tilkov Microservices: Patterns und Antipatterns 02/2018 https://vimeo.com/256411314 Verdeutlicht, wieso in einer Microservice- Architektur die Zielsetzung Evolution vorrangig ist gegenüber Wiederverwendung.
  79. Copyright © Accso – Accelerated Solutions GmbH 138 Leseliste für

    den Einstieg embarc architektur SPICKER: Microservices http://architektur-spicker.de/ Gute Kurzeinführung in das Thema Microservices. Martin Fowler BoundedContext 01/2014 https://martinfowler.com/bliki/BoundedContext.html Erklärt die Möglichkeiten von BoundedContexts.
  80. Copyright © Accso – Accelerated Solutions GmbH 139 Leseliste für

    den Einstieg Stephan Schneider Onion-Achitektur und Ports-and- Adapters-Stil — ein Vergleich 10/2018 https://www.maibornwolff.de/blog/ddd- architekturen-im-vergleich Vergleicht verschiedene Umsetzungsstile zu DDD.
  81. Copyright © Accso – Accelerated Solutions GmbH 140 Quellen, Links

    Folien 9, 28, 30, 31, 34, 35 - Symbolbild Monolith Foto von Brian Breeden auf Unsplash; https://unsplash.com/search/photos/limestone?utm_source=unsplash&utm_medium=referral&utm_content=creditC opyText Folien 30, 31, 32, 33, 34 - Symbolbild Modulith Foto von Annie Spratt, Unsplash; https://unsplash.com/search/photos/limestone?utm_source=unsplash&utm_medium=referral&utm_content=creditC opyText Folien 29, 34 - Symbolbild Microservices Foto von Jarren Simmons, Unsplash; https://unsplash.com/search/photos/basalt- rock?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText Folie 12 - Netflix' Prioritäten Microservices at Netflix Scale: Principles, Tradeoffs & Lessons Learned (GOTO 2016); Ruslan Meshenberg (Netflix); 09/2016; https://www.youtube.com/watch?v=57UK46qfBLY ; bei 16:40
  82. Copyright © Accso – Accelerated Solutions GmbH 141 Quellen, Links

    Folie 13 - REWE Wachstum Vom Testen von Monolithen zur Qualitätssicherung für Microservices; Oliver Monneke, Michael Kutz; 06/2018; https://prezi.com/p/4bwxooscihil/2018-06-26-rewe-digital-meetup-juni/ Folie 14 - Netflix Deathstar https://www.slideshare.net/adriancockcroft/goto-berlin Migrating to Microservices (GOTO14); Adrian Cockcroft (Netflix); 11/2014 Folie 15 - Video Doppelpendel Double Pendulum Chaos Light Writing (computer simulation) 4; Paul Nathan; 10/2010; https://www.youtube.com/watch?v=V4hvENrtMeE&feature=youtu.be Folie 16, 18 - Martin Fowler https://martinfowler.com/ Folie 16 - Produktivität MicroservicePremium; Martin Fowler; 03/2015; https://martinfowler.com/bliki/MicroservicePremium.html
  83. Copyright © Accso – Accelerated Solutions GmbH 142 Quellen, Links

    Folie 17, 18 - Dave Snowden https://cognitive-edge.com/our-people/dave-snowden/ Folie 17, 19 - Cynefin-Framework https://en.wikipedia.org/wiki/Cynefin_framework Folie 19 - William Edwards Deming https://de.wikipedia.org/wiki/William_Edwards_Deming Folie 19 - Demingkreis https://de.wikipedia.org/wiki/Demingkreis Folie 20 - Video Prof. Peter Kruse Wie reagieren Menschen auf wachsende Komplexität; 03/2008; https://www.youtube.com/watch?v=m3QqDOeSahU Folien 22, 23 - Cross-/Funktionale Teams Microservices - a definition of this new architectural term; James Lewis, Martin Fowler; 03/2014; https://www.martinfowler.com/articles/microservices.html
  84. Copyright © Accso – Accelerated Solutions GmbH 143 Quellen, Links

    Folien 22, 23 - Melvin Conway https://twitter.com/conways_law Folie 24 - Teambuilding Teambuilding Übungen: Bessere Teams bauen; https://karrierebibel.de/teambuilding/ Folie 24 - Teams Trudy Mandeville; https://globaltalentadvisors.com/2017/04/the-importance-of-cross-functional-instructional- design-teams/ Folie 24 - Delegation Poker https://management30.com/practice/delegation-poker/ Folie 50 - Simon Brown, Twitter https://twitter.com/simonbrown/status/962945350737825793 Folie 51 - Modular Monolith Simon Brown; http://www.codingthearchitecture.com/presentations/devnexus2016-modular-monoliths
  85. Copyright © Accso – Accelerated Solutions GmbH 144 Quellen, Links

    Folie 54 - Kirk Knoernschild Java Application Architecture; http://www.kirkk.com/modularity/ Folie 54 - Vortrag "Modularity Patterns"; Frankfurter Entwicklertag 2018 https://entwicklertag.de/frankfurt/2018/modularity-patterns-mit-java-9-jigsaw Folien 63, 64, 65, 67 - Bounded Context Martin Fowler; BoundedContext; 15.01.2014; https://martinfowler.com/bliki/BoundedContext.html Folien 68, 69 - Skalierung James Lewis; Martin Fowler; 25.3.2014; Microservices - a definition of this new architectural term; https://www.martinfowler.com/articles/microservices.html Folien 58, 59 - BPMN, Workflow Wer Microservices richtig macht, braucht keine Workflow Engine und kein BPMN; 09/2015; Tobias Flohre; https://blog.codecentric.de/2015/09/wer-microservices-richtig-macht-braucht-keine-workflow-engine-und-kein- bpmn/
  86. Copyright © Accso – Accelerated Solutions GmbH 145 Quellen, Links

    Folien 30, 35 - Uber Microservices Graph https://twitter.com/msuriar/status/1110244877424578560 Folien 31, 33, 34 - Netflix-Traffic-Flow (Vizceral) Mastering Chaos - A Netflix Guide to Microservices (QCon 2016); Josh Evans (Netflix); 06/2016; https://www.youtube.com/watch?v=CZ3wIuvmHeM ; 2:20 Folie 34 - Simian Army in Chaos Engineering; https://medium.com/netflix-techblog/the-netflix-simian-army- 16e57fbab116 ; https://en.wikipedia.org/wiki/Chaos_engineering Folie 38, 39 - Latenz in der echten Welt https://imgur.com/8LIwV4C Folie 36 - Tools, Logos Logo Graylog - https://www.graylog.org/ Logo Prometheus - https://prometheus.io/ Logo Grafana - https://grafana.com/ Logo Elk-Stack - https://www.elastic.co/elk-stack
  87. Copyright © Accso – Accelerated Solutions GmbH 146 Quellen, Links

    Folien 42, 43, 44 - Client-Integration Architektur-Spicker Nr. 3: Microservices; Team embarc; 02/2016; http://www.embarc.de/wp-content/uploads/2016/06/Architektur-Spicker3-Microservices.pdf Folie 74 – Software Architecture Camp https://software-architecture-camp.de/isaqb-advanced-level/modul-ddd-domain-driven-design/ Folie 79 – Weltmeere – Umweltbelastungen, Dierke https://diercke.westermann.de/content/weltmeere-umweltbelastungen-978-3-14-100800-5-251-5-1 Folie 79 – Großen Meereströmungen; World ocean review; https://worldoceanreview.com/de/wor-1/klimasystem/grose-meeresstroemungen/ Folie 79 - Clayre & Eef Globus 22*37 cm Grün Braun Holz Metall; Milatonie https://www.milatonie.com/de/globusse/34944-clayre-eef-wereldbol-decoratie-64925-222237-cm-groen-bruin- beige-hout-ijzer-rond-globe-8717459801578.html
  88. Copyright © Accso – Accelerated Solutions GmbH 147 Quellen, Links

    Folie 79 – Erde; Sonnen-Sturm; https://sonnen-sturm.info/lexikon/erde#google_vignette Folie 83 – DDD - Events Are Complex; Phillip Johnson; https://phillipjohnson.co.uk/ddd-events-are-complex Folie 135 - Twitter, Phil Webb https://twitter.com/phillip_webb/status/1127233088478531584
  89. Copyright © Accso – Accelerated Solutions GmbH 148 148 Copyright

    © Accso GmbH 148 Artikelserie in Informatik Aktuell https://www.informatik- aktuell.de/entwicklung/methoden/ microservices-fachliche- entscheidungshilfen-fuer-den- einsatz.html https://tinyurl.com/y2455sun
  90. Copyright © Accso – Accelerated Solutions GmbH 149 149 Copyright

    © Accso GmbH 149 https://speakerdeck.com/mrtnlhmnn @accso @marcus__franz @mrtnlhmnn https://accso.de/tag/microservices/ https://accso.de/ueber-uns/veroeffentlichungen- und-konferenzbeitraege/
  91. Copyright © Accso – Accelerated Solutions GmbH 150 SHARING YOUR

    CHALLENGE 150 Copyright © Accso GmbH Accso – Accelerated Solutions GmbH 📱 | +49 6151 13029-0 ✉️ | [email protected] 🌍 | www.accso.de Hilpertstraße 12 | 64295 Darmstadt Rahmhofstraße 2-4 | 60313 Frankfurt a.M. Im Mediapark 6a | 50670 Köln Balanstraße 55 | 81541 München 21 Belair Drive | Constantia, Cape Town 7806