© Excellent backgrounds/Shutterstock.com
Microservices auf der JVM

Java und die Micronauten


Im März fand zum siebten Mal die Greach [1], eine dem Groovy-und-Grails-Ökosystem gewidmete Konferenz, in Madrid/Spanien statt. In einer Keynote verkündete Graeme Rocher, Leiter des Grails-Framework-Teams, eine Überraschung: das Micronaut-Framework [2].

Micronaut ist ein neues JVM-Framework, das von Grund auf für Microservices und Serverless-Computing-Umgebungen entwickelt wurde. Bei der Entwicklung wurde großer Wert auf folgende Ziele gelegt:

  • Blitzschnelle Startzeit

  • Geringer Speicherbedarf

  • Extrem kleine JAR-Files

  • Keine externen Abhängigkeiten

  • Twelve-Factor App [3]

In der aktuellen Micronaut-Version ist das kleinste JAR einer „Hello World“-Anwendung gerade einmal 8 MB groß und begnügt sich mit nur 10 MB max. Heap. Da die Generierung aller Abhängigkeiten, AOPs und Proxies zur Kompilierungszeit erfolgt, liegt die resultierende Startzeit unter einer Sekunde. Aus dem gleichen Grund wachsen Startzeit und Speicherverbrauch auch nicht linear mit der Anzahl der Codezeilen.

Micronaut ist extrem leichtgewichtig und implementiert die Eigenschaften einer Reactive-App. Es basiert auf Netty und bietet out of the box sowohl einen HTTP-Client als auch -Server zur leichteren Implementierung der HTTP-Komponenten eines Microservice.

Der Code in Listing 1 zeigt ein einfaches Micronaut-Hello-World-Beispiel mit einem HTTP-Server-Endpunkt und einen Client, dessen Implementierung zur Compile Time generiert wird.

Listing 1: Hello World

@Controller class HelloController { @Get("/hello/{name}") String hello(String name) { return "Hello $name!" } } // Client Generated at Compile Time @Client("/") interface HelloClient { @Get("/hello/{name}") String hello(String name) }

Am vorigen Beispiel zeigt sich das zu Spring Boot oder Grails ähnliche Programmiermodell. Wenn Sie als Entwickler schon mit diesen Frameworks gearbeitet haben und jetzt ein Framework für eine verteilte Architektur suchen, wird Ihnen der Umstieg leichtfallen. Auch der Umbau einer vorhandenen Applikation in eine Micronaut-Applikation fällt somit leichter.

Micronaut bringt einige Features mit, die speziell auf die Microservices- bzw. Cloud-Welt zugeschnitten sind, wie Service Discovery, Circuit Breaker, Configuration Sharing, Client-Side Load Balancing und Unterstützung für Serverless Computing mit AWS Lambda.

All diese Features stehen out of the box ohne weitere Abhängigkeiten zur Verfügung. So kann der Circuit Breaker mit einer einfachen @CircuitBreaker-Annotation konfiguriert werden – das wars:

@CircuitBreaker(att...

Neugierig geworden?

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