Ist denn heut' schon Weihnachten?

Lagom 1.3: Endlich mit Scala und JPA durchstarten

Dominik Mohilo

© Lightbend, Inc.

Das Lagom-Framework schlug sich in unserer großen Umfrage zu den Technologie-Trends 2017 wacker: mehr als 21 Prozent der Teilnehmer halten es für interessant. Das aktuelle Lagom 1.3 hat ein neues Scala API und die Unterstützung von JPA an Bord.

Mehr als 400 Entwickler haben auf GitHub ein Issue für die aktuelle Version von Lagom ganz nach oben gevoted: das Hinzufügen eines Scala APIs. Dieses Feature wurde bereits kurz nach der Veröffentlichung von Lagom 1.2 angekündigt und ist nun Teil der aktualisierten Version. Das Scala API enthält die gleichen Features wie das Java API, womit beide ab sofort gleichberechtigte First Class Citizens im Ökosystem des Frameworks sind.

Doch Lagom 1.3 bringt mehr als nur das Scala API: auch die Unterstützung für das Java Persistence API (JPA) ist in der neuen Version enthalten. Dieses besteht aus zwei separaten Features, die den Einsatz von blockierenden Operationen in dem nicht-blockierenden Framework möglich machen.

Neue Features

Scala API & Java API

Auf dem Blog von Lagom wird der Begriff Feature Parity genutzt. Das bedeutet allerdings nicht, dass auch die Ansätze für Java und Scala identisch sind. Im Bereich Scala lag vor allem die Typsicherheit im Fokus und weniger das Verlassen auf Reflexion.

Doch es gibt noch weitere Unterschiede: Für das Scala API wird eine Typklassen-basierte Serialisierung, die auf play-json aufbaut, verwendet. Beim Java API setzten die Architekten von Lagom hingegen auf das Reflexions-basierte API zur Datenbindung von Jackson. Auch das vom Java API verwendete Guice findet im Schwester-API keine Verwendung. Stattdessen nutzt das Scala API eine an die Kompilierzeit gebundene Dependency Injection, die das Cake Pattern und MacWire verwendet. Schließlich und endlich setzte man beim Scala API auf die Nutzung von Makros für die Implementierung der Service Clients und die Vernetzung mit Service-Implementierungen – beim Java API kommen dynamische Proxies zum Einsatz.

Lesen Sie auch: Einführung in Lagom: Das Framework für Microservices

Java Persistence API (JPA)

Der neue JPA Support für Lagom beinhaltet zum einen die Möglichkeit der Ausführung von Interaktionen mit dem JPA Entity Manager, zum anderen die Unterstützung für Read-side-Prozessoren.

Da die Verwendung von blockierenden APIs wie JPA in einem Framework wie Lagom gefährlich sein und zu Ausfällen führen kann, ist besondere Vorsicht geboten. Um Nutzern die Möglichkeit zu geben, blockierende Operationen des Entity Managers richtig zu verwalten, kann auf die JpaSession-Abstraktion zurückgegriffen werden. Die sichere Verwendung blockierender Operationen, ohne mit asynchronen IO-Threads zu interferieren, wird dadurch möglich.

Für die nahtlose Implementierung von Read-sides, deren Fokus auf der Datenbankzugriffslogik liegt, unterstützt Lagom 1.3 JPA Read-side-Prozessoren. So müssen sich Entwickler nicht mehr auf die Mechaniken von Read-sides und das Offset-Tracking konzentrieren.

Weitere Änderungen

Lagom versteht sich selbst als Framework, das Entwicklern behilflich sein soll, reaktive Microservices zu schreiben. Hierfür werden ihnen Guides an die Hand gegeben, die sicherstellen sollen, dass die geschriebenen Services belastbar und skalierbar sind. Daher ist die „Getting Started Experience“ besonders wichtig. Erste Schritte in Richtung einer besseren UX wurden mit der überarbeiteten Downloadseite (jetzt Get Started) und der verbesserten Einstiegssektion in der Dokumentation gemacht.

Lagom 1.3 ist zudem fast komplett binär- und quellenkompatibel zur Vorgängerversion und auch die Test-APIs für Scala und Java wurden noch einmal aufgebohrt. Sie enthalten nun ein Message-Broker-Testkit, mit dem man die jeweilige Message-Broker-Integration testen kann.

W-JAX
Mike Wiesner

Data- und Event-driven Microservices mit Apache Kafka

mit Mike Wiesner (MHP – A Porsche Company)

Niko Köbler

Digitization Solutions – a new Breed of Software

with Uwe Friedrichsen (codecentric AG)

Hintergrund

Kurz nach der initialen Ankündigung zu Beginn des vergangenen 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 James Roper, 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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.