© Excellent backgrounds/Shutterstock.com
Java Magazin
Das Framework für Microservices und Domain-driven Design

Loslegen mit Lagom


Radikal anders, aber trotzdem einfach – das ist der Spagat, den das neue Open-Source-Microservices-Framework Lagom zu schaffen versucht. Welche Eigenschaften unterscheiden es von anderen Frameworks, wie leicht ist es zu verwenden? Und was bedeutet eigentlich der Name?

Die Frage nach der Bedeutung des Namens Lagom ist nicht ganz einfach zu beantworten, denn eine wörtliche Übersetzung des schwedischen Begriffs Lagom ist nicht bekannt. Laut Wikipedia [1] ist die Bedeutung: „nicht zu viel, nicht zu wenig – gerade richtig.“ Im Fall des Frameworks ist das nicht als Eigenlob gedacht. Vielmehr ist es ein kritisches Statement zum Begriff Microservices. Statt sich auf das „Micro“ zu konzentrieren und ein stures „je weniger Codezeilen, desto besser“ zu verfolgen, schlägt Lagom vor, sich für die Abgrenzung eines Service am Konzept des Bounded Contexts aus dem Domain-driven Design zu orientieren. Die konzeptionelle Nähe von Domain-driven Design und Microservices wurde ja bereits im Java Magazin 10.2016 [2] beschrieben. Im Lagom-Framework findet sie sich an verschiedenen Stellen wieder.

Der einfachste Start, eine Anwendung mit Lagom zu entwickeln, ist die Verwendung der Maven-Projektvorlage:

$ mvn archetype:generate -DarchetypeGroupId=com.lightbend.lagom \ -DarchetypeArtifactId=maven-archetype-lagom-java \ -DarchetypeVersion=1.1.0

Nachdem die Fragen nach Namenswünschen beantwortet sind und in das neu erstellte Verzeichnis gewechselt wurde, findet sich die folgende Verzeichnisstruktur:

cassandra-config hello-api hello-impl integration-tests pom.xml stream-api stream-impl

Wie es sich für Microservices gehört, wurde in der Vorlage nicht nur ein einzelner Service generiert, sondern gleich zwei. Schließlich sind das Zusammenspiel und die Kommunikation zwischen Services mindestens genauso wichtig wie die Implementierung eines einzelnen – und oft die größere Herausforderung. Hier sind es die Services hello und stream, deren Implementierung sich auf jeweils zwei Unterprojekte verteilt (api und impl). Um die Anwendung zu starten, genügt ein einfaches mvn lagom:runAll. Nach einigen Downloads sollte an Port 9000 ein REST-Service laufen. Überprüfen lässt sich dies leicht mit einem Kommandozeilentool wie HTTPie [3]:

$ http localhost:9000/api/hello/Lagom HTTP/1.1 200 OK Content-Type: text/plainHello, Lagom!

Eine Besonderheit ist, dass alle in der Entwicklung benötigten Komponenten, d. h. die Services des Projekts, eine Service Registry, ein API Gateway und auch die Datenbank Cassan...

Java Magazin
Das Framework für Microservices und Domain-driven Design

Loslegen mit Lagom

Radikal anders, aber trotzdem einfach - das ist der Spagat, den das neue Open-Source-Microservices-Framework Lagom zu schaffen versucht. Welche Eigenschaften unterscheiden es von anderen Frameworks, wie leicht ist es zu verwenden? Und was bedeutet eigentlich der Name?

Lutz Hühnken


Radikal anders, aber trotzdem einfach – das ist der Spagat, den das neue Open-Source-Microservices-Framework Lagom zu schaffen versucht. Welche Eigenschaften unterscheiden es von anderen Frameworks, wie leicht ist es zu verwenden? Und was bedeutet eigentlich der Name?

Die Frage nach der Bedeutung des Namens Lagom ist nicht ganz einfach zu beantworten, denn eine wörtliche Übersetzung des schwedischen Begriffs Lagom ist nicht bekannt. Laut Wikipedia [1] ist die Bedeutung: „nicht zu viel, nicht zu wenig – gerade richtig.“ Im Fall des Frameworks ist das nicht als Eigenlob gedacht. Vielmehr ist es ein kritisches Statement zum Begriff Microservices. Statt sich auf das „Micro“ zu konzentrieren und ein stures „je weniger Codezeilen, desto besser“ zu verfolgen, schlägt Lagom vor, sich für die Abgrenzung eines Service am Konzept des Bounded Contexts aus dem Domain-driven Design zu orientieren. Die konzeptionelle Nähe von Domain-driven Design und Microservices wurde ja bereits im Java Magazin 10.2016 [2] beschrieben. Im Lagom-Framework findet sie sich an verschiedenen Stellen wieder.

Der einfachste Start, eine Anwendung mit Lagom zu entwickeln, ist die Verwendung der Maven-Projektvorlage:

$ mvn archetype:generate -DarchetypeGroupId=com.lightbend.lagom \ -DarchetypeArtifactId=maven-archetype-lagom-java \ -DarchetypeVersion=1.1.0

Nachdem die Fragen nach Namenswünschen beantwortet sind und in das neu erstellte Verzeichnis gewechselt wurde, findet sich die folgende Verzeichnisstruktur:

cassandra-config hello-api hello-impl integration-tests pom.xml stream-api stream-impl

Wie es sich für Microservices gehört, wurde in der Vorlage nicht nur ein einzelner Service generiert, sondern gleich zwei. Schließlich sind das Zusammenspiel und die Kommunikation zwischen Services mindestens genauso wichtig wie die Implementierung eines einzelnen – und oft die größere Herausforderung. Hier sind es die Services hello und stream, deren Implementierung sich auf jeweils zwei Unterprojekte verteilt (api und impl). Um die Anwendung zu starten, genügt ein einfaches mvn lagom:runAll. Nach einigen Downloads sollte an Port 9000 ein REST-Service laufen. Überprüfen lässt sich dies leicht mit einem Kommandozeilentool wie HTTPie [3]:

$ http localhost:9000/api/hello/Lagom HTTP/1.1 200 OK Content-Type: text/plainHello, Lagom!

Eine Besonderheit ist, dass alle in der Entwicklung benötigten Komponenten, d. h. die Services des Projekts, eine Service Registry, ein API Gateway und auch die Datenbank Cassan...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang