Hallo Microservices, gibt’s euch auch transaktional?

  • von

Matthias Koch und Markus Grabert, sidion

Es ist 2019. Microservices sind kein Novum mehr und längst in viele Bereiche durchgedrungen. Allerdings hat der Ansatz, viele verteilte kleine Services zu verwenden, auch seine architektonischen Herausforderungen. In den letzten Jahren haben wir gelernt, mit Consumer Driven Contracts, Service Discovery und API-Gateways umzugehen. Für all diese Probleme gibt es mittlerweile fertige Lösungen aus der Werkzeugkiste. Kommt hingegen Datenkonsistenz (Eventual Consistency) über Servicegrenzen hinweg zur Sprache, dann sieht es anders aus. Zuallererst wird überlegt, ob Transaktionen in diesem Kontext überhaupt notwendig sind und nicht ein Indiz für zu harte Kopplung darstellen. Aber: Transaktionen wird es weiterhin geben und das rein fachlich bedingt.

In diesem Artikel wollen wir auf einen alternativen Weg hinweisen, der es ermöglicht, logische Transaktionen in Microservice-Architekturen abzubilden: das Saga-Pattern, das mithilfe von kompensatorischen Operationen eine Art Rollback nachbildet.
Abschließend soll ein Ausblick auf das Proposal der Spezifikation „Long Running Actions for MicroProfile“ gegeben werden. Deren API verspricht die Koordination von Services zu vereinheitlichen und damit die Implementierung zu vereinfachen. Hierbei wird ein global konsistenter Zustand sichergestellt, ohne dass Locks auf Daten benötigt werden.

Artikel aus java aktuell 06 2019 als PDF herunterladen:

Zurück