Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Java EE Microservices ohne Server
Expertenkreis Java, 08.12.2016, GEDOPLAN
Dirk Weil, GEDOPLAN GmbH
Dirk Weil
GEDOPLAN GmbH, Bielefeld
GEDOPLAN IT Consulting
Konzeption, Realisierung von IT-Lösungen
GEDOPLAN IT Training
Se...
200x – J(2)EE
Monolithische Anwendungen
Schwergewichtige Application Server
Java EE Microservices ohne Server 3gedoplan.de...
200x – J(2)EE - reloaded
Monolithische Anwendungen
Schwergewichtige Application Server
SLAs
Java EE Microservices ohne Ser...
201x – Java EE - Microservices
Leichtgewichtige, „kleine“ Services
Unabhängig deploybar
Java EE Microservices ohne Server ...
Programm-Modell
Java EE
Ausgereifte Bestandteile
Java EE Microservices ohne Server 6gedoplan.de
Browser Desktop/Mobile
Jav...
Betriebs-Modell
Zirkuläre Abhängigkeit
Wunsch: Betrieb als ein Executable
Java EE Microservices ohne Server 7gedoplan.de
J...
WildFly Swarm
Infrastruktur-Baukasten
auf Basis von WildFly
Anwendungscode
+ notwendige „Fractions“
================
ausfü...
WildFly Swarm
Komposition in Maven
Java EE Microservices ohne Server 9gedoplan.de
<dependencyManagement>
<dependencies>
<d...
WildFly Swarm
Plugin zum Bau des UberJAR
Java EE Microservices ohne Server 10gedoplan.de
<plugin>
<groupId>org.wildfly.swa...
WildFly Swarm
Konfiguration in main-Klasse
Java EE Microservices ohne Server 11gedoplan.de
public class SwarmBootstrap {
p...
WildFly Swarm
Start der main-Klasse in IDE
Start als ausführbares JAR
Java EE Microservices ohne Server 12gedoplan.de
Payara Micro
Reduzierter Server auf Basis von Payara
<70MB
Web Profile
JBatch, JCache, Concurrency
Anwendung = Standard-WA...
Payara Micro
Start als ausführbares JAR
mit Deployment
und ggf. Konfigurationsdatei
Java EE Microservices ohne Server 14ge...
KumuluzEE
Leichtgewichtiges Framework aus Java-EE-Komponenten
JSF (Mojarra)
JAX-RS (Jersey)
JAX-WS (Metro)
Servlet, JSP, W...
KumuluzEE
Komposition
in Maven
Java EE Microservices ohne Server 16gedoplan.de
<dependencies>
<dependency>
<groupId>com.ku...
KumuluzEE
Plugin zur Bereitstellung der Dependencies
Java EE Microservices ohne Server 17gedoplan.de
<plugin>
<groupId>org...
KumuluzEE
Optional: main-Klasse
Java EE Microservices ohne Server 18gedoplan.de
public class KumuluzEEBootstrap {
public s...
KumuluzEE
Start der main-Klasse in IDE
Start als ausführbares JAR
Java EE Microservices ohne Server 19gedoplan.de
Footprint der Demoanwendung
Disk size
Java EE Microservices ohne Server 20gedoplan.de
0,0 MB
20,0 MB
40,0 MB
60,0 MB
80,0 ...
Footprint der Demoanwendung
Memory
Java EE Microservices ohne Server 21gedoplan.de
0 MB
50 MB
100 MB
150 MB
200 MB
250 MB
...
Footprint der Demoanwendung
Startup time
Java EE Microservices ohne Server 22gedoplan.de
0,0 s
2,0 s
4,0 s
6,0 s
8,0 s
10,...
Demo-Projekt
https://github.com/GEDOPLAN/micro-ohne-server
Java EE Microservices ohne Server 23gedoplan.de
Besonderheiten
WildFly Swarm
Home Page
http://wildfly-swarm.io/
User‘s Guide
https://www.gitbook.com/book/wildfly-
swarm/w...
Besonderheiten
WildFly Swarm
Großes Angebot an Fractions
Camel, Flyway, EclipseLink, Hystrix, LogStash, Health, Ribbon,
Ke...
Besonderheiten
Payara Micro
Payara (Hydrolycus scomberoides)  Vampirfisch
Home Page
http://www.payara.fish/
Documentation...
Besonderheiten
Payara Micro
Uber Jar
Application Scope teilweise fehlerhaft
Initalized Lifecycle Event kommt mehrfach
@Per...
Besonderheiten
KumuluzEE
Home page
https://ee.kumuluz.com/
Documentation
… leider nur Tutorial und Sample auf GitHub
Web R...
Fazit
„Rightsizing your Applications“ ohne Program-Modell-Änderung
Anwendungen bleiben kompatibel zu klassischen App Serve...
More
http://gedoplan-it-consulting.de/expertenkreis-
java/archiv/
Präsentation zum Download
http://www.gedoplan-it-trainin...
Upcoming SlideShare
Loading in …5
×

Java EE Microservices ohne Server

219 views

Published on

Dirk Weil, GEDOPLAN GmbH
Vortrag auf dem Expertenkreis Java, 8.12.2016, Bielefeld

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Java EE Microservices ohne Server

  1. 1. Java EE Microservices ohne Server Expertenkreis Java, 08.12.2016, GEDOPLAN Dirk Weil, GEDOPLAN GmbH
  2. 2. Dirk Weil GEDOPLAN GmbH, Bielefeld GEDOPLAN IT Consulting Konzeption, Realisierung von IT-Lösungen GEDOPLAN IT Training Seminare in Berlin, Bielefeld, on-site Java EE seit 1998 Vorträge, Veröffentlichungen Java EE Microservices ohne Server 2gedoplan.de
  3. 3. 200x – J(2)EE Monolithische Anwendungen Schwergewichtige Application Server Java EE Microservices ohne Server 3gedoplan.de JVM J(2)EE Server Web Shop AccountingLogistics
  4. 4. 200x – J(2)EE - reloaded Monolithische Anwendungen Schwergewichtige Application Server SLAs Java EE Microservices ohne Server 4gedoplan.de JVM J(2)EE Server Web Shop JVM J(2)EE Server Accounting JVM J(2)EE Server Logistics
  5. 5. 201x – Java EE - Microservices Leichtgewichtige, „kleine“ Services Unabhängig deploybar Java EE Microservices ohne Server 5gedoplan.de JVM Java EE Server Catalog JVM Java EE Server Billing JVM Java EE Server Stock JVM Java EE Server Order JVM Java EE Server Payment JVM Java EE Server Supplier JVM Java EE Server Carrier JVM Java EE Server Tax
  6. 6. Programm-Modell Java EE Ausgereifte Bestandteile Java EE Microservices ohne Server 6gedoplan.de Browser Desktop/Mobile JavaServer Faces Webservice Servlet CDI Enterprise JavaBeans Connector MessagingJava Persistence Java Batch
  7. 7. Betriebs-Modell Zirkuläre Abhängigkeit Wunsch: Betrieb als ein Executable Java EE Microservices ohne Server 7gedoplan.de Java EE Server Appli- cation benötigt Ressourcen von wird konfiguriert für eine Komponente!
  8. 8. WildFly Swarm Infrastruktur-Baukasten auf Basis von WildFly Anwendungscode + notwendige „Fractions“ ================ ausführbares UberJAR Java EE Microservices ohne Server 8gedoplan.de SSO TX LB Logging Messa- ging Remote Health Cache JPACDIRESTWeb Application Code
  9. 9. WildFly Swarm Komposition in Maven Java EE Microservices ohne Server 9gedoplan.de <dependencyManagement> <dependencies> <dependency> <groupId>org.wildfly.swarm</groupId> <artifactId>bom-all</artifactId> <version>2016.11.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.wildfly.swarm</groupId> <artifactId>jaxrs-cdi</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.wildfly.swarm</groupId> <artifactId>jpa</artifactId> <scope>provided</scope> </dependency> </dependencies>
  10. 10. WildFly Swarm Plugin zum Bau des UberJAR Java EE Microservices ohne Server 10gedoplan.de <plugin> <groupId>org.wildfly.swarm</groupId> <artifactId>wildfly-swarm-plugin</artifactId> <version>2016.11.0</version> <configuration> <mainClass>de.gedoplan.micro.bootstrap.SwarmBootstrap</mainClass> </configuration> <executions> <execution> <goals> <goal>package</goal> </goals> </execution> </executions> </plugin>
  11. 11. WildFly Swarm Konfiguration in main-Klasse Java EE Microservices ohne Server 11gedoplan.de public class SwarmBootstrap { public static void main(String[] args) throws Exception { Swarm swarm = new Swarm(); System.setProperty("swarm.context.path", "micro-ohne-server"); URL standaloneFullXml = SwarmBootstrap.class .getClassLoader() .getResource("configuration/standalone-full.xml"); swarm .withXmlConfig(standaloneFullXml) .start() .deploy(); } }
  12. 12. WildFly Swarm Start der main-Klasse in IDE Start als ausführbares JAR Java EE Microservices ohne Server 12gedoplan.de
  13. 13. Payara Micro Reduzierter Server auf Basis von Payara <70MB Web Profile JBatch, JCache, Concurrency Anwendung = Standard-WAR „Deployment“ per CmdLine-Parameter Konfiguration mittels externer Konfigurationsdatei möglich Java EE Microservices ohne Server 13gedoplan.de
  14. 14. Payara Micro Start als ausführbares JAR mit Deployment und ggf. Konfigurationsdatei Java EE Microservices ohne Server 14gedoplan.de java -jar targetdependencypayara-micro-4.1.1.164.jar --domainConfig targetclassesmicrodomain-nocluster.xml --deploy targetmicro-ohne-server.war
  15. 15. KumuluzEE Leichtgewichtiges Framework aus Java-EE-Komponenten JSF (Mojarra) JAX-RS (Jersey) JAX-WS (Metro) Servlet, JSP, Websocket (Jetty) CDI (Weld) JPA (EclipseLink) BV (Hibernate Validator) JSON-P Java EE Microservices ohne Server 15gedoplan.de
  16. 16. KumuluzEE Komposition in Maven Java EE Microservices ohne Server 16gedoplan.de <dependencies> <dependency> <groupId>com.kumuluz.ee</groupId> <artifactId>kumuluzee-core</artifactId> <version>2.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.kumuluz.ee</groupId> <artifactId>kumuluzee-servlet-jetty</artifactId> <version>2.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.kumuluz.ee</groupId> <artifactId>kumuluzee-jax-rs-jersey</artifactId> <version>2.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.kumuluz.ee</groupId> <artifactId>kumuluzee-cdi-weld</artifactId> <version>2.0.0</version> <scope>provided</scope> </dependency>
  17. 17. KumuluzEE Plugin zur Bereitstellung der Dependencies Java EE Microservices ohne Server 17gedoplan.de <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> </execution> </executions> </plugin>
  18. 18. KumuluzEE Optional: main-Klasse Java EE Microservices ohne Server 18gedoplan.de public class KumuluzEEBootstrap { public static void main(String[] args) { new EeApplication(new CustomizedEeConfig()); } private static class CustomizedEeConfig extends EeConfig { private ServerConfig serverConfig = new CustomizedServerConfig(); public ServerConfig getServerConfig() { return this.serverConfig; } } private static class CustomizedServerConfig extends ServerConfig { public String getContextPath() { return "/micro-ohne-server"; } }
  19. 19. KumuluzEE Start der main-Klasse in IDE Start als ausführbares JAR Java EE Microservices ohne Server 19gedoplan.de
  20. 20. Footprint der Demoanwendung Disk size Java EE Microservices ohne Server 20gedoplan.de 0,0 MB 20,0 MB 40,0 MB 60,0 MB 80,0 MB 100,0 MB 120,0 MB 140,0 MB 160,0 MB 180,0 MB Application Platform
  21. 21. Footprint der Demoanwendung Memory Java EE Microservices ohne Server 21gedoplan.de 0 MB 50 MB 100 MB 150 MB 200 MB 250 MB 300 MB 350 MB 400 MB 450 MB
  22. 22. Footprint der Demoanwendung Startup time Java EE Microservices ohne Server 22gedoplan.de 0,0 s 2,0 s 4,0 s 6,0 s 8,0 s 10,0 s 12,0 s Application Platform
  23. 23. Demo-Projekt https://github.com/GEDOPLAN/micro-ohne-server Java EE Microservices ohne Server 23gedoplan.de
  24. 24. Besonderheiten WildFly Swarm Home Page http://wildfly-swarm.io/ User‘s Guide https://www.gitbook.com/book/wildfly- swarm/wildfly-swarm-users-guide Project Configurator http://wildfly-swarm.io/generator/ Fraction autodetect Java EE Microservices ohne Server 24gedoplan.de
  25. 25. Besonderheiten WildFly Swarm Großes Angebot an Fractions Camel, Flyway, EclipseLink, Hystrix, LogStash, Health, Ribbon, Keycloak, Modcluster, … Hollow Uber Jar funktioniert leider nicht mit Main Class Shutdown hook fährt Anwendung leider nicht immer zuverlässig herunter Achtung: Breaking changes 2016.11.0  2016.12.0 s. http://wildfly-swarm.io/posts/announcing-wildfly-swarm-2016-12-0/ Java EE Microservices ohne Server 25gedoplan.de
  26. 26. Besonderheiten Payara Micro Payara (Hydrolycus scomberoides)  Vampirfisch Home Page http://www.payara.fish/ Documentation https://payara.gitbooks.io/payara- server/content/documentation/payara- micro/payara-micro.html Java EE Microservices ohne Server 26gedoplan.de
  27. 27. Besonderheiten Payara Micro Uber Jar Application Scope teilweise fehlerhaft Initalized Lifecycle Event kommt mehrfach @PersistenceContext wird nicht ausgeführt Java EE Microservices ohne Server 27gedoplan.de
  28. 28. Besonderheiten KumuluzEE Home page https://ee.kumuluz.com/ Documentation … leider nur Tutorial und Sample auf GitHub Web Root Directory ist webapp im Classpath Keine vollständige Java-EE-Unterstützung Java EE Microservices ohne Server 28gedoplan.de
  29. 29. Fazit „Rightsizing your Applications“ ohne Program-Modell-Änderung Anwendungen bleiben kompatibel zu klassischen App Servern Aber: Selber komponieren (WildFly Swarm, KumuluzEE) WildFly Swarm: Umfangreichste Implementierung Payara Micro: OOTB nutzbar, allerdings nur Web Profile + KumuluzEE: Schlankste Implementierung, aber auch unvollständig Turn-around-Zeiten werden teilweise größer Aktuelle klassische App Server sind auch keine Monster Und … Docker … stay tuned Java EE Microservices ohne Server 29gedoplan.de
  30. 30. More http://gedoplan-it-consulting.de/expertenkreis- java/archiv/ Präsentation zum Download http://www.gedoplan-it-training.de Seminare in Berlin, Bielefeld, Inhouse http://www.gedoplan-it-consulting.de Reviews, Coaching, … Blog  dirk.weil@gedoplan.de @dirkweil Java EE Microservices ohne Server 30gedoplan.de

×