Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

JEE und Micro – kein Widerspruch!

70 Aufrufe

Veröffentlicht am

Vortrag von Dirk Weil auf dem Expertenkreis Java, 26.6.2019, GEDOPLAN GmBH, Bielefeld

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

JEE und Micro – kein Widerspruch!

  1. 1. JEE und Micro – kein Widerspruch! Expertenkreis Java, GEDOPLAN GmbH 26.06.2019 Dirk Weil
  2. 2. Dirk Weil GEDOPLAN GmbH, Bielefeld GEDOPLAN IT Consulting Consulting, coaching, concepts, reviews, development GEDOPLAN IT Training & partner Java, JEE, tools trainings in Berlin, Bielefeld, Köln, on-site JEE since 1998 Speaker and author 2gedoplan.deJEE und Micro - kein Widerspruch!
  3. 3. 3gedoplan.de Monolith  Microservices JVM JEE Server Web Shop Acc oun ting Logi stics JVM Ser- ver Web Shop Logis tics JVM Ser- ver Acc- oun- ting JVM Ser- ver JVM Ser- ver Cata -log JVM Ser- ver Or- der JVM Ser- ver Pay- ment Stock JVM Ser- ver Car- rier JVM Ser- ver Bil- ling JVM Ser- ver Tax JVM Ser- ver JEE und Micro - kein Widerspruch!
  4. 4. JEE 4gedoplan.de „So neue Sachen kannste mit Java EE nicht machen!“ JS UI REST Leichtgewichtig Monitoring Health JEE und Micro - kein Widerspruch!
  5. 5. Der schwergewichtige (?) Application Server 5 Anwendungsklassen Konfigurationsfiles (Deployment Descriptors, Properties, …) JEE Server CDI Runtime JPA Runtime REST Runtime Technische Konfiguration * JRE build deploy run * DB-Verbindungen, Messaging Security … Thin WAR klein groß gedoplan.deJEE und Micro - kein Widerspruch!
  6. 6. Die leichtgewichtige (?) Alternative: „Micro“ Framework 6 Anwendungsklassen Konfigurationsfiles * CDI Runtime JPA Runtime REST Runtime JRE build run * Anwendungsparameter, DB-Verbindungen, Messaging Security … Fat JAR JAR + Dependencies groß gedoplan.deJEE und Micro - kein Widerspruch!
  7. 7. Vergleichanwendung https://github.com/GEDOPLAN/micro-comparison REST-Service mit Persistenz JPA + CDI/Spring + JAX-RS/Spring Web lauffähig als WAR bzw. Fat JAR oder Docker Image Implementierungsvarianten klassisches WAR für WildFly (und andere JEE-Server) Spring Boot Quarkus KumuluzEE 7gedoplan.deJEE und Micro - kein Widerspruch!
  8. 8. Kandidaten WildFly 16.0.0 klassischer Application Server JEE 8 + MicroProfile 2.2 mittels Galleon provisionierbar Spring Boot 1.5.16 populäre Alternative zu Java EE Runtime wird durch Dependencies kombiniert große Vielfalt an 3rd-Party-Anbindungen Autokonfiguration nutzt viele JEE-Anteile 8gedoplan.deJEE und Micro - kein Widerspruch!
  9. 9. Kandidaten KumuluzEE kombiniert Runtime aus JEE-Dependencies Jetty, Weld, Jersey, Hibernate, … Anwendungscode ist 100% Standard-JEE Quarkus kombiniert Runtime aus JEE-Dependencies spezieller CDI-Container ARC Subset von CDI 2.0 Optimierung schon zur Build-Zeit Hot Reloading im Dev-Modus 9gedoplan.deJEE und Micro - kein Widerspruch!
  10. 10. „Gewicht“: Anwendungscode z. B. Persistenz 10gedoplan.de @ApplicationScoped @Transactional(rollbackOn = Exception.class) public class PersonRepository extends SingleIdEntityRepository<Integer, Person> { public List<Person> findByName(String name) { return findMultiByProperty(Person_.name, name); } @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) public interface PersonRepository extends CrudRepository<Person, Integer> { public List<Person> findByName(String name); } JEE und Micro - kein Widerspruch!
  11. 11. „Gewicht“: Anwendungscode z. B. REST-Endpunkt 11gedoplan.de @ApplicationScoped @Path("person") public class PersonResource { @Inject PersonRepository personRepository; @GET @Produces(MediaType.APPLICATION_JSON) public List<Person> getAll() { return personRepository.findAll(); } @RestController @RequestMapping("/person") public class PersonResource { @Autowired private PersonRepository personRepository; @RequestMapping public Iterable<Person> getAll() { return personRepository.findAll(); } JEE und Micro - kein Widerspruch!
  12. 12. „Gewicht“: Build 12gedoplan.de WAR Spring Boot KumuluzEE Quarkus 0 1 1 1 1 4 7 3 POM-Komplexität Dependencies Plugins WAR Spring Boot KumuluzEE Quarkus 4,8 s 8,5 s 12,7 s 4,8 s 4,6 s 5,5 s 8,5 s Build-Zeiten mvn clean package dito, -Pfatjar WAR Spring Boot KumuluzEE Quarkus 30.692 kB 28.252 kB 25.192 kB 404 kB 12 kB 12 kB Größe der Build-Ergebnisse Thin WAR / Slim JAR Fat JAR JEE und Micro - kein Widerspruch!
  13. 13. „Gewicht“: Laufzeit 13gedoplan.de 0,0 s 1,0 s 2,0 s 3,0 s 4,0 s 5,0 s 6,0 s WAR Spring Boot KumuluzEE Quarkus Startzeit Server Anwendung Reload 0 MB 50 MB 100 MB 150 MB 200 MB 250 MB WAR Spring Boot KumuluzEE Quarkus Memory Non-Heap Heap JEE und Micro - kein Widerspruch!
  14. 14. Test Arquillian De-facto-Standard für JEE-Tests Server Lifecycle, Deployment, Test komplex Auswahl und Konfiguration der Zielumgebung Zusammenstellung des Deployments Im Demo-Projekt für WildFly und KumuluzEE genutzt @SpringBootTest: Spring-eigener Test Runner Server Lifecycle, Test einfach @QuarkusTest: Quarkus-Pendent zu @SpringBootTest 14gedoplan.deJEE und Micro - kein Widerspruch!
  15. 15. Test 15gedoplan.de WAR Spring Boot KumuluzEE Quarkus 9,3 s 19,0 s 9,6 s 31,4 s 12,0 s Testausführungszeit Self-contained mit laufendem Server JEE und Micro - kein Widerspruch!
  16. 16. Betriebsmodell „Server mit Deployment, Server eingebettet – ist das nicht zukünftig eh egal?“ Container OS + JVM + Server? + Anwendung 16gedoplan.de 1.168 MB 1.038 MB 1.020 MB 962 MB 328 MB 235 MB 238 MB 231 MB WAR Spring Boot KumuluzEE Quarkus Image Size Memory lt. top im Container JEE und Micro - kein Widerspruch!
  17. 17. Health Monitoring, Metrics MicroProfile Health https://javaeeblog.wordpress.com/2019/01/27/alles-gesund- health-checking-mit-microprofile-health/ MicroProfile Metrics https://javaeeblog.wordpress.com/2019/03/15/wie-laeufts- denn-so-monitoring-mit-microprofile-metrics/ 17gedoplan.deJEE und Micro - kein Widerspruch!
  18. 18. Fazit Micro-Frameworks auch für JEE verfügbar Anwendungscode von JEE und Spring Boot sehr ähnlich Projekt-Setup für klassische JEE-Anwendung einfacher aber: Server notwendig Entwicklungs-Zeiten für JEE und Micro vergleichbar kurz klassische Deployzeiten vergleichbar mit Hot Reload Footprint von Micro-Frameworks kleiner insb. Quarkus durch Build-Time-Optimierung Testen im klassischen JEE-Umfeld zu kompliziert Spring Boot und Quarkus richtungsweisend Server separat oder embedded tritt in den Hintergrund 18gedoplan.deJEE und Micro - kein Widerspruch!
  19. 19. Fazit JEE und Micro - kein Widerspruch! 19gedoplan.de „… kannste sehr wohl machen!“
  20. 20. Ausblick Quarkus (u. a.) bietet Compile in Maschinencode (GraalVM)  Startzeiten im ms-Bereich  Cloud, ggf. serverless Reactive Programming non-blocking asychron abstraktes Producer/Consumer-Konzept 20gedoplan.deJEE und Micro - kein Widerspruch!
  21. 21. More github.com/GEDOPLAN/micro-comparison Demo project www.gedoplan-it-training.de Trainings in Berlin, Bielefeld, inhouse neu: JEE Microservice Foundation neu: Java DevOps: Development und Delivery mit Docker und Kubernetes www.gedoplan-it-consulting.de Reviews, Coaching, … Blog  dirk.weil@gedoplan.de @dirkweil 21gedoplan.deJEE und Micro - kein Widerspruch!

×