Slide 1

Slide 1 text

1 Programación Reactiva con Spring WebFlux Geovanny Mendoza @geovanny0401

Slide 2

Slide 2 text

2 2 Agenda ● Introducción ● Reactive Streams ● Project Reactor ● Spring WebFlux ● Demo ● Endpoints Funcional ● Server Side Events ● Conclusiones

Slide 3

Slide 3 text

Acerca de mí 3 Certificado en Vaadin 14 Professional & Developer 3 Jug Leander 12+ de experiencia Ing. Sistemas Especialista en Ing. Software Desarrollador Full Stack en Sophos Solutions Blog: http://geovanny0401.blogspot.com/

Slide 4

Slide 4 text

4 4 Introducción

Slide 5

Slide 5 text

Solicitudes de procesos bloqueantes 5 Fuente: https://howtodoinjava.com/spring-webflux/spring-webflux-tutorial/

Slide 6

Slide 6 text

6 6 Solicitudes de procesos no-bloqueantes Fuente: https://howtodoinjava.com/spring-webflux/spring-webflux-tutorial/

Slide 7

Slide 7 text

7 7 Programación Reactiva

Slide 8

Slide 8 text

8 Patrón Observer Fuente: https://howtodoinjava.com/design-patterns/behavioral/observer-design-pattern/

Slide 9

Slide 9 text

9

Slide 10

Slide 10 text

10 10

Slide 11

Slide 11 text

11 11 Reactive Streams

Slide 12

Slide 12 text

• Programación Reactiva - Conceptos Reactive Streams ● https://projectreactor.io/ 12 ● Observables. ● Emiten el flujo de datos. ● Observers. ● Se les notifican los cambios en el flujo de datos. ● Se crean del lado ‘Publisher’. ● Se comparte con el ‘Subscriber’. ● Puedes ser utilizado entre el ‘Publisher’ y el ‘Subscriber’. Publisher Subscriber Subscription Processor

Slide 13

Slide 13 text

13 13 ReactiveX ● Empresas que utilizan ReactiveX:

Slide 14

Slide 14 text

14 14 Project Reactor Fuente: https://projectreactor.io/

Slide 15

Slide 15 text

Mono 15 Fuente: https://projectreactor.io/

Slide 16

Slide 16 text

16 16 Flux Fuente: https://projectreactor.io/

Slide 17

Slide 17 text

17 17 Spring WebFlux

Slide 18

Slide 18 text

18 Spring MVC - Spring WebFlux Fuente: https://projectreactor.io/

Slide 19

Slide 19 text

19 19 Stack Reactivo Fuente: https://spring.io/reactive

Slide 20

Slide 20 text

Spring WebFlux 20 Fuente: https://projectreactor.io/

Slide 21

Slide 21 text

21 21 Ejemplo

Slide 22

Slide 22 text

22 Modelo Servicio Repositorio Controlador Ejemplo - Spring WebFlux Base de Datos

Slide 23

Slide 23 text

23 23 ProductoServicio @Service Modelo ProductoRepositorio extends ReactiveCrudRepository ProductoControlador @RestController Ejemplo - Spring WebFlux PostgreSQL

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

pom.xml 25

Slide 26

Slide 26 text

26 26 Estructura del proyecto

Slide 27

Slide 27 text

Modelo 27

Slide 28

Slide 28 text

Repositorio 28

Slide 29

Slide 29 text

Servicio 29

Slide 30

Slide 30 text

Controlador 30

Slide 31

Slide 31 text

31 WebFlux MVC Controlador 31

Slide 32

Slide 32 text

32 32 Spring WebFlux - Endpoints Funcional

Slide 33

Slide 33 text

33 Spring WebFlux - Endpoints Funcional 33

Slide 34

Slide 34 text

34 34 Spring WebFlux - Endpoints Funcional

Slide 35

Slide 35 text

35 Spring WebFlux - Endpoints Funcional 35

Slide 36

Slide 36 text

36 36 Spring WebFlux - Server Side Events

Slide 37

Slide 37 text

37 37 Server Side Events ● Server Sent Events(SSE) es una tecnología que permite a un navegador recibir actualizaciones automáticas de un servidor a través de una conexión HTTP. ● ¿Diferencia con los webSocket? Los webSockets son un sistema de comunicación basado en TCP que permite comunicación bi-direccional entre cliente y servidor

Slide 38

Slide 38 text

38 Spring WebFlux - Server Side Events 38 Controller Handler

Slide 39

Slide 39 text

39 39 Rendimiento Spring MVC Spring WebFlux ● Spring MVC: 1.5.10.RELEASE ● Spring WebFlux: 2.0.0.RELEASE ● 2500 Usuarios (4 Solicitudes/Usuarios) Fuente: https://medium.com/@the.raj.saxena/springboot-2-performance-servlet-stack-vs-webflux-reactive-stack-528ad5e9dadc

Slide 40

Slide 40 text

40 40 Rendimiento Spring MVC Spring WebFlux ● Spring MVC: 1.5.10.RELEASE ● Spring WebFlux: 2.0.0.RELEASE ● 5000 Usuarios (4 Solicitudes/Usuarios) Fuente: https://medium.com/@the.raj.saxena/springboot-2-performance-servlet-stack-vs-webflux-reactive-stack-528ad5e9dadc

Slide 41

Slide 41 text

41 41 Rendimiento Spring MVC Spring WebFlux ● Spring MVC: 1.5.10.RELEASE ● Spring WebFlux: 2.0.0.RELEASE ● 10000 Usuarios (4 Solicitudes/Usuarios) Fuente: https://medium.com/@the.raj.saxena/springboot-2-performance-servlet-stack-vs-webflux-reactive-stack-528ad5e9dadc

Slide 42

Slide 42 text

42 42 Rendimiento ● Spring Boot: 2.1.2 ● Java: 11 OpenJDK 2.0.0 ● Node: t2.micro (Amazon Linux) Fuente: https://medium.com/@filia.aleks/microservice-performance-battle-spring-mvc-vs-webflux-80d39fd81bf0

Slide 43

Slide 43 text

43 43 Rendimiento ● Spring Boot: 2.1.2.RELEASE ● Java: 11 OpenJDK 2.0.0 ● Node: t2.micro (Amazon Linux) Fuente: https://medium.com/@filia.aleks/microservice-performance-battle-spring-mvc-vs-webflux-80d39fd81bf0

Slide 44

Slide 44 text

44 44 Referencias • https://projectreactor.io/ • https://www.devglan.com/spring-boot/spring-webflux-reactive-rest-api • https://www.slideshare.net/paradigmatecnologico/programacin-reactiva-con-spring-webflux • https://docs.spring.io/spring-framework/docs/5.0.0.M1/spring-framework-reference/html/web-reactive.html • https://www.codesolt.com/eventos/charlas/jvm-mx-spring-webflux/ • https://www.arquitecturajava.com/que-es-spring-webflux/ • http://maddy4java.blogspot.com/2019/11/spring-boot-spring-webflux-vs-spring-mvc.html • https://blog.nebrass.fr/playing-with-reactive-spring-boot/ • https://www.youtube.com/channel/UCEOmqvughG1gbKfv5J1U1Dw Canal de Joedayz • https://www.youtube.com/channel/UC9fAeSPVw7mAAbexCS7gPqw Canal de MitoCode ● https://github.com/Geovanny0401/spring-webflux-jugnicaragua ● https://github.com/Geovanny0401/spring-webflux-endpoint-funcional Repositorio

Slide 45

Slide 45 text

45 45 Libros

Slide 46

Slide 46 text

46 46 Concurso! https://kahoot.it

Slide 47

Slide 47 text

47 47 Preguntas! Contacto! @Geovanny0401 https://www.linkedin.com/in/gmendozag/ Presentación https://speakerdeck.com/geovanny0401 Código https://github.com/Geovanny0401