+ All Categories
Home > Documents > Vom Enterprise-Java-Monolithen zu Microservices in der ... · Monolith Microservices JVM JEE Server...

Vom Enterprise-Java-Monolithen zu Microservices in der ... · Monolith Microservices JVM JEE Server...

Date post: 25-May-2020
Category:
Upload: others
View: 13 times
Download: 0 times
Share this document with a friend
21
Vom Enterprise-Java-Monolithen zu Microservices in der Container-Welt OWL Tech & Innovation Day 26.09.2019 Dirk Weil, GEDOPLAN GmbH
Transcript
Page 1: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

Vom Enterprise-Java-Monolithen zu

Microservices in der Container-Welt

OWL Tech & Innovation Day

26.09.2019

Dirk Weil, GEDOPLAN GmbH

Page 2: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

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.deVom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 3: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

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-

mentStock

JVM

Ser-

ver

Car-

rier

JVM

Ser-

ver

Bil-

ling

JVM

Ser-

ver

Tax

JVM

Ser-

ver

Vom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 4: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

JEE

4gedoplan.de

„So neue Sachen kannste mit Java EE nicht machen!“

JS UIREST

LeichtgewichtigMonitoring

Health

Vom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 5: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

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

kleingroß

gedoplan.deVom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 6: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

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.deVom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 7: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

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.deVom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 8: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

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.deVom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 9: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

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.deVom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 10: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

„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);}

Vom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 11: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

„Gewicht“: Anwendungscode

z. B. REST-Endpunkt

11gedoplan.de

@ApplicationScoped@Path("person")public class PersonResource {

@InjectPersonRepository personRepository;

@GET@Produces(MediaType.APPLICATION_JSON)public List<Person> getAll() {

return personRepository.findAll();}

@RestController@RequestMapping("/person")public class PersonResource {

@Autowiredprivate PersonRepository personRepository;

@RequestMappingpublic Iterable<Person> getAll() {

return personRepository.findAll();}

Vom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 12: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

„Gewicht“: Build

12gedoplan.de

WAR

Spring Boot

KumuluzEE

Quarkus

0

1

1

1

1

4

7

3

POM-Komplexität

Dependencies PluginsWAR

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

Vom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 13: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

„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

Vom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 14: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

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.deVom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 15: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

Test

15gedoplan.de

WAR

Spring Boot

KumuluzEE

Quarkus

9,3 s19,0 s

9,6 s

31,4 s

12,0 s

Testausführungszeit

Self-contained mit laufendem Server

Vom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 16: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

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

Vom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 17: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

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.deVom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 18: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

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.deVom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 19: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

Fazit

Vom Enterprise-Java-Monolithen zu Microservices in der Container-Welt 19gedoplan.de

„… kannste sehr wohl machen!“

Page 20: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

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.deVom Enterprise-Java-Monolithen zu Microservices in der Container-Welt

Page 21: Vom Enterprise-Java-Monolithen zu Microservices in der ... · 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

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

[email protected]

@dirkweil

21gedoplan.deVom Enterprise-Java-Monolithen zu Microservices in der Container-Welt


Recommended