Tranchieren am Beispiel
Vom Monolith zum Modulith
Hendrik Lösch
Sprecher
30. September 2021
ZEISS Seite 2
Hendrik Lösch
Management Consultant
@HerrLoesch
hendrik.loesch@zeiss.com
hendrik-loesch.de
slideshare.net/HendrikLsch1
https://www.linkedin.com/learning/instructors/hendrik-losch
Klären wie es um die Software steht
Voranalyse
Voranalyse
Interne Einschätzung
30. September 2021
ZEISS Seite 10
„An einem Neubau führt kein Weg vorbei!“
Voranalyse
Health Check
30. September 2021
ZEISS Seite 11
Vorbesprechung
• Zieldefinition
• Rahmenbedingungen
• Vision
Analyse
Ergebnispräsentation
• Fragen, Messen &
Vergleichen
• Problemstellen
aufzeigen
• Risiken bewerten
• Lösungen aufzeigen
• Zusammenfassung in
Kurzform
• Detaillierte
Begründung in
Schriftform
• Überblick über die gröbsten Schwachstellen
• Grobabschätzung des Aufwandes zur Behebung
• Erstellen eines Grobkonzepts und einer Roadmap
Voranalyse
Typische Problemstellen
30. September 2021
ZEISS Seite 12
Kopplung Duplikate
Voranalyse
Der Monolith
30. September 2021
ZEISS Seite 13
„All or Nothing“ - Deployment
Umfangreiche Releaseplanung
Kompatibilität aller Bestandteile
zwingend
Begrenzte Skalierbarkeit
Hohes Detailwissen nötig
Lange Build-Zeiten
Voranalyse
Warum kein Big Bang?
30. September 2021
ZEISS Seite 14
Alt
Neu
Kick-Off Neues Produkt Mögliche Ablösung
altes Produkt
Funktionsumfang
t
Voranalyse
Warum kein Big Bang?
30. September 2021
ZEISS Seite 15
Alt
Kick-Off Neues Produkt Mögliche Ablösung
altes Produkt
Funktionsumfang
t
Neu
Wissen was wirklich gebraucht wird
Detailanalyse
Detailanalyse
Qualitätsszenarien & Qualitätsbaum
30. September 2021
ZEISS Seite 18
ISO
25010
Security
Confidentiality
S1
Authenticity
S2
Integrity
S3
Reliability
Maturity
S4
Recoverability
S5
Fault tolerance
S6
Maintainability
Modularity
S7
Modifiability
S8
Testability
S9
Analysability
S10
Functionality
Appropriateness
S11
Completeness
S12
Compatibility
Interoperability
S13
Usability
User error
protection
S14
Portability
Installability
S15
Efficiency
Time behaviour
S16
S3 Integrity Extensions to the system, such as plugins, must be checked during startup for authenticity so that only
officially permitted extensions can be introduced into the system.
S10 Analyzability New developers can be productive within four work weeks. This includes a functioning development
environment as well as the necessary understanding of the basic software structures.
S13 Interoperability If a new hardware component must be addressed by the software, only a new software adapter needs to be
implemented as far as no further workflow changes from a business perspective are associated with this
hardware.
https://iso25000.com/index.php/en/iso-25000-standards/iso-25010
Detailanalyse
Nichtfunktionale Anforderungen
30. September 2021
ZEISS Seite 19
Maximal ein Merkmal auf höchster Ebene
Maximal zwei Merkmale auf zweithöchster Ebene
Mindestens ein Merkmal auf untererster Ebene
Detailanalyse
Issue-Analyse
30. September 2021
ZEISS Seite 20
Lösungen definieren
Konzeption
Konzeption
30. September 2021
ZEISS Seite 25
Vergleich von Architekturstilen
Modulith == Laufzeit Monolith || Deployment Monolith
Konzeption
Schichtung
30. September 2021
ZEISS Seite 26
Anwendungslogik
Präsentation
Datenhaltung
Technische
Schichtung
Anwendungslogik
Präsentation
Datenhaltung
Vermittlung
Server
Client
Konzeption
Monolith (skalieren)
30. September 2021
ZEISS Seite 27
Laufzeitumgebung
Softwaresystem
Laufzeitumgebung
Softwaresystem
Laufzeitumgebung
Softwaresystem
Konzeption
Fachliche & Technische Schichtung
30. September 2021
ZEISS Seite 28
Präsentation
Datenhaltung
Vermittlung
Anwendungslogik
Fachliche Schichtung
Technische
Schichtung
Service
Client
Konzeption
Open-Closed-Principle
30. September 2021
ZEISS Seite 29
„Module sollten sowohl offen für
Erweiterungen als auch verschlossen für
Modifikationen sein.“
Bertrand Meyer: Object Oriented Software Construction
Konzeption
30. September 2021
ZEISS Seite 30
Monolith vs. Modulith
Monolith Modulith
Ein gemeinsamer Releaseplan
Alle Bestandteile werden
gemeinsam deployt
Trennung der Verantwortlichkeiten
stark erzwungen.
Alle Bestandteile werden
gemeinsam deployt
Ein gemeinsamer Releaseplan
Ein Code Repository Mehrere Code Repositories
Trennung der Verantwortlichkeiten kaum
Erzwungen.
Aufteilung technisch getrieben Aufteilung fachlich getrieben
Konzeption
30. September 2021
ZEISS Seite 31
Monolith vs. Modulith
Micro Services Modulith
Unterschiedliche Releasepläne
Bestandteile werden unabhängig
von einander deployt und betrieben
Trennung der Verantwortlichkeiten
stark erzwungen.
Mehrere Code Repositories
Aufteilung fachlich getrieben
Alle Bestandteile werden
gemeinsam deployt
Ein gemeinsamer Releaseplan
Trennung der Verantwortlichkeiten
stark erzwungen.
Mehrere Code Repositories
Aufteilung fachlich getrieben
Konzeption
30. September 2021
ZEISS Seite 32
Monolith vs. Modulith
Modulith Microservices
vs.
Deployment Unit Fachliche Module Interne Kommunikation Externe Kommunikation
Sales
Consult-
ing
Invoice-
ing
Sales
Consult-
ing
Invoice-
ing
Konzeption
30. September 2021
ZEISS Seite 33
Kernel & Module
Konzeption
30. September 2021
ZEISS Seite 34
Anbindung an Kernel
Konzeption
30. September 2021
ZEISS Seite 35
Aufteilung und Paketierung
Logische Aufteilung und Abhängigkeiten Paketierung & Deployment Einheiten
Konzeption
30. September 2021
ZEISS Seite 36
Modulkommunikation
Fachliches Modul Technisches Modul
Konzeption
30. September 2021
ZEISS Seite 37
Eventstorming - Theorie
https://www.eventstorming.com/
Konzeption
30. September 2021
ZEISS Seite 38
Eventstorming - Praxis
Fachliches
Modul
Fachliches
Modul
Fachliches
Modul Fachliches
Modul
Gesamtaufwand: ca. 8 PT
Konzeption
30. September 2021
ZEISS Seite 39
Modulschnitt
Den Monolithen aufbrechen
Modularisierung
Modularisierung
30. September 2021
ZEISS Seite 41
Change by Abstraction
Software System
mgl.
Modul
Modularisierung
30. September 2021
ZEISS Seite 42
Change by Abstraction
Software System
mgl.
Modul
Trennschicht /
Abstraktionsschicht
Modularisierung
30. September 2021
ZEISS Seite 43
Change by Abstraction
Software System
Modul
Modularisierung
30. September 2021
ZEISS Seite 44
Change by Abstraction
Software System
Modul
Modularisierung
30. September 2021
ZEISS Seite 45
Gefahr der „Shotgun Surgery“!
Software System
mgl.
Modul
Software System
Strukturierte Modularisierung Unstrukturierte Modularisierung
Modularisierung
30. September 2021
ZEISS Seite 46
Actual Context Map
C – Core Domain
S – Support Domain
G – Generic Domain
​G
​S
G
S
G
G
S
G
C
S
C
G
Modularisierung
30. September 2021
ZEISS Seite 47
Target Context Map
C – Core Domain
S – Support Domain
G – Generic Domain
​G
​S
G
S
G
G
S
G
C
S
C
G
Modularisierung
30. September 2021
ZEISS Seite 48
Change by Abstraction
Ausgangszustand Abstrahierte
Schnittstellen
Geordneter
Zugriff
Geordnete interne
Struktur
Modularisierung
30. September 2021
ZEISS Seite 49
Testbarkeit
Charakterisierungstests Geordnete interne
Struktur
Geordneter
Zugriff
Modularisierung
30. September 2021
ZEISS Seite 50
Aufteilung des Quellcodes
Foundation Repository
Produkt Repository
Bestandscode
Strukturierter
Code
Strukturierter Code
Einbindung per
Paketmanager
Direkte
Referenzierung
Modularisierung
30. September 2021
ZEISS Seite 51
Aufteilung des Quellcodes
Einbindung per
Paketmanager
Direkte
Referenzierung
Produkt Repository
Strukturierter
Code
Strukturierter
Code
Foundation Repository
Bestandscode
Strukturierter
Code
Strukturierter Code
Modularisierung
30. September 2021
ZEISS Seite 52
Migration der UI
(Halb)automatischer
Workflow bzw.
Prozess Parameter
Details
MenuBar
Globale
Statusinformationen Lokale Statusinformationen
Alter Aufbau
Neuer Aufbau
Modularisierung
30. September 2021
ZEISS Seite 53
Migration der UI
(Halb)automatischer
Workflow bzw.
Prozess Parameter
Details
MenuBar
Globale
Statusinformationen Lokale Statusinformationen
Alter Aufbau
Neues Hauptfenster
Neuer Aufbau
Modularisierung
30. September 2021
ZEISS Seite 54
Migration der UI
(Halb)automatischer
Workflow bzw.
Prozess Parameter
Details
MenuBar
Globale
Statusinformationen Lokale Statusinformationen
Alter Aufbau
Neuer Aufbau
Modularisierung
30. September 2021
ZEISS Seite 55
Migration der UI
(Halb)automatischer
Workflow bzw.
Prozess Parameter
Details
MenuBar
Globale
Statusinformationen Lokale Statusinformationen
Alter Aufbau
Neuer Aufbau
Modularisierung
30. September 2021
ZEISS Seite 56
Migration der UI
(Halb)automatischer
Workflow bzw.
Prozess Parameter
Details
MenuBar
Globale
Statusinformationen Lokale Statusinformationen
Alter Aufbau
Neuer Aufbau
Modularisierung
30. September 2021
ZEISS Seite 57
Migration der UI
(Halb)automatischer
Workflow bzw.
Prozess Parameter
Details
MenuBar
Globale
Statusinformationen Lokale Statusinformationen
Alter Aufbau
Neuer Aufbau
Modularisierung
30. September 2021
ZEISS Seite 58
Migration der UI
(Halb)automatischer
Workflow bzw.
Prozess Parameter
Details
MenuBar
Globale
Statusinformationen Lokale Statusinformationen
Alter Aufbau
Neuer Aufbau
Sprecher
30. September 2021
ZEISS Seite 71
Hendrik Lösch
Management Consultant
@HerrLoesch
hendrik.loesch@zeiss.com
hendrik-loesch.de
slideshare.net/HendrikLsch1
https://www.linkedin.com/learning/instructors/hendrik-losch
Vom Monolith zum Modulith

Vom Monolith zum Modulith

  • 1.
    Tranchieren am Beispiel VomMonolith zum Modulith Hendrik Lösch
  • 2.
    Sprecher 30. September 2021 ZEISSSeite 2 Hendrik Lösch Management Consultant @HerrLoesch hendrik.loesch@zeiss.com hendrik-loesch.de slideshare.net/HendrikLsch1 https://www.linkedin.com/learning/instructors/hendrik-losch
  • 3.
    Klären wie esum die Software steht Voranalyse
  • 4.
    Voranalyse Interne Einschätzung 30. September2021 ZEISS Seite 10 „An einem Neubau führt kein Weg vorbei!“
  • 5.
    Voranalyse Health Check 30. September2021 ZEISS Seite 11 Vorbesprechung • Zieldefinition • Rahmenbedingungen • Vision Analyse Ergebnispräsentation • Fragen, Messen & Vergleichen • Problemstellen aufzeigen • Risiken bewerten • Lösungen aufzeigen • Zusammenfassung in Kurzform • Detaillierte Begründung in Schriftform • Überblick über die gröbsten Schwachstellen • Grobabschätzung des Aufwandes zur Behebung • Erstellen eines Grobkonzepts und einer Roadmap
  • 6.
    Voranalyse Typische Problemstellen 30. September2021 ZEISS Seite 12 Kopplung Duplikate
  • 7.
    Voranalyse Der Monolith 30. September2021 ZEISS Seite 13 „All or Nothing“ - Deployment Umfangreiche Releaseplanung Kompatibilität aller Bestandteile zwingend Begrenzte Skalierbarkeit Hohes Detailwissen nötig Lange Build-Zeiten
  • 8.
    Voranalyse Warum kein BigBang? 30. September 2021 ZEISS Seite 14 Alt Neu Kick-Off Neues Produkt Mögliche Ablösung altes Produkt Funktionsumfang t
  • 9.
    Voranalyse Warum kein BigBang? 30. September 2021 ZEISS Seite 15 Alt Kick-Off Neues Produkt Mögliche Ablösung altes Produkt Funktionsumfang t Neu
  • 10.
    Wissen was wirklichgebraucht wird Detailanalyse
  • 11.
    Detailanalyse Qualitätsszenarien & Qualitätsbaum 30.September 2021 ZEISS Seite 18 ISO 25010 Security Confidentiality S1 Authenticity S2 Integrity S3 Reliability Maturity S4 Recoverability S5 Fault tolerance S6 Maintainability Modularity S7 Modifiability S8 Testability S9 Analysability S10 Functionality Appropriateness S11 Completeness S12 Compatibility Interoperability S13 Usability User error protection S14 Portability Installability S15 Efficiency Time behaviour S16 S3 Integrity Extensions to the system, such as plugins, must be checked during startup for authenticity so that only officially permitted extensions can be introduced into the system. S10 Analyzability New developers can be productive within four work weeks. This includes a functioning development environment as well as the necessary understanding of the basic software structures. S13 Interoperability If a new hardware component must be addressed by the software, only a new software adapter needs to be implemented as far as no further workflow changes from a business perspective are associated with this hardware. https://iso25000.com/index.php/en/iso-25000-standards/iso-25010
  • 12.
    Detailanalyse Nichtfunktionale Anforderungen 30. September2021 ZEISS Seite 19 Maximal ein Merkmal auf höchster Ebene Maximal zwei Merkmale auf zweithöchster Ebene Mindestens ein Merkmal auf untererster Ebene
  • 13.
  • 14.
  • 15.
    Konzeption 30. September 2021 ZEISSSeite 25 Vergleich von Architekturstilen Modulith == Laufzeit Monolith || Deployment Monolith
  • 16.
    Konzeption Schichtung 30. September 2021 ZEISSSeite 26 Anwendungslogik Präsentation Datenhaltung Technische Schichtung Anwendungslogik Präsentation Datenhaltung Vermittlung Server Client
  • 17.
    Konzeption Monolith (skalieren) 30. September2021 ZEISS Seite 27 Laufzeitumgebung Softwaresystem Laufzeitumgebung Softwaresystem Laufzeitumgebung Softwaresystem
  • 18.
    Konzeption Fachliche & TechnischeSchichtung 30. September 2021 ZEISS Seite 28 Präsentation Datenhaltung Vermittlung Anwendungslogik Fachliche Schichtung Technische Schichtung Service Client
  • 19.
    Konzeption Open-Closed-Principle 30. September 2021 ZEISSSeite 29 „Module sollten sowohl offen für Erweiterungen als auch verschlossen für Modifikationen sein.“ Bertrand Meyer: Object Oriented Software Construction
  • 20.
    Konzeption 30. September 2021 ZEISSSeite 30 Monolith vs. Modulith Monolith Modulith Ein gemeinsamer Releaseplan Alle Bestandteile werden gemeinsam deployt Trennung der Verantwortlichkeiten stark erzwungen. Alle Bestandteile werden gemeinsam deployt Ein gemeinsamer Releaseplan Ein Code Repository Mehrere Code Repositories Trennung der Verantwortlichkeiten kaum Erzwungen. Aufteilung technisch getrieben Aufteilung fachlich getrieben
  • 21.
    Konzeption 30. September 2021 ZEISSSeite 31 Monolith vs. Modulith Micro Services Modulith Unterschiedliche Releasepläne Bestandteile werden unabhängig von einander deployt und betrieben Trennung der Verantwortlichkeiten stark erzwungen. Mehrere Code Repositories Aufteilung fachlich getrieben Alle Bestandteile werden gemeinsam deployt Ein gemeinsamer Releaseplan Trennung der Verantwortlichkeiten stark erzwungen. Mehrere Code Repositories Aufteilung fachlich getrieben
  • 22.
    Konzeption 30. September 2021 ZEISSSeite 32 Monolith vs. Modulith Modulith Microservices vs. Deployment Unit Fachliche Module Interne Kommunikation Externe Kommunikation Sales Consult- ing Invoice- ing Sales Consult- ing Invoice- ing
  • 23.
    Konzeption 30. September 2021 ZEISSSeite 33 Kernel & Module
  • 24.
    Konzeption 30. September 2021 ZEISSSeite 34 Anbindung an Kernel
  • 25.
    Konzeption 30. September 2021 ZEISSSeite 35 Aufteilung und Paketierung Logische Aufteilung und Abhängigkeiten Paketierung & Deployment Einheiten
  • 26.
    Konzeption 30. September 2021 ZEISSSeite 36 Modulkommunikation Fachliches Modul Technisches Modul
  • 27.
    Konzeption 30. September 2021 ZEISSSeite 37 Eventstorming - Theorie https://www.eventstorming.com/
  • 28.
    Konzeption 30. September 2021 ZEISSSeite 38 Eventstorming - Praxis Fachliches Modul Fachliches Modul Fachliches Modul Fachliches Modul Gesamtaufwand: ca. 8 PT
  • 29.
  • 30.
  • 31.
    Modularisierung 30. September 2021 ZEISSSeite 41 Change by Abstraction Software System mgl. Modul
  • 32.
    Modularisierung 30. September 2021 ZEISSSeite 42 Change by Abstraction Software System mgl. Modul Trennschicht / Abstraktionsschicht
  • 33.
    Modularisierung 30. September 2021 ZEISSSeite 43 Change by Abstraction Software System Modul
  • 34.
    Modularisierung 30. September 2021 ZEISSSeite 44 Change by Abstraction Software System Modul
  • 35.
    Modularisierung 30. September 2021 ZEISSSeite 45 Gefahr der „Shotgun Surgery“! Software System mgl. Modul Software System Strukturierte Modularisierung Unstrukturierte Modularisierung
  • 36.
    Modularisierung 30. September 2021 ZEISSSeite 46 Actual Context Map C – Core Domain S – Support Domain G – Generic Domain ​G ​S G S G G S G C S C G
  • 37.
    Modularisierung 30. September 2021 ZEISSSeite 47 Target Context Map C – Core Domain S – Support Domain G – Generic Domain ​G ​S G S G G S G C S C G
  • 38.
    Modularisierung 30. September 2021 ZEISSSeite 48 Change by Abstraction Ausgangszustand Abstrahierte Schnittstellen Geordneter Zugriff Geordnete interne Struktur
  • 39.
    Modularisierung 30. September 2021 ZEISSSeite 49 Testbarkeit Charakterisierungstests Geordnete interne Struktur Geordneter Zugriff
  • 40.
    Modularisierung 30. September 2021 ZEISSSeite 50 Aufteilung des Quellcodes Foundation Repository Produkt Repository Bestandscode Strukturierter Code Strukturierter Code Einbindung per Paketmanager Direkte Referenzierung
  • 41.
    Modularisierung 30. September 2021 ZEISSSeite 51 Aufteilung des Quellcodes Einbindung per Paketmanager Direkte Referenzierung Produkt Repository Strukturierter Code Strukturierter Code Foundation Repository Bestandscode Strukturierter Code Strukturierter Code
  • 42.
    Modularisierung 30. September 2021 ZEISSSeite 52 Migration der UI (Halb)automatischer Workflow bzw. Prozess Parameter Details MenuBar Globale Statusinformationen Lokale Statusinformationen Alter Aufbau Neuer Aufbau
  • 43.
    Modularisierung 30. September 2021 ZEISSSeite 53 Migration der UI (Halb)automatischer Workflow bzw. Prozess Parameter Details MenuBar Globale Statusinformationen Lokale Statusinformationen Alter Aufbau Neues Hauptfenster Neuer Aufbau
  • 44.
    Modularisierung 30. September 2021 ZEISSSeite 54 Migration der UI (Halb)automatischer Workflow bzw. Prozess Parameter Details MenuBar Globale Statusinformationen Lokale Statusinformationen Alter Aufbau Neuer Aufbau
  • 45.
    Modularisierung 30. September 2021 ZEISSSeite 55 Migration der UI (Halb)automatischer Workflow bzw. Prozess Parameter Details MenuBar Globale Statusinformationen Lokale Statusinformationen Alter Aufbau Neuer Aufbau
  • 46.
    Modularisierung 30. September 2021 ZEISSSeite 56 Migration der UI (Halb)automatischer Workflow bzw. Prozess Parameter Details MenuBar Globale Statusinformationen Lokale Statusinformationen Alter Aufbau Neuer Aufbau
  • 47.
    Modularisierung 30. September 2021 ZEISSSeite 57 Migration der UI (Halb)automatischer Workflow bzw. Prozess Parameter Details MenuBar Globale Statusinformationen Lokale Statusinformationen Alter Aufbau Neuer Aufbau
  • 48.
    Modularisierung 30. September 2021 ZEISSSeite 58 Migration der UI (Halb)automatischer Workflow bzw. Prozess Parameter Details MenuBar Globale Statusinformationen Lokale Statusinformationen Alter Aufbau Neuer Aufbau
  • 49.
    Sprecher 30. September 2021 ZEISSSeite 71 Hendrik Lösch Management Consultant @HerrLoesch hendrik.loesch@zeiss.com hendrik-loesch.de slideshare.net/HendrikLsch1 https://www.linkedin.com/learning/instructors/hendrik-losch