Datenmanagement mit Microservices
Andrea Janes
Webinar "Datenbanken und deren effiziente Verwendung", INNOS GmbH, Lienz, Osttirol, 3.12.2020
Inhalt
So werden wir die nächste Stunde verbringen:
Kontinuierliche Integration
Vor- und Nachteile, Migration
Test-Tools
Datenmanagement in Microservice-basierten Systemen
Einführung in Microservices
Einführung in Microservices
Divide et impera...

Divide et impera...

Divide et impera...

Divide et impera...
- "Ich schätze, Ende der 70er Jahre waren die Menschen ausgebrannt [...] es machte Sinn, dass das, was man besser verstehen kann, auch besser handhabbar sein wird".
- "Objektorientierte Methodik mit dem Versprechen '...alles im Leben ist ein Objekt' schien eher dem gesunden Menschenverstand zu entsprechen, noch bevor sie sich als sinnvoll erwies."
- "[...] dieses Paradigma zwang Sie dazu, etwas nachzudenken, bevor Sie mehr als nur prozedurale Sprachen programmieren, es zeigte sichtbare Erfolge bei den Softwareprojekten, die sie einsetzten, und seitdem haben sie sich durchgesetzt!
https://softwareengineering.stackexchange.com/questions/137716/what-were-the-historical-conditions-that-led-to-object-oriented-programming-beco
Hat OOP funktioniert?
http://i.imgur.com/Q0vFcHd.png

Hat OOP funktioniert?
http://i.imgur.com/Q0vFcHd.png

Kurz aktuell: Service-orientierte Architekturen

Heute: Microservices

Analogie: Apps

Was sind nun Microservices?
- Komponentenbildung durch Services
- Organisiert nach Geschäftsbereichen
- Produkte statt Projekte
- Intelligente Endpunkte und "dumme" Verbindungen
- Dezentralisierte Regierungsführung
- Dezentralisierte Datenverwaltung
- Automatisierung der Infrastruktur
- Entwurf für Versagen
- Evolutionäres Design
https://www.youtube.com/watch?v=wgdBVIX9ifA&t=218s
Dezentralisierte Datenverwaltung
https://www.youtube.com/watch?v=wgdBVIX9ifA&t=218s

Dezentralisierte Datenverwaltung
https://www.youtube.com/watch?v=wgdBVIX9ifA&t=218s

Beispiel
- https://github.com/FudanSELab/train-ticket
- Zugfahrkarten-Buchungssystem
- 41 Mikrodienste
- Wenn man die Webseite startet, werden 27 Instanzen von MongoDB gestartet
Vor-und Nachteile Microservice-basierter Anwendungen und die Migration dorthin
Einige Vorteile
- Erhöhte Wartbarkeit
- Leichter zu testen
- Unabhängig verteilbar
- Erhöhte Performance
- Erhöhte Wiederverwendbarkeit
Einige Nachteile
- Kommunikation zwischen Mikrodiensten ist sehr sehr sehr teuer. Siehe Vortrag "Avoiding Microservice Megadisasters"
- Programmierer müssen neue Entwurfsmuster erlernen, die die Kommunikation effizienter gestalten
- Asynchrone Kommunikation muss berücksichtigt werden
- Verteilte Transaktionen sind schwierig
- Saga-Entwurfsmuster
1) https://www.youtube.com/watch?v=gfh-VCTwMw8
1)
Saga Entwurfsmuster
- Beim Saga-Ansatz existiert zu jeder Operation eine Kompensationsoperation.
- Die Operationen werden als Workflow aufgefasst, die je nach Anwendungslogik parallel oder sequenziell ausgeführt werden.
- Wird bei der Ausführung eine Operation fehlerhaft abgeschlossen, werden alle bereits erfolgreich ausgeführten Operationen durch die zugeordneten Kompensationsoperationen rückgängig gemacht, um das System wieder in den konsistenten Ausgangszustand zu bringen.
Saga Entwurfsmuster

Daten(banken) in solchen Systemen und damit verbundene Vor-und Nachteile
Häufige Datenbank-Entwurfsmuster
- Database per Service
- Saga
- API Composition
- CQRS
- Event sourcing
https://microservices.io/patterns/index.html
API Composition
- Wie implementiere ich eine Abfrage?

Command Query Responsibility Segregation
- Wie implementiert man eine Abfrage, die Daten von mehreren Diensten in einer Mikrodienstarchitektur abruft?
- Definieren Sie eine View-Datenbank, bei der es sich um eine schreibgeschützte Replik handelt, die diese Abfrage unterstützen soll. Die Anwendung hält die Replik auf dem neuesten Stand der Daten, indem sie Domain-Ereignisse abonniert, die von dem Dienst veröffentlicht werden, der die Daten besitzt.
Command Query Responsibility Segregation

"Ereignissourcing"

"Ereignissourcing"

Test-Tools im Zusammenhang mit Microservices und Datenbanken

PPTAM: Production and Performance Testing Based Application Monitoring
- Aufzeichnen, wie Benutzer typischerweise mein System verwenden
- Stresstests generieren, die typischen Situationen entsprechen
- Testsystem mit verschiedenen Konfigurationen installieren und mit verschiedenen Lasten testen
- Ich identifiziere die langsamsten Konfigurationen


Weitere Test Tools
- JMeter
- Gatling
- Flood IO
- ...
Die Rolle der kontinuierlichen Integration zur Sicherung der Datebankperformance
Kontinuierliche Integration

https://geekflare.com/de/understanding-ci-cd/
Ausgangssituation


Kontinuierliches Monitoring
Auswertung

Vielen Dank für die Aufmerksamkeit!
Datenmanagement mit Microservices
By Andrea Janes
Datenmanagement mit Microservices
- 98