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

OOP2021 - Mono- Modu, Microlith

OOP2021 - Mono- Modu, Microlith

Seit dem Artikel von M. Fowler und J. Lewis in 2012 sind Microservices die Antwort auf alle Fragen. Sie schienen die Antwort auf die steigende Komplexität von Softwareprojekten und Cloudanwendungen zu sein. Aber da sind Ausnahmen, die unterschiedlich beantwortet werden müssen. The Vortrag diskutiert Vorteile und Nachteile von Microservices, Modulithen und Monolithen unter Benutzung von realen Beispielen. Als Ergebnis werden Checklisten vorgestellt, die die Entscheidungen in einem solchen komplexen Umfeld einfacher machen.

Annegret Junker

February 11, 2021
Tweet

More Decks by Annegret Junker

Other Decks in Technology

Transcript

  1. © Allianz Dr. Annegret Junker 10.02.2021 Mono-, Modu-, Microliths –

    oder welche Steine benutze ich zum Bauen © Junker, 2021
  2. © Allianz • Lead Architect Allianz Deutschland AG • Tätig

    in unterschiedlichen Rollen: Entwicklerin, Product Owner, Architektin Veröffentlichungen Lösungsmuster für Cross-Cutting-Concerns in Microservices, IT Aktuell, 06/2020 Altbewährte Entwurfsmuster für zeitgemäße Microservice—Anwendungen, heise developer, 08/2020 Agile Unternehmensarchitekturen, Java Magazin 12/2020 Blog: https://annegretsarchitecture.blog/ Github: https://github.com/Grinseteddy LinkedIn: https://www.linkedin.com/in/dr-annegret-junker-141a99a4/ Twitter: Grinseteddy 10.02.2021 Mono-, Modu-, Microliths | OOP2021 | Junker 2 Zu meiner Person Mono-, Modu-, Microliths © Wieland, 2020
  3. © Allianz Agenda Contents 3 01 Motivation und Definitionen 02

    Beispiele a Produktionsplanung b Taskmanagement c Kleines Bestandssystem d Expertensystem 03 Einflussfaktoren Architekturentscheidungen 04 Zusammenfassung 10.02.2021 Mono-, Modu-, Microliths | OOP2021 | Junker
  4. © Allianz Warum ist es überhaupt ein Frage ob ich

    Monolithen oder Microservices verwende 01 Motivation 11.02.21 4 Mono-, Modu-, Microliths | OOP2021 | Junker © Junker 2021
  5. © Allianz Microservices sind heute in aller Munde. Ihre unbestreitbaren

    Vorteile liegen in ihrer Flexibilität und Skalierbarkeit. Aber diese Vorteile werden durch steigende Komplexität in der Infrastruktur erkauft. Gibt es Entscheidungskriterien, die den Ausgleich zwischen dieser Komplexität und der gewünschten Skalierbarkeit und Flexibilität erleichtern? Motivation 5 Motivation Mono-, Modu, Microliths | Junker 10.02.201 © Junker 2020
  6. © Allianz Microservices sind eine Technik, die eine Applikation als

    eine Sammlung loser gekoppelter Dienste zusammenstellt. Motivation 6 Microservice Definition Mono-, Modu, Microliths | Junker 10.02.2021 Jamshidi, P.; Pahl, C.; Mendonça, N. C.; Lewis, J.; Tilkov, S.: Microservices: The Journey So Far and Challenges Ahead, IEEE Software. 35 (3): 24–35. doi:10.1109/MS.2018.2141039, 2018 © Junker 2020 © Junker, 2021
  7. © Allianz ü Als einzelner Dienst einfacher in die Produktion

    zu bringen ü Einfacher verständlich durch Abgeschlossenheit ü Bessere Wartbarkeit durch bessere Verständlichkeit ü Können durch ein einzelnes Team weiter entwickelt und gewartet werden ✘ Stellen nur eine einzelne Funktion zur Verfügung ✘ Stolperfallen ✘ Kein verlässliches Netzwerk ✘ Entstehende Latenzzeiten der Übertragung ✘ Kein sicheres Netzwerk ✘ Sich ändernde Topologie des Netzwerks ✘ Datenpersistenz über mehrere Dienste – „Eventual Consistency“ ✘ Ende-zu-Ende-Testen schwierig Motivation 7 Microservices Vor- und Nachteile Mono-, Modu, Microliths | Junker 10.02.2021 Vorteile Nachteile
  8. © Allianz Ein Monolith ist alles, was einheitlich und unbeweglich

    ist. In der Software-Architektur verstehen wir als Monolithen Software-Strukturen, die in einem Dienst viele Funktionen zur Verfügung stellen, die nicht ohne Aufwand zu trennen sind. Motivation 8 Monolith Definition Mono-, Modu, Microliths | Junker Vgl. https://en.wiktionary.org/wiki/monolith, 27.11.2020, abgerufen 30.1.2021 © Junker, 2021 10.02.2021
  9. © Allianz ü Einfach als nicht-trennbarer Dienst in die Produktion

    zu bringen ü Einfache manuelle Ende-zu-Ende-Tests ü Horizontales Skalieren ✘ Funktionalitäten als Sammlung schwer zu verstehen ✘ Hohe Aufwände für Produktionsgänge bei kleinen Änderungen (gesamthaftes Ende-zu-Ende-Testen notwendig) ✘ Implikationen auf eigentlich unabhängige Funktionalitäten bei kleinen Änderungen ✘ Nur gesamthaftes Skalieren möglich Motivation 9 Monolith Vor- und Nachteile Mono-, Modu, Microliths | Junker Vorteile Nachteile 10.02.2021
  10. © Allianz Ein Modulith ist ein Deployment-Monolith, wie er von

    Martin Fowler in „Monolith First“ eingeführt wird. Hierbei ist ein Deployment-Monolith ein gut strukturierter Monolith, der als Ganzes in die Produktion gebracht wird. Motivation 10 Modulith Definition Mono-, Modu, Microliths | Junker © Junker 2020 M.Fowler: MonolithFirst, 3.6.2015, https://martinfowler.com/bliki/MonolithFirst.html , abgerufen 30.1.2021 © Junker, 2021 10.02.2021
  11. © Allianz ü Einhaltung des YAGNI – Prinzips (You aren‘t

    gonna need it“ ü Verlässliche Konfiguration über Module ü Strenge Kapselung ✘ Kapselung und Struktur können schnell zerfleddern (technisch schwierig sicher zu stellen) – ein zerfledderter Modulith ist wieder ein alb-traumhafter Monolith Motivation 11 Modulith Vor- und Nachteile Mono-, Modu, Microliths | Junker Vorteile Nachteile 10.02.2021
  12. © Allianz Anwendungsbeispiele für Microservice, Monolithen und Modulithen 11.02.21 13

    02 Beispiele Mono-, Modu-, Microliths | OOP2021 | Junker © Junker 2021
  13. © Allianz Organisation Domäne Prozess Beispiele 14 Kurze Zusammenfassung der

    Methodiken Mono-, Modu, Microliths | Junker Domain 1 Domain 2 Domain 3 Domain xy Geteiltes Geschäftsobjekt Geteiltes Geschäftsobjekt Geteiltes Geschäftsobjekt Geteiltes Geschäftsobjekt Geteiltes Geschäftsobjekt Geschäfts- porozess Pro- zess Pro- zess Pro- zess Pro- zess Pro- zess Domain 1 Domain 2 Domain xy Domain 3 Domain xy Domain 2 Domain 3 Domain 1 Event Storming DDD Organisation 10.02.2021
  14. © Allianz - Planung einer Automobilproduktion ein Jahr im Voraus

    - Vorausplanung von Produktionskapazitäten drei Jahre im Voraus - Monatliche Anpassungen der Planungen an tatsächliche Verkäufe und Bestellungen 16 Produktionsplanung eines großen Automobilherstellers Beispiel Produktionsplanung Mono-, Modu, Microliths | Junker © Junker, 2021 Testreihen Planung der Produktions- kapizitäten Erforderliche Produktionskapazitäten Produktion Geplante Produktions- kapazitäten Verkauf Abruf Einkauf Geplante Modelle Bestellte Modelle Tatsächliche Produktions- kapazitäten Status 10.02.2021
  15. © Allianz 17 Einflussfaktoren auf die Architekturplanung Produktionsplanung Beispiel Produktionsplanung

    Mono-, Modu, Microliths | Junker Organisations- Komplexität Nicht-funktionale Anforderungen Funktionale Schnitt • Sehr hohe funktionale Komplexität • 8..10 Implementierungs-Team • Implementierungs-Team als Offshore-Teams mit geringer Interaktion zum Auftraggeber • Sehr untershciedliche Skalierungsanforderungen in Planung und Produktion • Abgleich mit Planung erfordert hohe Skalierung der Produktionskomponente • Jährliche Abgleiche erfordern hohe Skalierung in der Planungskomponente 10.02.2021
  16. © Allianz 8007slido4 Welchen Architekturstil passt am besten zur Produktionsplanung?

    18 Mono-, Modu, Microliths | Junker sli.do #80074 10.02.2021
  17. © Allianz Beispiel Produktionsplanung 19 Produktionsplanung – Ideale Lösung Mono-,

    Modu, Microliths | Junker Testreihen Produktionsplanung Produktion Rollierende Jahresplanung Produktions- steuerung Kapazitäten Produktionsplanung Rollierende Drei- Jahres Planung Kapazitäten Stückzahlen Verkauf Einkauf Verkauf Stückzahlen Eventbus Einkauf Planung Verkauf Planung Proudktion Planung Planung Verkauf Planung Verkauf Testreihen Planung Microservices 10.02.2021
  18. © Allianz Beispiel Produktionsplanung 20 Produktionsplanung – Reale Architektur Mono-,

    Modu, Microliths | Junker Produktionsplanung Produktion und Verkauf Kapazitäten Stückzahlen Rollierende Jahresplanung Rollierende Drei- Jahres Planung Produktions- steuerung Verkauf Zur Verfügung stehende Kapazitäten Abgerufene Kapazitäten Monatlicher Batch Täglicher Abgleich via Files Einkauf Testreihen Monolith 10.02.2021
  19. © Allianz ü Stabiles über Jahre bewährtes System ü Datenbank

    liefert „Single Point of Truth“ ü Wartbarkeit vom eingearbeiteten Dienstleister auch offshore möglich ✘ Hohe Aufwände für Produktionsgänge mit erheblichen Downtimes (> 12h) ✘ Extrem hohe Testaufwände ✘ Eventuelle Fehler sind erst beim nächsten Planungslauf (1 Monat) sichtbar Beispiel Produktionsplanung 21 Produktionsplanung Architektur Mono-, Modu, Microliths | Junker Vorteile Nachteile 10.02.2021
  20. © Allianz Beispiel Taskmanagement 23 Task Management von Agenturen Mono-,

    Modu, Microliths | Junker - Sehr flexibles Task Management für Versicherungsangenturen - Tasks können automatisch von externen Systemen als auch manuell erstellt werden - Tasks werden aus verschiedenen Systemen abgefragt um abhängige Systeme über Änderungen zu informieren © Junker, 2021 Kunden- webseite Taskmanagement Neue Aufgabe Makler Neue Aufgabe Beratung Führe Beratung durch Verkaufs- prozess Neue Aufgabe Durchgeführte Aufgaben 10.02.2021
  21. © Allianz 24 Einflussfaktoren auf die Architekturplanung Taskmanagement Beispiel Taskmanagement

    Mono-, Modu, Microliths | Junker 10.02.201 Funktionaler Schnitt • Geringe bis mittlere funktionale Komplexität Organisations- Komplexität • 1 internes Implementierungsteam Nicht-funktionale Anforderungen • Eher einheitliche Sklalierbarkeitsanforderungen • Gut definierte Interfaces für die abhängigen Systeme notwendig • Abhängige Systeme müssen unabhängig vom Taskmanagement entwickelt werden können © Junker, 2021
  22. © Allianz 8007slido4 25 Mono-, Modu, Microliths | Junker sli.do

    #80074 Welchen Architekturstil passt am besten zum Taskmanagement? 10.02.2021
  23. © Allianz Beispiel Taskmanagement 26 Task Management – How it

    was done Mono-, Modu, Microliths | Junker Task Management Task Management Kunden-Websites Tasks Beratung Beratung Verträge Verkaufsprozess Verkaufsprozess Chancen Makler-Websites Beratung Chancen Kunden Makler Fine Grained Microservices 10.02.2021
  24. © Allianz Beispiel Taskmanagement 27 Task Management – Ideale Architektur

    Mono-, Modu, Microliths | Junker Task Management Task Management Kunden-Websites Tasks Eventbus Task Task Beratung Beratung Verträge Task Task Verkaufsprozess Verkaufsprozess Chancen Task Task Coarse Grained Microservices Makler-Websites 10.02.2021
  25. © Allianz ü Kleine einfach zu verstehenden Services ü Gute

    Erweiterbarkeit durch standardisierte Schnittstellen ü Unabhängige Entwicklung in unabhängigen Domänen (Prozess, Betreuung) möglich ✘ Erhöhte Komplexität durch zusätzliche Komponente (Eventbus) Beispiel Taskmanagement 28 Taskmangement Architektur Mono-, Modu, Microliths | Junker Vorteile Nachteile 10.02.2021
  26. © Allianz Beispiel Kleines Bestandssystem eine Spezial- versicherers 29 Mono-,

    Modu, Microliths | Junker © Junker, 2021 10.02.2021
  27. © Allianz Beispiel kleines Bestandssystem 30 Kleines Bestandssystem einer Spezialversicherung

    Mono-, Modu, Microliths | Junker - Kleines Bestandssystem für eine kleine Versicherung mit einem Produkt - Produktparameter sind flexible durch das Produktmanagement anpassbar - Verkauf kann Produktparameter individuell für einen Kunden anpassen - Abhängige Systeme wie Output- oder Inputmanagement werden extern eingekauft. © Junker, 2021 Product- definition Parameter Parameter Segmente Segmente Interessenten Products Kundenanpassungen Kunden- betreuung Verträge Dokumente Dokumente Dokumente 10.02.2021
  28. © Allianz 31 Einflussfaktoren auf die Architekturplanung Kleines Bestandssystem Beispiel

    Produktionsplanung Mono-, Modu, Microliths | Junker Funktionaler Schnitt • Mittlere Funktionalität Organisations- Komplexität • Zwei interne Teams Nicht-funktionale Anforderungen • Keine unterschiedlichen Skalierungsanforderungen © Junker, 2021 10.02.2021
  29. © Allianz 8007slido4 32 Mono-, Modu, Microliths | Junker 10.02.201

    sli.do #80074 © Junker, 2021 Welchen Architekturstil passt am besten zum Kleinen Bestandssystem?
  30. © Allianz Parameter Eventbus Parameter Parameter Parameter Produkte Produkte Produkte

    Produkte Parameter Segmente Segmente Segmente Segmente Produkte Kundenanpassungen Anpas- sungen Produkte Anpas- sungen Produkte Kundenbindung Betreuung Verträge Betreuung Anpas- sungen Dokumente Dokument Dokumente Anpas- sungen Produkte Beispiel Kleines Bestandssystem 33 Kleines Bestandssystem – Ursprüngliche Architektur Mono-, Modu, Microliths | Junker OMS IMS Benutzer Login Event-Driven 10.02.2021
  31. © Allianz Beispiel Kleines Bestandssystem 34 Kleines Bestandssystem - Architektur

    Mono-, Modu, Microliths | Junker Produktdefinition Produktverkauf Laufzeit Kunden- bindung Doku- mente Anpassung OMS IMS Parameter Segment Benutzer Login Kunden Interessenten Produkte Modulith 10.02.2021
  32. © Allianz ü Modulith mit herauslösbaren Anteilen ü Kann in

    einem kleinen Team gepflegt und weiterentwickelt werden ü Einfach in Produktion zu bringen ✘ Funktionale Erweiterungen müssen in vorgegebene Architektur eingepasst werden ✘ Kleine Änderungen verlangen gesamthaften Produktivgang ✘ Verteilte Entwicklung nur bedingt möglich Beispiel Kleines Bestandssystem 35 Kleines Bestandssystem Architektur Mono-, Modu, Microliths | Junker Vorteile Nachteile 10.02.2021
  33. © Allianz Beispiel Beratungssystem 37 Beratungssystem einer Komplettversicherung Mono-, Modu,

    Microliths | Junker - Verkauf von komplexen Produkten wird durch ein Expertensystem unterstützt - Verkaufssystem schlägt “Beste nächste Aktion” vor - Verkaufssystem verschickt Notifikationen und Erinnerungen - Verkaufssystem beobachtet Prozess und sammelt zugehörige Ereignisse © Junker, 2021 Termine Beratung Aufgaben Leads Führe Beratung durch Beratungs- termine Vereinbare Termin Neuer Kunde Angebots- erstellung Interessent Vertrags- erstellung Kunde Prozesse Vertrag Angebot Beratung Neuer Prozess Aufgabe Statistik Angebot Vertrag Prozess 10.02.2021
  34. © Allianz 38 Einflussfaktoren auf die Architekturplanung Expertensystem Beispiel Produktionsplanung

    Mono-, Modu, Microliths | Junker Funktionaler Schnitt • Sehr hohe funktionale Komplexität • Unterschiedliche Domänen in abhängigen Szenarien Organisations- Komplexität • Mehr als 10 interne Teams an verteilten Standorten Nicht-funktionale Anforderungen • Portal mit sehr hohen Anforderungen an die Skalierbarkeit und Verfügbarkeit • Beratung mit mittleren Anforderungen an die Verfügbarkeit • Hohe Anforderungen an die Flexibilität um ein weltweites Ausrollen zu ermöglichen © Junker, 2021 10.02.2021
  35. © Allianz 8007slido4 https://app.sli.do/event/iegmt5ia 39 Mono-, Modu, Microliths | Junker

    sli.do #80074 © Junker, 2021 Welchen Architekturstil passt am besten zum Expertensystem? 10.02.2021
  36. © Allianz Portal Statistik Prozess Beispiel Beratungssystem 40 Beratungssystem -

    Architektur Mono-, Modu, Microliths | Junker Event Broker Login Termine Aufgaben Leads Angebot Vertrag Beratung Event-Driven 10.02.2021
  37. © Allianz ü Flexible und erweiterbare Architektur ü Entkopplung der

    Systeme und dadurch Verringerung der Kommunikationskomplexität ü Unterstützung der Experten durch Prozessinformationen ü Hohe Resilienz durch entkoppelte Systeme ✘ Event Broker als Single Point of Failure ✘ Event Broker Technologie muss in allen Teams verfügbar sein ✘ Entkopplung der Systeme führt zu höherer Komplexität der Gesamtprozesse Beispiel Beratungssystem 41 Beratungssystem - Architektur Mono-, Modu, Microliths | Junker Vorteile Nachteile 10.02.2021
  38. © Allianz Welche Anforderungen entscheiden über Architekturen 42 Mono-, Modu-,

    Microliths | OOP2021 | Junker © Junker 2021 03 Anforderungen und Architekturentscheidungen 10.02.2021
  39. © Allianz Monolith Modulith Microservices • Funktionen können unterschiedlichen Strukturen

    (Packages, Modulen, Klassen) zugeordnet sein • Fachliche Funktionen werden in Packages oder Module gekapselt • Keine direkte Interaktion zwischen Funktionen – Aufruf immer über Schnittstellen • Ein Service pro fachlicher Funktion • Keine direkte Interaktion zwischen Funktionen • Aufrufe nur über standardisierte Schnittstellen 43 Funktionaler Schnitt Anforderungen und Architekturentscheidungen Mono-, Modu, Microliths | Junker 10.02.2021
  40. © Allianz Monolith Modulith Microservices • Ein oder zwei Teams

    • Teamgröße nicht beschränkt • Geringe Interaktion zwischen Auftraggeber und Entwickler (Outsourcing) • Ein bis drei „two pizza“ Teams • Co-located Teams mit hoher Interaktion auch zwischen den Teams • Mehr als drei Teams • Teams können räumlich verteilt sein • Interaktion zwischen Teams und Auftraggeber muss möglich sein 44 Organisatorische Komplexität Anforderungen und Architekturentscheidungen Mono-, Modu, Microliths | Junker 10.02.2021
  41. © Allianz Monolith Modulith Microservices • Keine spezifischen Anforderungen bezüglich

    Skalierbarkeit und Erweiterbarkeit • Fachliche Erweiterbarkeit gegeben • Keine spezifischen Anforderungen an Skalierbarkeit • Hohe Skalierbarkeit • Erweiterbarkeit über zusätzliche fachliche Dienste 45 Nicht-funktionale Anforderungen Anforderungen und Architekturentscheidungen Mono-, Modu, Microliths | Junker 10.02.2021
  42. © Allianz 46 Entscheidungskriterien Anforderungen und Architekturentscheidungen Mono-, Modu, Microliths

    | Junker Kriterium Fachliche Komplexität Funktionen mit unterschiedlichen Ressourcen- Anforderungen Monolith Gering Modulith Mittel Microservices Hoch Nein Nein Ja Anzahl von implementierenden Teams 1..2 1..3 4 und mehr Verteilte Teams Nein Nein Ja Hohe Skalierbarkeit gefordert Nein Nein Ja Automatisches Testen notwendig Nein Nein Ja Automatisches Deployment notwendig Nein Nein Ja 10.02.2021
  43. © Allianz Was passiert wirklich 47 Mono-, Modu-, Microliths |

    OOP2021 | Junker © Junker 2021 04 Zusammenhänge 10.02.2021
  44. © Allianz Zusammenhänge 48 Mono-, Modu, Microliths | Junker 10.02.201

    Skalierbarkeit Funktionelle Komplexität Microservice- Architektur Modulith- Architektur Monolith- Architektur Zusammenhang Skalierbarkeit – Funktionale Komplexität © Junker, 2021
  45. © Allianz Monolith Modulith Microservices • Kleines technisches Proof of

    Concept • Allererste Schritte in eine neue Entwicklung, die hinterher nicht mehr weiterentwickelt wird • Projekts mit mittlerer Komplexität • Erster Schritte in einem Projekt mit noch nicht ausdefinierten Skalierungsanforderungen • Projekte mit hoher funktionaler und/oder organisatorischer Komplexität • Als Erweiterung von Modulithen, wenn unterschiedliche Skalierungsanforderungen auftreten 49 Beispiele für sinnvolle Anwendungen Anforderungen und Architekturentscheidungen Mono-, Modu, Microliths | Junker 10.02.2021
  46. © Allianz Zusammenhänge 50 Mono-, Modu, Microliths | Junker Zusammenhänge

    Realistische Ausgangsposition Hybride Architektur © Junker, 2021 10.02.2021
  47. © Allianz 51 Mono-, Modu-, Microliths | OOP2021 | Junker

    © Junker 2021 05 Zusammenfassung 10.02.2021
  48. © Allianz • Moderne Architekturen lassen sich als Microservice-Architekturen entwerfen.

    • Allerdings muss die Komplexität der verteilten Applikation beherrschbar sein. • Dieser zusätzliche Aufwand lässt sich durch Deployment-Monolithen oder auch Modulithen vermeiden. Diese können bis zu einer gewissen Komplexität und Projektgröße gut eingesetzt werden. • Bei über mehreren Jahren laufenden Projekten entstehen in der Regel immer hybride Architekturen. • Die vorgestellten Entscheidungskriterien können für die unterschiedlichen Architekturansätze angewendet werden. 52 Zusammenfassung Mono-, Modu, Microliths | Junker © Junker, 2021 10.02.2021