ddd und microservices bei etengo im einsatz€¦ · microservices auf der grünen wiese •...
TRANSCRIPT
![Page 1: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/1.jpg)
© 2017 andrena objects ag
Experts in agile software engineering
10.09.2018
DDD und Microservices bei Etengo im Einsatz
Bastian Feigl [email protected]
Lars Alvincz [email protected]
![Page 2: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/2.jpg)
© 2017 andrena objects ag
Experts in agile software engineering2
Agenda
1. Die Mission: Neuentwicklung mit Microservices
2. Fachlich: Microservices und DDD
3. Technisch: Entwicklung einer Microservice-Anwendung
4. Technisch: Datenmigration vom monolithischen Altsystem zur Microservice-Anwendung
5. Fazit
![Page 3: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/3.jpg)
© 2017 andrena objects ag
Experts in agile software engineering3
Die Mission: Neuentwicklung
mit Microservices
![Page 4: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/4.jpg)
© 2017 andrena objects ag
![Page 5: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/5.jpg)
© 2017 andrena objects ag
![Page 6: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/6.jpg)
© 2017 andrena objects ag
Experts in agile software engineering6
Microservices auf der grünen Wiese
• Neuentwicklung einer bestehenden Anwendung
• Anforderungen des Kunden:
• Web-Anwendung
• Modulares Deployment
• Austauschbarkeit einzelner Komponenten
• Hohe Verfügbarkeit
• Externes Anbieten einzelner Services
verteilte Anwendung mit Microservices, zentrales Web-Frontend
![Page 7: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/7.jpg)
© 2017 andrena objects ag
ServiceREST
ServiceREST
Experts in agile software engineering7
ServiceREST
ServiceREST
ServiceREST
ServiceREST
Angular 5
API Gateway
REST
Frontend
Initiale Architekturidee
![Page 8: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/8.jpg)
© 2017 andrena objects ag
Experts in agile software engineering8
Was ist für uns ein Microservice?
• In sich geschlossen
• Besitzt die absolute Hoheit über seine Daten
• Nur ansprechbar über REST/Messaging(DB etc. nicht nach außen verfügbar)
• Eigenes GIT-Repository
• Eigene Versionen der Abhängigkeiten
• Lose Kopplung zu anderen Services
• Sollte auch funktionieren, wenn andere Services ausfallen (Resilienz)
• Skalierung möglich (Ausfallsicherheit, Performanz)
![Page 9: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/9.jpg)
© 2017 andrena objects ag
Experts in agile software engineering9
Wie schneiden wir Microservices?
• Microservices sollten in sich geschlossen Bereicheder Anwendung umsetzen
• Wichtig: Lose Kopplung (Performanz, Resilienz)
Domain-driven Design (DDD) ist eine Herangehens-weise an die Modellierung komplexer Software. Die Modellierung der Software wird dabei maßgeblich von den umzusetzenden Fachlichkeiten der Anwendungsdomäne beeinflusst.
(Wikipedia; Eric Evans, 2006)
![Page 10: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/10.jpg)
© 2017 andrena objects ag
Experts in agile software engineering10
Fachlich: Microservices
und DDD
![Page 11: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/11.jpg)
© 2017 andrena objects ag
Experts in agile software engineering11
DDD: Bounded Context – Microservice
• Ein fachlicher Begriff kann in verschiedenen Kontexten verschiedeneAusprägungen haben
• Beispiel: Personaldienstleister
• Bounded Context: Abgeschlossener Ausschnitt aus der Fachdomäne
➢ Ein Bounded Context lässt sich gut auf einen Microservice abbilden
Projektzuordnung Abrechnung
Freelancer Freelancer
…
…
…
…
NameSkills
Verfügbarkeit…
…
…
…
…
LeistungsnachweiseSteuernummerRechnungsadresse…
![Page 12: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/12.jpg)
© 2017 andrena objects ag
Experts in agile software engineering12
Wie finden wir Bounded Contexts?
Event Storming:
• Fachliche Ereignisse identifizieren und gemäß Ablauf anordnen
• Beispiele: Anfrage geht ein, Freelancer wird beauftragt, Freelancer erstellt Abrechnung, …
• System/Benutzer-Aktionen ableiten
• Beteiligte Entitäten ableiten
• Gruppieren und Bounded Contexts identifizieren
Indikatoren für guten Schnitt: Starke Kohäsion, geringe Kopplung
![Page 13: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/13.jpg)
© 2017 andrena objects ag
Experts in agile software engineering13
Event Storming: Ergebnis (Ausschnitt)
![Page 14: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/14.jpg)
© 2017 andrena objects ag
Experts in agile software engineering14
DDD: Unsere Erfahrungen
Vorgehen:
• Anwendung hat mehrere Kerndomänen
• Für jede Kerndomäne ein DDD-Tagesworkshop (Event-Storming)(PO, Fachbereich, Team)
Ergebnis:
• Bounded Contexts als Grundlage für den Schnitt der Microservices
Nebeneffekt:
• Gemeinsames fachliches Verständnis erreicht
• Gut zur Einarbeitung neuer Kollegen
![Page 15: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/15.jpg)
© 2017 andrena objects ag
Experts in agile software engineering15
Technisch: Entwicklung einer
Microservice-Anwendung
![Page 16: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/16.jpg)
© 2017 andrena objects ag
Experts in agile software engineering16
Herausforderungen
• Gemeinsame Daten: Kopplung vs. Redundanz
• Gemeinsamer Code: Kopplung vs. Redundanz
• Architektur
• Deployment
• Monitoring
• Testvorgehen
• Entwicklungsprozess
![Page 17: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/17.jpg)
© 2017 andrena objects ag
Experts in agile software engineering17
Gemeinsame Daten: Hohe Kopplung vs. Redundanz?
Manche Daten werden in mehreren Services benötigt
• Beispiel: Name des Freelancers
Naiver Ansatz:
• Zentraler Datenservice oder
• Daten in einem fachlichen Service speichern und bei Bedarf direkt abrufen (Direktzugriff)
Vorteile:
• Geringerer Entwicklungsaufwand
• Daten sind immer aktuell
Nachteile:
• Mehr Kommunikation nötig
• Verfügbarkeit des Services mit benötigten Daten ist kritisch
• Zentraler Datenservice: Schnitt ist technisch (fachliche Änderungen betreffen dann mindestens 2 Services)
![Page 18: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/18.jpg)
© 2017 andrena objects ag
Experts in agile software engineering18
Gemeinsame Daten: Hohe Kopplung vs. Redundanz?
Alternativer Ansatz:
• mehrfach benötigte Daten per Messaging replizieren
• Services halten Kopien (nur Lese-Zugriff!)
Vorteile:
• Lose Kopplung, Resilienz (dafür Redundanz)
• Messaging: keine Daten gehen verloren
• Erweiterbarkeit:neue Services können sich registrieren (→ Data Warehouse etc.)
Nachteile:
• Aufwand für Replikation (Entwicklung und Systemlast)
![Page 19: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/19.jpg)
© 2017 andrena objects ag
Experts in agile software engineering19
Entscheidung zwischen Direktzugriff und Replikation
Replikation: Wann rechnet sich der erhöhte Aufwand?
• Indikator: Häufigkeit des Zugriffs abwägen gegenüber Häufigkeit der Änderung
• Sehr wenige Zugriffe, häufige Änderungen → Direktzugriff
• Häufigere Zugriffe, wenige Änderungen → Replikation
• Bei Fokus auf Robustheit → Replikation
Generell: Falls häufige Zugriffe vorkommen: passt der Serviceschnitt?
Im Regelfall: Entkopplung und Daten per Messaging replizieren
![Page 20: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/20.jpg)
© 2017 andrena objects ag
Experts in agile software engineering20
Gemeinsamer Code: Hohe Kopplung vs. Redundanz
Das Mantra der Software-Entwicklung:Code-Wiederverwendung, Duplikation vermeiden
Nachteile:
• Wiederverwendung erschwert unabhängigeDeployments
• Verteilter Monolith?
![Page 21: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/21.jpg)
© 2017 andrena objects ag
Experts in agile software engineering21
Gemeinsamer Code: Redundanz
fachlicher Code: keine Wiederverwendung
• so echte Entkopplung
• auch z.B. bei REST-API/Message-Interfaces
technischer Code: Wiederverwendung (commons-Libs)
• Beispiel: erweiterbare Enums, Validierung, …
• commons-Libraries sind versioniert
• Jeder Service entscheidet, wann er die Version aktualisiert
• man kann nur den Service ausliefern, der die Änderung braucht
• Aber: früher oder später ist Update nötig
fachlich: Entkopplung durch Duplikation, technisch: Wiederverwendung
![Page 22: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/22.jpg)
© 2017 andrena objects ag
ServiceREST
ServiceREST
Eureka
REST
Experts in agile software engineering22
ServiceREST
ServiceREST
ServiceREST
ServiceREST
DB DB DB DB DB DB
Message Broker
Idx
API Gateway (Zuul)
REST
FrontendSpring-Boot
Admin
REST
Alle Zugriffe auf Services via Eureka Lookup
Angular 5
Keycloak
REST
Zugriffe der Services untereinander via Eureka Lookup/Feign
Architektur
![Page 23: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/23.jpg)
© 2017 andrena objects ag
Experts in agile software engineering23
Deployment
GIT
GIT
GIT
Dev Stable
Continuous Deployment
Test
automatisiertesDeployment
Zwischen-abnahmen
Fachbereich
Umgebungen:
2.0
Docker Registry
E2E-Tests
Prod
GITKonfiguration:
docker-compose.yml
![Page 24: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/24.jpg)
© 2017 andrena objects ag
Experts in agile software engineering24
Monitoring
• Jeder Microservice hat eigenes Log.
• Log-Einträge einer Anfrage können über mehrere Logsverteilt sein.
• Nötig: Aggregation der Logs in einem Systemzur effizienten Auswertung.
• Logs von Docker-Containern abgreifen (filebeat)
• Auswertung mit ElasticSearch/Kibana
• Frontend-Logs: sentry
• Zur Korrelation einzelner Anfragen: Vorgangs-ID mit im Log speichern (Toolunterstützung: Spring Cloud Sleuth)
![Page 25: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/25.jpg)
© 2017 andrena objects ag
Experts in agile software engineering25
Unser Testvorgehen
• Testpyramide
Innerhalb eines Services
• Inter-Service-Tests (REST, Messaging, Externe Services)
• end2end-Tests mit Selenium(GUI)
• Exploratives Testen (manuell, Timeboxed)
Gesamtsystem
Inter-Service-Tests
end2end-Tests
Service
Frontend
![Page 26: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/26.jpg)
© 2017 andrena objects ag
Experts in agile software engineering26
Unser Entwicklungsprozess: Scrum
Sprint: 2 Wochen
• wöchentliche Refinements
• sobald Story fertig: Deployment auf Test-Umgebung
➢ dadurch schon im Sprint Feedback vom Fachbereich möglich
Nach jedem Sprint:
• auslieferfähiges Inkrement
• Sprint Review erfolgt auf Test-Umgebung
• regelmäßige SQI-Messung (SQI: 85)
To Do In ProgressCode
ReviewExploratory
TestingAcceptance
TestingDone
![Page 27: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/27.jpg)
© 2017 andrena objects ag
Experts in agile software engineering27
Technisch: Datenmigration vom
monolithischen Altsystem zur Microservice-Anwendung
![Page 28: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/28.jpg)
© 2017 andrena objects ag
Experts in agile software engineering28
Datenmigration vom Monolithen zum Microservice-System
Altsystem:
• Ein zentrales DB-Schema, das alle Daten enthält
• Daten mit komplexen Objektstrukturen
• Weitreichende Verknüpfungen zwischen den Daten
Zielsystem:
• Viele verteilte DB-Schemata, keine übergreifenden Referenzen
• Anderer Schnitt der Objekte
• Jeder Services braucht nur Teilaspekte einzelner Objekte
• Manche Daten sind mehrfach in verschiedenen Services abgelegt
Herausforderungen:
• Bei der Migration Konsistenz gewährleisten, ohne einen Über-Migrator zu verwenden (der alle Zielobjekte und Zielschemata kennt)
• Zeitfenster für Migration: 1 Wochenende
![Page 29: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/29.jpg)
© 2017 andrena objects ag
Alt-DBModels EEM 2
Models EEM 2
Models Alt
Migrations-logik
Models EEM 2
Models EEM 2
Models (vereinigt)
Projektion (A)
Models EEM 2
Models EEM 2
Models (A)
Projektion (B)
Models EEM 2
Models EEM 2
Models (B)
Service A Service B
commons-migrator-alt commons-migrator
a-migrator b-migrator
2
1
Komplexe Migrationslogik• einmalig an zentraler Stelle definiert• vereinigte Models enthalten alle
Attribute der einzelnen Facetten eines Models (aus sämtlichen Microservices)
Einfache Projektion• jedes Model eines Microservices
füllt seine Attribute aus dem vereinigten Model
• keine Logik
1
2
Experts in agile software engineering29
Architektur der Migratoren
![Page 30: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/30.jpg)
© 2017 andrena objects ag
Experts in agile software engineering30
Migration technischer IDs
Altsystem: sequenzielle numerische IDs
• Eigene Sequenz/Nummernkreis pro Objekttyp
Neuanwendung: zufällige UUIDs (Typ 4)
• Erlauben keine Rückschlüsse auf Datenbestand
Herausforderung bei Migration:
• Services sollen unabhängig migrierbar sein
➢ Brauchen eindeutiges Mapping von alter ID auf UUIDum referenzielle Integrität sicherzustellen(Foreign Keys, Referenzen zwischen Services)
![Page 31: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/31.jpg)
© 2017 andrena objects ag
Experts in agile software engineering31
Migration technischer IDs
Umsetzung:
• Für migrierte Daten werden namensbasierte UUIDs (Typ 5) verwendet
• commons-migrator enthält feste UUID pro Sequenz als „Namespace“
• „Name“ aus String-Repräsentation der alten ID
• ID + Namespace-UUID werden SHA-1-geshashed und aus diesen Bytes neue UUID erzeugt
➢ Eindeutige Zuordnung ID → UUID
➢ Keine Kollision bei gleicher ID verschiedener Sequenzen
➢ Kein Rückschluss von UUID auf ursprüngliche ID oder „umgebende“ IDs möglich
![Page 32: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/32.jpg)
© 2017 andrena objects ag
Experts in agile software engineering32
Umsetzung der Migration
• Je Service eigener Migrator als Spring-Boot-Konsolenanwendung
• Eigener Docker-Stack für Migratoren
• Datenhaltung der Services unabhängig
➢ Migratoren können parallel laufen
➢ Zeitfenster kann (fast) eingehalten werden
• Dokumenten-Migrator läuft deutlich länger als die anderen Migratoren
• Zeitbedarf größer als zur Verfügung stehendes Zeitfenster
➢ inkrementelle Migration implementiert
![Page 33: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/33.jpg)
© 2017 andrena objects ag
Experts in agile software engineering33
Fazit
![Page 34: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/34.jpg)
© 2017 andrena objects ag
Experts in agile software engineering34
Vorteile einer Microservice-Anwendung
• Einzelne Services sind einfach
• Einfachere Skalierung
• Auch von Teilen der Anwendung
• Ausfallsicherheit/Hochverfügbarkeit
• Redundanz / Load Balancing einfach umzusetzen
• Flexiblere Architektur
• Austausch von Teilen möglich
• geringeres Risiko beim Deployment
• Lose Kopplung
• Entwicklungsarbeit kann gut auf mehrere Teams aufgeteilt werden
• Unterschiedliche Technologien je nach Anforderungen nutzbar
• Erweiterung durch neue Services ohne Detailkenntnisse möglich
![Page 35: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/35.jpg)
© 2017 andrena objects ag
Experts in agile software engineering35
Lessons Learned
Domain Driven Design-Workshops sehr hilfreich
• um guten Schnitt der Microservices zu finden
• nachträgliche Umstrukturierungen sind teuer
• für gemeinsames Verständnis
Höhere Aufwände (als bei Monolithen)
• Komplexere Infrastruktur
• Technische Services (Discovery, Gateway, …)
• Deployment, Testsysteme → zwingend automatisieren
• Datenabhängigkeiten: Replikation/Messaging
• Codeabhängigkeiten: teilweise Duplikation
Architekturentscheidungen inkrementell klären
• Big Design Up Front nicht sinnvoll/möglich
• Eigene fachliche Stories dafür platzieren (Security, Suche, Migration, Changelog, …)
![Page 36: DDD und Microservices bei Etengo im Einsatz€¦ · Microservices auf der grünen Wiese • Neuentwicklung einer bestehenden Anwendung • Anforderungen des Kunden: • Web-Anwendung](https://reader034.vdocuments.pub/reader034/viewer/2022042318/5f0780af7e708231d41d4d46/html5/thumbnails/36.jpg)
© 2017 andrena objects ag
Experts in agile software engineering36
Fazit
Vorteile von Microservices:
• Kleine abgeschlossene Einheiten
• Skalierbarkeit
• Ausfallsicherheit
• Flexibilität
• Lose Kopplung
Zu berücksichtigen:
• Fachlichen Überblick früh herstellen (DDD-Workshops)
• Gesamtsystem komplexer, höherer Aufwand (Datenhaltung, Kommunikation)
➢ Abhängigkeiten zwischen den Services minimieren
• Architekturentscheidungen inkrementell klären