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

  1. Aufzeichnen, wie Benutzer typischerweise mein System verwenden
  2. Stresstests generieren, die typischen Situationen entsprechen
  3. Testsystem mit verschiedenen Konfigurationen installieren und mit verschiedenen Lasten testen
  4. 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