Microservices mit micronaut

Seit der Ankündigung von Anfang letzten Jahres, stand das micronaut framework auf meiner Liste der Dinge, die ich mir anschauen will. Ein Framework mit den Vorzügen von Spring und Grails, aber mit geringem Footprint und Speicherverbrauch, das auch noch Java, Groovy und Kotlin unterstützt, klingt einfach zu verlockend, zumal es von den Entwicklern von Grails ist.Mit der Veröffentlichung von micronaut-data, einer leichtgewichtigen und performanten Abstraktionsschicht für jdbc und jpa, führte dann aber kein Weg mehr daran vorbei.

Was kann man mit micronaut bauen?

  • Microservices
  • Serverless Applications
  • Message-Driven Applications with Kafka/Rabbit
  • CLI Applications
  • Event Android Applications
  • und alles mit static void main(String..args)

Petstore Architecture

Installation

Die Installation mit sdkman ist wie immer einfach. Danach kann man die Micronaut CLI um die erste App zu erstellen.

svn install micronaut
mn create-app de.koo.micronaut.demo.micronaut-demo-groovy --lang=groovy --features security-jwt
cd micronaut-demo-groovy

Das Default Package de.koo.micronaut.demo gibt man bei der Erstellung als Präfix vor dem App Namen micronaut-demo-groovy, getrennt durch einen Punkt, an.

  • siehe micronaut-cli.yml
defaultPackage: de.koo.micronaut.demo

Eclipse Setup

Micronaut nutzt gradle (maven ist ebenfalls möglich) als build tool. Eine Einbindung in die Entwicklungsumgebung der Wahl (bei mir eclipse) ist daher recht einfach.

# add id "eclipse" to plugins
vi build.gradle   
plugins {       
   id "groovy"       
   id "com.github.johnrengelman.shadow" version "5.0.0"       
   id "application"       
   id "eclipse"   
}

# build eclipse project files
gradle eclipse
  • Eclipse: file -> import -> existing gradle project

Der Start der App erfolgt ebenfalls mit gradle.

gradle run

Server Running: http://localhost:8080

Controller

Die Controller kann man ebenfalls per CLI erstellen. Als Testframeworks stehen junit (für Java und Kotlin) und Spoc (für Groovy) zur Verfügung.

  • create via cli
mn create-controller de.koo.micronaut.demo.controllers.Hello

Rendered template Controller.groovy to destination src/main/groovy/micronaut/demo/groovy/controllers/HelloController.groovy<br>
Rendered template ControllerSpec.groovy to destination src/test/groovy/micronaut/demo/groovy/controllers/HelloControllerSpec.groovy

Deploy

gradle assemble

Fazit

Micronaut ist durch das Auflösen der Depency Injection per AoT, den weitestgehenden Verzicht auf Reflection und Proxies vor allem eines: es ist schnell. So lassen sich Unit Tests auch ohne mockups ausführen.
Für die Erstellung von Microservices hat es alles Notwendige (jettty, docker Vorbereitung und HTTP Client: ebenfalls neu und schnell) unter der Haube. Es gibt mittlerweile eine große Liste von Modulen zur Anbindung von Drittsystemen und die Freigabe als Open Source (mit Apache 2.0 Lizenz) wird eine weite Verbreitung, inklusive Nutzung in kommerzieller Software ermöglichen.

Als Einstieg empfehle ich die Präsentation von Graeme Rocher (s. Links) auf der Goto 2019 und die micronaut-data excamples. Ein komplexes Microservices Beispiel ist der bereits oben erwähnte Petstore aus den micronaut excamples auf github.

Links

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

%d Bloggern gefällt das: