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

Quand Java enterprise se met au réactif

Quand Java enterprise se met au réactif

Alors que Java EE 8 est sorti en 2017, son modèle de programmation et d'exécution n’a pas beaucoup évolué… contrairement au reste du monde de l’IT. Cloud, microservices, IoT, Kubernetes, machine learning. Tout cela a changé la façon dont nous construisons et déployons du logiciel. Les applications CRUD traditionnelles sont de plus en plus souvent remplacées par de l’event sourcing et du CQRS, mettant les flux de données au coeur de nos systèmes (avec par exemple Eclipse Vert.x ou Debezium).

Ces changements font que Java EE n’est plus toujours pertinent. Pourtant, ces dernières années, un nouvel élan est venu avec Eclipse Microprofile et Jakarta EE. Java enterprise se refait une jeunesse avec les API Microprofile Reactive Streams Operators et Microprofile Reactive Messaging !

Thomas Segismont

May 17, 2019
Tweet

More Decks by Thomas Segismont

Other Decks in Programming

Transcript

  1. 2 Bonjour! Nous travaillons sur le projet Eclipse Vert.x, une

    boîte à outils pour développer des applications asynchrones et réactives sur la JVM.
  2. 3

  3. De Java EE à Jarkarta EE 6 Node.js 2017 2007

    MVC 1.0 Java EE 8 Java EE 7 CDI (Java EE 6) JAX-RS Kafka Vert.x Docker Reactive Manifesto Microservices Kubernetes Serverless
  4. Java EE : un pied dans le passé 7 CRUD

    SGBDR avec ORM Cas d’usage CDI (injection) JAX-RS (REST API) JPA, Bean Validation, JTA, Management... Développement Servlets 1 thread per request Exécution
  5. 8 Basé sur le concept de serveur d’applications ➡ 1

    serveur = plusieurs applications Ne rentre pas “dans le moule” ➡ Petites applications légères ➡ 1 service, 1 processus Pas taillé pour le “cloud”
  6. 9 E/S bloquantes sauf: ➡ Async servlets ➡ CDI events

    Ne supporte pas: ➡ Les flots de données ➡ Le contrôle de flux Pas réactif
  7. 10 ➡ Un ensemble de nouvelles spécifications ➡ Taillé pour

    les microservices ➡ Processus itératif ➡ Un group de travail sur le réactif! MicroProfile Un nouvel espoir
  8. 12 Reactive Streams Operators Reactive Messaging Context Propagation Poussées par:

    Lightbend, Red Hat, Oracle, IBM Les spécifications Microprofile Reactive
  9. Démos* * Aucun lapin n’a été maltraité pendant la préparation

    17 https://github.com/cescoffier/quarkus-reactive-messaging-demo
  10. 19 Etape 2 On ajoute MicroProfile Reactive Messaging HealthDataBean (temperature,

    heartbeat, pressure) Neo (sleeping, awake, eating) Processor state Health data Heartbeat
  11. 20 Etape 3 On ajoute MicroProfile Reactive Streams Operators HealthDataBean

    (temperature, heartbeat, pressure) Processor Health data Heartbeat HTTP Client (Vert.x) Snapshot service (latest data) Health data Health data 1 2
  12. 21 Etape 4 Données fournies par MQTT Processor Health data

    Heartbeat HTTP Client (Vert.x) Snapshot service (latest data) Health data Health data 1 2 MQTT
  13. 22 Etape 5 Microservices event-driven et asynchrones MQTT Kafka Collector

    service Snapshot service Web application Health data Events split by topic SSE HTTP Events
  14. 24

  15. SmallRye 25 Vert.x CDI (Weld) RestEasy JAX-RS Vert.x-powered MQTT Apache

    Kafka Apache Camel AMQP 1.0 Reactive Messaging Vert.x + RxJava2 RS Operators