Jochen Mader codecentric AG

Microservices verändern die IT, und das tiefgreifender als jeder andere Architekturstil zuvor. Reaktive Frameworks wie Vert.x bilden hier die perfekte Basis für eine neue Generation verteilter Systeme.

Microservices stellen uns Entwickler vor organisatorische Herausforderungen und zwingen uns zur Beschäftigung mit dem Thema verteilte Systeme. Genau für diese verteilten Systeme wurde die neue Generation reaktiver Anwendungsframeworks konzipiert. Vert.x hat sich hier in den letzten Jahren einen guten Namen gemacht und sich als eine beliebte Alternative zu den klassischen Frameworks etabliert.

Microservices haben die Art, in der wir Anwendungen bauen, stärker verändert als jeder andere Trend zuvor. Die Änderungen ziehen eine breite Schneise durch die gesamte IT. Anforderungsmanagement, Teamstruktur, Operations, Infrastruktur und eingesetzte Frameworks haben sich in den letzten Jahren auf diesen Architekturstil zubewegt. Die Erwartungen an die eingesetzten Frameworks sind dabei hoch:

  • elastische Skalierbarkeit
  • gute Testbarkeit
  • im Framework eingebaute Resilienz
  • ausgereifte Monitoringunterstützung
  • kompaktes Deployment

Einer der interessantesten Kandidaten bei der Auswahl eines passenden Microservices-Frameworks ist Vert.x. An dieser Stelle möchte ich auch gleich meinen Vert.x-Elevator-Pitch loswerden: Vert.x ist ein reaktives, modulares, nachrichtenorientiertes, polyglottes Framework, mit dem sich performante Microservices-Architekturen aber auch klassische Anwendungen umsetzen lassen. Im Jahre 2011 von Tim Fox aus der Taufe gehoben, hat Vert.x mittlerweile drei Major-Versionen, eine gut funktionierende Community und mit Red Hat einen starken Corporate-Sponsor vorzuweisen. Im folgenden Artikel werde ich zeigen, was Vert.x so interessant macht und weshalb es sich ausgezeichnet für Microservices eignet.

Micro!!!!111

Der kleinste Vert.x-Microservice besteht – inklusive Imports und Java-Boilerplate – aus 224 Zeichen. Ohne den Java-Pflichtanteil sind es sogar nur 103 Zeichen (Listing 1).

import io.vertx.core.Vertx;

public class HttpServer {
  public static void main(String[] args) {
    Vertx.vertx().createHttpServer().requestHandler(req -> req.response().end("Hello World")).listen(8000);
  }
}

Fehlt noch das Deployment. Das Fat JAR hat sich für JVM-basierte Microservices als Deployment-Artefakt durchgesetzt. Alle Vert.x Build Blueprints liefern das Erzeugen von Fat JARs direkt mit. In der Maven-Variante reicht hierfür ein mvn package, für den Gradle Blueprint verwendet man gradlew shadowJar. Danach liegt im Build-Ordner eine Datei mit der Bezeichnung <AppName>-fat.JAR. Diese kann man mit java -jar <PathToFatJar/<AppName>-fat.jar ausführen, direkt deployen (z. B. mit Nomad von HashiCorp) oder klassisch in einen Docker-Container packen. Fertig ist der vollständige „Hello World“-Microservice.

X
- Gib Deinen Standort ein -
- or -