Außerdem: Scala API in absehbare Nähe gerückt

Lagom 1.2: Verbesserte Message-Funktionen sowie JDBC und Read Side Support

Dominik Mohilo

© Lightbend, Inc.

Das Framework Lagom hilft bei der Entwicklung von Microservices-Architekturen. Manche bezeichnen es sogar als Microservice-DSL für Akka, auf dem es aufsetzt. Lagom gehört zur Reactive Platform von Lightbend und ist gerade in Version 1.2 erschienen. Wir haben uns die Highlights des aktuellen Updates angesehen.

Rund sieben Wochen ist es her, seit Version 1.1 von Lagom erschienen ist. Das letzte Update brachte in erster Linie die Unterstützung von Maven. Dies beinhaltete unter anderem die Möglichkeit, die Lagom Entwicklungsumgebung in Maven laufen zu lassen. Eine weitere Besonderheit der neuen Maven-Integration ist die Unterstützung des Starts einer kompletten Systemumgebung als Teil eines Integrationstests. Das soll ein umfassendes Testing der internen Service-Kommunikation ermöglichen.

Lagom 1.2

Nachrichtenübermittlung

Die Kommunikation in Form von Nachrichtenübermittlung ist auch das wichtigste Feature von Lagom 1.2: Nachrichten können nun sowohl direkt zwischen den jeweiligen Services als auch über einen Broker gestreamt werden. Um dieses Feature zu nutzen, wird keine spezielle Implementierung eines Message Brokers benötigt, allerdings ist von Haus aus lediglich die Unterstützung von Apache Kafka vorhanden.

Verwenden Nutzer das Kommando runAll, startet das Microservices-Framework Kafka in Maven und sbt automatisch, wodurch es sehr leicht ist, ein Projekt mit Kafka zu starten. Lagom übernimmt auch die Veröffentlichung, Partitionierung, Konsumierung und das Fehler-Handling der Nachrichtenübermittlung, sodass der Nutzer selbst sich auf die geschäftlichen Dinge konzentrieren kann.

Neu im Bereich Service Call ist außerdem die Topic-Abstraktion, die einen Überbegriff repräsentiert, der von einem Service veröffentlicht und von einem oder mehreren anderen Services konsumiert wird. Mit einem Service Call stellt Lagom einen Protokoll-agnostischen Weg der direkten Kommunikation mit anderen Services zur Verfügung, der in HTTP abgebildet wird. Um die (De-)Serialisierungslogik dieser Nachrichten zu erfassen und zwischen den Services zu teilen, können Service Descriptors verwendet werden.

JDBC

Da viele Organisationen und Unternehmen Lagom gerne verwenden würden, allerdings die existierende relationale Datenbankstruktur dafür unterstützt werden müsste, wurde die Unterstützung der Java Database Connectivity (JDBC) in Lagom 1.2 eingefügt. JDBC ist ab der aktuellen Version nun für die Implementierung von Read Sides und für das Speichern persistenter Entitäten verfügbar.

Read Side Support

Drei Teile umfasst der neue Read Side Support von Lagom: Zunächst können nun Read Sides für die Kommunikation mit sämtlichen Datenspeichern eingefügt werden. Zuvor war das Read Side Processor API ausschließlich für den Austausch mit Apache Cassandra spezifiziert. Das neue Read Side API macht daher die speziellen Tools für JDBC bzw. Cassandra Read Sides überflüssig.

Durch das Taggen von persistenten Entity-Events mit Sharded Tags können – das ist die zweite Änderung – Read Sides nun auch fragmentiert sein. Als drittes stellen die spezifischen JDBC bzw. Cassandra Read Side Support Utilities jetzt ein automatisches Offset-Tracking. So müssen Offsets nicht länger explizit geladen und am Laufen gehalten werden.

Ausblick

Wie Lutz Huehnken im Interview auf der W-JAX 2016 preisgab, war das erste GitHub-Issue für Lagom das fehlende Scala API. Im Interview hatte er aber diesbezüglich gute Neuigkeiten:

lutz_huehnken[Nach Release 1.2] soll natürlich das Scala API kommen! Das Warten darauf sollte bald ein Ende haben. Zu den weiteren Dingen in Planung gehört unter anderem auch eine Swagger-Integration.

– Lutz Huehnken

Eine weitere Neuerung, die bereits für die kommende Version (Lagom 1.3) geplant zu sein scheint, ist die Unterstützung von JPA. James Roper hat einen entsprechenden Vorschlag auf GitHub veröffentlicht. Für die JPA Read Sides soll der JDBC Offset Store wiederverwendet werden.

Hintergrund

Kurz nach der initialen Ankündigung zu Beginn dieses Jahres, wurde Lagom veröffentlicht. Das Microservices-Framework stützt sich hauptsächlich auf drei Design-Prinzipien: Asynchronität, verteilte Persistenzmuster und Entwicklerproduktivität. Der Fokus von Lagom liegt, im Gegensatz zu herkömmlichen Microservice-Frameworks, nicht auf der Erstellung von einzelnen Microservices, sondern auf großen und verteilten Microservice-Systemen.

Die Reactive Platform von Lightbend / Quelle: Lightbend, Inc.

Die Reactive Platform von Lightbend / Quelle: Lightbend, Inc.

Die Kommunikation zwischen den Services ist eine der Kernkompetenzen des Frameworks und wird durch das API von Lagom abgedeckt. Durch den die Fähigkeit mit REST-Calls zu arbeiten, kann mit jeder anderen REST-fähigen Technologie kommuniziert werden. Das Persistenz-API von Lagom unterstützt die Implementierung von Event Sourcing und CQRS.

Durch die Nutzung von Typesafe ConductR, Lightbends kommerziellem Deployment-Werkzeug für verteilte Anwendungen, werden die Skalierung und das Deployment von Services gemanagt. ConductR stellt für Lagom zudem Datenbanken und deren Konfiguration sowie Tools zur Visualisierung und dem Managen dieser zur Verfügung. Das Clustering von Nodes eines Services wird in Lagom durch Akka und ConductR konfiguriert.

Eine detailliertere Übersicht über die aktuellen Änderungen und Neuerungen gibt es, verfasst von Tim Moore, auf dem Blog des Frameworks, eine umfangreiche Einführung in das Framework hat Lutz Huehnken auf JAXenter veröffentlicht.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: