Suche
Interview mit Lutz Hühnken

“Wir wollten von vornherein klar machen, dass Lagom für Java geeignet ist”

Hartmut Schlosser
lutz_huehnken

Lutz Hühnken

Im Rahmen unseres Themen-Dossiers Scala stellen wir die Komponenten der Reactive Platform vor. Darunter befindet sich auch Lagom – ein junges Microservices Framework, das soeben in Version 1.2 erschienen ist. Wir haben uns mit Lutz Hühnken darüber unterhalten, was Lagom so besonders macht und warum das Framework vorerst nur mit einem Java API – und noch keinem Scala API – ausgestattet ist.

Mehr zu Lagom erfahren Sie in Lutz Hühnkens Artikel: Einführung in Lagom: Das Framework für Microservices und Domain Driven Design

JAXenter: Lagom ist ein Framework, das bei der Entwicklung von Microservices-Architekturen hilft. Dabei schreibst du in deinem W-JAX Abstract, dass es Ausdruck einer bestimmten Art ist, Microservices zu entwickeln. Wie würdest die diesen bestimmten Ansatz auf den Punkt bringen?

Lagom versucht, den richtigen Weg ganz einfach zu machen.

Lutz Hühnken: Lagom ist auf jeden Fall voreingenommen. So etwas ist bei der ersten Begegnung oft etwas spröde – man muss sich darauf einlassen. Ich weiß noch, als ich das allererste Mal mit Maven zu tun hatte: Die Einführung begann mit „Maven ist ein Software-Projektmanagement-Tool, basierend auf dem Project Object Model“. Dabei wollte ich doch nur ein Build-Tool!

So kommt einem Lagom vielleicht auch vor, insbesondere wenn es um die Datenbank geht. Ich will ein paar Daten speichern, und jetzt soll ich Event Sourcing und CQRS lernen?

Das Gute ist aber, dass dadurch etwas vermieden wird: Dass wir einen einfachen Weg haben, und den richtigen Weg. Ich implementiere das mal eben (der einfache Weg), aber wenn es skalieren soll und ausfallsicher sein, dann müssen wir es noch einmal ordentlich machen (der richtige Weg). Lagom versucht, den richtigen Weg ganz einfach zu machen. Und dazu sind Frameworks ja eigentlich da.

scala-iconDossier Scala
Im Themen-Dossier Scala dreht sich alles um die JVM-Sprache Scala und den darauf aufbauenden Reactive Stack.

.

JAXenter: Du schreibst in deinem Einführungsartikel zu Lagom, dass Lagom im Vergleich zu Java EE und Spring eine ganz andere Architektur in die Waagschale wirft. Wo liegen genau die zentralen Unterschiede zu Java EE und Spring?

Lutz Hühnken: Lagom ist von Grund auf und durch und durch asynchron. Mir fällt gar keine Framework-Methode ein, bei der es einfach direkt ein Ergebnis zurückgibt. Ob ich einen anderen Service aufrufe, oder eine Nachricht an ein Domänen-Objekt sende, ich bekomme immer eine CompletionStage zurück. Das macht es sehr zur Laufzeit sehr effizient und erlaubt, auf einem einzelnen Rechner viele tausende Requests parallel zu bearbeiten.

JAXenter: Lagom ist von Lightbend entwickelt – dem Unternehmen hinter Scala. Allerdings ist Lagom momentan ein reines Java-Framework. Weshalb? Wie sieht es mit der Scala-Unterstützung von Lagom aus?

Das Scala API war gleich das erste GitHub-Issue für Lagom.

Lutz Hühnken: Es war von vornherein klar, dass es – wie ja auch bei Akka und Play – beides geben soll. Aber es stellte sich auch schnell heraus, dass wir, wenn wir den Zeitplan einhalten wollten, für Version 1.0 nicht beides schaffen würden. Es war eine intensive Diskussion und knappe Entscheidung, aber sie fiel für Java aus. Ein Grund war tatsächlich, dass wir es einfach einmal anders machen wollten.

Akka und Play werden, obwohl sie vollwertige Java APIs haben, von vielen als Scala-Frameworks wahrgenommen. Wir lieben Scala, aber für viele Entwickler stellt sich die Frage nach der Programmiersprache gar nicht, sie haben vielleicht gar keinen Einfluss darauf. Wir wollten von vornherein klar machen, dass Lagom auch für die Java-Entwicklung geeignet ist.

Das Scala API war dann aber gleich das erste GitHub-Issue für Lagom. Und wenn man sich den Eintrag einsieht, wird klar, dass sie sehnsüchtig erwartet wird.

JAXenter: Wie reiht sich Lagom in den Reactive Stack von Lightbend ein? Bestehen hier enge Verbindungen zu anderen Komponenten wie Akka, Play, Spark, Mesos?
Lutz Hühnken: Lagom setzt selbst auf Akka und Play auf. Erfahrene Akka-Nutzer bezeichnen Lagom manchmal als “Microservice-DSL für Akka”, womit sie gar nicht so verkehrt liegen. Für Dinge, die in Lagom (noch) nicht direkt implementiert sind – z.B. Server Sent Events – kann man in Lagom-Applikationen auf Play-APIs zurückgreifen. Mesos bzw. DC/OS als Infrastruktur für Microservices ist natürlich auch für Lagom interessant. Als kommerzielles Zusatzprodukt zu Lagom gibt es die “Lightbend Production Suite”, mit der sich Lagom-Services leicht auf DC/OS deployen lassen.

Eine direkte Verbindung zwischen Spark und Lagom fällt mir nicht ein, aber es spricht natürlich nichts dagegen, die beiden zu kombinieren.

JAXenter: Was ist die Planung für Lagom? Welche Entwicklungen, Features, Releases stehen an?

Das Warten auf das Scala API sollte bald ein Ende haben.

Lutz Hühnken: Das Release 1.2 ist gerade erschienen und kommt mit einem integrierten Message-Bus für die asynchrone Kommunikation zwischen Services mittels „Publish/Subscribe“. Die Implementierung basiert auf Kafka und ist sehr performant. Der Bus ist auch voll in den Entwickler-Modus integriert, sodass er sich ohne Installationsaufwand gleich nutzen lässt.

Ja, und danach, wie oben schon erwähnt, 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.

JAXenter: Vielen Dank für dieses Interview!

lutz_huehnkenLutz Huehnken ist Solutions Architect bei Lightbend. Aktuell beschäftigt er sich mit der Entwicklung von Microservices mit Scala, Akka und Lagom. Er tweeted als @lutzhuehnken und blogged unter https://huehnken.de.
Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Hartmut Schlosser ist Redakteur und Online-Koordinator bei Software & Support Media. Seine Spezialgebiete liegen bei Java-Enterprise-Technologien, Eclipse, ALM und DevOps. Vor seiner Tätigkeit bei S & S Media studierte er Musik, Informatik, französische Philologie und Ethnologie.
Kommentare
  1. r.m.2016-11-17 00:52:41

    schön und gut. aber wir drehen kreise um lagom, abstraktionsgrad und performance https://www.juptr.io/juptrblogs/c7839e9a-da8b-4a60-bc66-94558c30c4da.html. und das nicht mal ne angeberei :)

Hinterlasse eine Antwort

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