Erste Alpha-Versionen veröffentlicht

Red Hat kann auch Microservices – Wildfly Swarm

Falk Sippach

(c) Shutterstock / Umkehrer

Microservices sind aktuell einer der Trends in der Softwarearchitektur. Natürlich sollte man mit solchen Buzzwords und Hype-Themen vorsichtig sein. Allerdings gibt es bereits einige Branchen-Größen (z. B. Netflix), die diesen Architekturstil produktiv einsetzen. Zudem ist mittlerweile auch eine Vielzahl von Bibliotheken im Microservices-Umfeld entstanden.

Einige der Grundideen sind, eine Anwendung in kleine, in sich abgeschlossene fachliche Einheiten zu unterteilen, die jeweils eigenständig lauffähig sind (ohne Application Container) und untereinander über leichtgewichtige Protokolle kommunizieren (z. B. REST über http). Die aktuell bekannten Frameworks auf diesem Gebiet setzen für die Ausführungsumgebung auf leichtgewichtige Servlet-Container. So verwendet Spring Boot standardmäßig den Tomcat und Dropwizard setzt Jetty ein. Die klassischen Anbieter der Java EE Application Server waren auf den Zug bisher nicht aufgesprungen.

Hintergrund ist sicher, dass das Programmiermodell von Java EE eigentlich darin besteht, ein nur aus Anwendungscode bestehendes, schlankes JAR/WAR zu erstellen. Dieses wird dann in einem Application Server deployed, welcher wiederum alle Bibliotheken der Java-EE-Implementierungen mitbringt. Die ursprüngliche Idee, mehrere Java-EE-Anwendungen auf einem Application Server laufen zu lassen, hat sich aber in der Praxis nicht durchgesetzt. Vielmehr wird letztlich doch wieder pro Anwendung ein separater Server aufgesetzt. Das ist einer der Gründe, warum der Microservices-Trend dieses klassische Deployment-Modell mittlerweile für tot erklärt.

Red Hat hat nun mit Wildfly Swarm erste Alpha-Versionen zur Verfügung gestellt, um sogenannte Fat Jars zu bauen, in die neben der eigentlichen Anwendung auch der Wildfly Application Server integriert wird. Dabei sollen nur so viele Komponenten des WildFly wie nötig zum Einsatz kommen, damit die Anwendung ihre Aufgabe erfüllen kann.

Wildfly Swarm ist direkt über Maven Central verfügbar. Zum Aktivieren muss man in der pom.xml folgendes Plugin einbinden:

<plugin>
  <groupId>org.wildfly.swarm</groupId>
  <artifactId>wildfly-swarm-plugin</artifactId>
  <version>${version.wildfly-swarm}</version>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>create</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Die für die Ausführung des Fat Jars notwendigen Teile des Wildflys gibt man dann als Dependencies an:

<dependency>
    <groupId>org.wildfly.swarm</groupId>
    <artifactId>wildfly-swarm-jaxrs</artifactId>
    <version>${version.wildfly-swarm}</version>
    <scope>provided</scope>
</dependency>

Das ausführbare JAR kann ganz einfach mit den Maven-Mechanismen gebaut und anschließend ausgeführt werden. Der eingepackte Wildfly wird entsprechend hochgefahren, um die Java-EE-Anwendung zu starten.

mvn package
java -jar ./target/myproject-1.0-swarm.jar

Aktivierbare Subsysteme sind zum Beispiel Undertow (Servlet-Engine), JAX-RS, JNDI, Transactions, Messaging, Weld (CDI) u. a. Man kann sie übrigens auch programmatisch aktivieren und hat so die volle Kontrolle über die Server-Konfiguration (ähnlich wie bei Spring Boot). Dazu muss man eine Klasse mit einer main-Methode erstellen und diese in der MANIFEST.MF eintragen:

public class Main {
    public static void main(String[] args) throws Exception {
       new Container()
            .subsystem(new LoggingFraction()...)
            .subsystem(new UndertowFraction()...)
            .socketBindingGroup(new SocketBindingGroup()...)
            .start();
    }
}

Bob McWhirter (Leiter Forschungs- und Prototyp-Abteilung bei Red Hat) empfiehlt Swarm im Moment noch nicht für den produktiven Einsatz. Er ist aber optimistisch, mit Hilfe der Community aktuelle Fehler zu beheben und bald ein stabiles Release anbieten zu können.

Der Beitrag ist in leicht veränderter Fassung auf dem OIO-Blog erschienen.

Aufmacherbild: A big swarm of bats in the rainforest fly on sunset von Shutterstock.com
Urheberrecht: Umkehrer

Geschrieben von
Falk Sippach
Falk Sippach
Falk Sippach hat über 20 Jahre Erfahrung mit Java und ist bei der Mannheimer Firma OIO Orientation in Objects GmbH als Trainer, Software-Entwickler und Projektleiter tätig.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: