Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Der Application Server ist tot - es lebe Jakarta EE!

Der Application Server ist tot - es lebe Jakarta EE!

Präsentation zum Expertenkreis Java der GEDOPLAN am 17.03.2022

Dirk Weil

March 22, 2022
Tweet

More Decks by Dirk Weil

Other Decks in Programming

Transcript

  1. Dirk Weil GEDOPLAN GmbH, Bielefeld GEDOPLAN IT Consulting Softwareentwicklung, Beratung,

    Konzepte, Reviews GEDOPLAN IT Training Java, JEE, Tools u.v.a.m. in Berlin, Bielefeld, on-site JEE seit 1998 Speaker und Autor 2 gedoplan.de Der Application Server ist tot - es lebe Jakarta EE
  2. Enterprise-Anwendungen Programmiermodell Deklarativ (~Annotationen) Dependency Injection Standardisierte Implementierung der Subsysteme

    Laufzeitmodell Klassische Application Server Micro Framework Der Application Server ist tot - es lebe Jakarta EE 3 gedoplan.de @ApplicationScoped @Path("planet") public class PlanetEndpoint { @Inject PlanetRepository planetRepository; @GET @Produces("application/json") public List<Planet> getAll() { return planetRepository.findAll();
  3. Enterprise-Anwendungen Der Application Server ist tot - es lebe Jakarta

    EE 4 gedoplan.de Java EE / Jakarta EE = Application Server = "schwergewichtig"
  4. 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.de Der Application Server ist tot - es lebe Jakarta EE
  5. 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.de Der Application Server ist tot - es lebe Jakarta EE
  6. 12 Factor App Der Application Server ist tot - es

    lebe Jakarta EE 7 gedoplan.de https://12factor.net/ Code- und Build-Organisation Betriebs-Umgebung
  7. II. Dependencies Keine implizite Abhängigkeit Der Application Server ist tot

    - es lebe Jakarta EE 8 gedoplan.de WAR deploy  abhängig von Server-Installation java -jar wildfly-bootable.jar --deployments=WAR  Server-Abhängigkeit in Build-Plugin Quarkus-Anwendung  nur normale Dependencies Demo
  8. III. Config Konfiguration mit Environment-Variablen MicroProfile Config JEE-Deployment-Descriptoren / Server-Konfiguration

    Der Application Server ist tot - es lebe Jakarta EE 9 gedoplan.de @Inject @ConfigProperty(name = "answer") int answer; answer=42 export ANSWER=4711 microprofile-config.properties Environment  <persistence-unit name="…"> <jta-data-source>java:/jdbc/${env.DATASOURCE}</jta-data-source> Demo  nur proprietär  Jakarta Config
  9. IV. Backing Services Unterstützende Dienste (DB, Message Broker, …) per

    URL anbinden Der Application Server ist tot - es lebe Jakarta EE 10 gedoplan.de <subsystem xmlns="urn:jboss:domain:datasources:6.0"> <datasources> <datasource jndi-name="java:/jdbc/showcase" pool-name="showcase"> <connection-url>jdbc:h2:~/h2/showcase;AUTO_SERVER=TRUE</connection-url> quarkus.datasource.db-kind=h2 quarkus.datasource.jdbc.url=jdbc:h2:~/h2/showcase;AUTO_SERVER=TRUE
  10. VI. Processes Anwendungen als zustandslose Prozesse betreiben Zustandsbehaftete Dienste vermeiden

    Der Application Server ist tot - es lebe Jakarta EE 11 gedoplan.de JSF HttpSession …=… @SessionScoped @ApplicationScoped REST 
  11. VII. Port Binding Anwendung bietet Dienste über Ports an 

    ist self-contained Der Application Server ist tot - es lebe Jakarta EE 12 gedoplan.de Klassisches JEE-Deployment  wenn nur eine Anwendung pro Server Cmdline Deployment (z. B. WildFly bootable JAR)  Micro Framework (z. B. Quarkus) 
  12. VIII. Concurrency Horizontale Skalierung  parallele, isolierte Prozesse Schnelle Skalierung

    nach unten und oben Der Application Server ist tot - es lebe Jakarta EE 13 gedoplan.de Klassisches JEE-Deployment  nur parallele Deployments Cmdline Deployment (z. B. WildFly bootable JAR) Micro Framework (z. B. Quarkus)   Server-Overhead , IX. Disposability
  13. X. Dev/prod parity Möglichst ähnliche Stages (Dev, Test, Prod) Der

    Application Server ist tot - es lebe Jakarta EE 14 gedoplan.de Klassisches JEE-Deployment  Server muss separat konfiguriert werden Cmdline Deployment (z. B. WildFly bootable JAR) Micro Framework (z. B. Quarkus)  
  14. 12 Factor App - Fazit Der Application Server ist tot

    - es lebe Jakarta EE 15 gedoplan.de JEE DEPLOYMENT CMDLINE DEPLOYMENT MICRO FRAMEWORK                        
  15. Cloud readiness: Health checking Der Application Server ist tot -

    es lebe Jakarta EE 16 gedoplan.de @Readiness @ApplicationScoped public class ReadinessCheck implements HealthCheck { @Override public HealthCheckResponse call() { return HealthCheckResponse .named("SimulatedReadiness") .status(…) .build(); $ curl localhost:8080/health/ready { "status": "DOWN", "checks": [ { "name": "SimulatedReadiness", "status": "DOWN", } ] }
  16. Cloud readiness: Monitoring Der Application Server ist tot - es

    lebe Jakarta EE 17 gedoplan.de @GET @SimplyTimed public String getHello() { $ curl localhost:8080/metrics/application -H 'accept: application/json' { "de.gedoplan.showcase.metrics.TimedEndpoint.getHello": { "count": 3, "elapsedTime": 4.748263E+8, } }
  17. Der Application Server ist tot … Der Application Server ist

    tot - es lebe Jakarta EE 18 gedoplan.de JEE DEPLOYMENT CMDLINE DEPLOYMENT MICRO FRAMEWORK          12 FACTORS HEALTH CHECKING MONITORING … … es lebe Jakarta EE (+MicroProfile) !
  18. More github.com/GEDOPLAN/microprofile-demo Demo-Projekt gedoplan.de Trainings in Berlin, Bielefeld, inhouse Jakarta

    EE Intensivkurs Microservices mit Quarkus – kompakt Workshop: Migration von JEE-Anwendungen zu Quarkus-(Micro-)Services gedoplan.de Reviews, Coaching, … Blog  [email protected] @dirkweil 19 gedoplan.de Der Application Server ist tot - es lebe Jakarta EE