Microservice-Architektur

Am Beispiel Memobase

17. Januar 2022

Inhalt

Die Säulen von Memobase

Programm

  • Weshalb eine Microservice-Architektur für Memobase?
  • Was sind Microservices?
  • Wie lassen wir Microservices miteinander kommunizieren?
  • Wie betreiben wir sie?

Weshalb Microservices?

Herausforderungen Memobase

  • Komplexe Datentransformationsprozesse
  • “Entwickeln an den Daten”
  • Verschiedene Programmiersprachen / Buildtools, diverse Programmierstile
  • Sich verändernde Anforderungen während Entwicklungsphase

Anforderungen an Softwarearchitektur

  • Komponenten unabhängig voneinander erweiterbar
  • System durch neue Komponenten leicht ergänzbar
  • Vermeiden von Inkompatibilitäten durch unterschiedliche Bibliotheken, Programmiersprachen etc.
  • Fehlerquellen in Datentransformation rasch lokalisierbar
  • Wenige Redundanzen

Eine (mögliche) Antwort

  • Gesamtsystem wird in seine einzelnen Aufgaben aufgedröselt
  • Eine Aufgabe <=> eine in sich abgeschlossene Systemkomponente (ein (Micro-)Service)
  • Komponenten kommunizieren über einheitliche Schnittstellen
  • Komponenten sind füreinander “Blackboxes”
  • Komplexität ist abgekapselt

Microservices in Memobase

Übersicht

  • Importieren Metadaten zu Objekten, Beständen und Institutionen
  • Bereiten Metadaten für Schnittstellen auf
  • Analysieren Mediendaten
  • Generieren Vorschauelemente
  • Löschen Daten
  • Erstellen Reports

Komponenten Importworkflow

Ein Beispiel: Media-Linker

  • Verlinkt Metadatensätze mit Mediendaten
  • Mediendaten: Foto, Audiodatei oder Videodatei
  • Bei Videodatei ev. zusätzliches Vorschaubild
  • Verschiedene Mediendatenquellen

Kafka

Was ist Kafka?

  • Plattform für Datenpipelines
  • Dient für Services als “Tor” zum Datenaustausch
  • Entkoppelt damit kommunizierende Services voneinander (Asynchronität)
  • Daher auch Daten(-zwischen-)speicher

Memobase & Kafka

Memobase-Importprozess nutzt drei Schnittstellen (APIs) von Kafka

Producer API: Für Daten”produzenten”

text-file-validator: Liest Datei ein und schreibt Inhalt nach Kafka

Stream API: Für Daten”konverter”

media-linker: Liest aus Kafka, reichert Daten mit Medienlink an, und schreibt Resultat nach Kafka

Consumer API: Für Daten”konsumenten”

media-metadata-indexer: Liest aus Kafka und speichert Datensatz in Datenbank ab

Topics: Die “Postfächer” von Kafka

  • Daten werden in “Briefen”, sog. Messages, in Kafka gespeichert
  • Topics sind “Postfächer” für Messages
  • Reihenfolge von Messages in Topics kann nicht geändert werden

Fallbeispiel: Reporting in Memobase

Kubernetes

Virtualisierung

Kubernetes

Vorteile von Kubernetes

  • Ressourcenrestriktionen
  • Failover bei Hardwareversagen
  • Automatische Restarts von Applikationen nach Abstürzen
  • (Dynamische) Skalierung von Applikationen
  • Namespaces / Tags für unterschiedliche Ausführungsumgebungen
  • Darum ideal für Microservice-Architektur!

Deklarativer Zugang

  1. Gewünschtes Zielsystem wird deklariert (yaml-Datei)
  2. Kubernetes kümmert sich um alles weitere

Einige Beispiele:

  • Deployments: Beschreiben eine langanhaltende Applikation
  • Services: Machen Pods intern zugreifbar
  • Ingresses: Schaffen öffentlichen Zugang zu Service
  • Jobs: Einmalige Ausführung einer Applikation

Memobase & Kubernetes