Pro Yearly is on sale from $80 to $50! »

Programación Reactiva con Spring WebFlux

Programación Reactiva con Spring WebFlux

Una de las características más llamativas de Spring 5 es Spring WebFlux, un framework de programación funcional aplicando patrones reactivos. En esta charla haremos uso de los conceptos reactivos y programación para conectarnos a una base de datos usando Spring Data y Spring WebFlux. Configuraremos Spring Data a nivel Reactivo. Aprovechar las ventajas de Spring Framework 5, WebFlux, Project Reactor.

Link: https://www.youtube.com/watch?v=1nOW7cm8DB8

A023c64d05ba29cfd774f26a20b8e43a?s=128

Geovanny Mendoza Gonzalez

September 26, 2020
Tweet

Transcript

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

  2. 2 2 Agenda • Introducción • Reactive Streams • Project

    Reactor • Spring WebFlux • Demo • Endpoints Funcional • Server Side Events • Conclusiones
  3. 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/
  4. 4 4 Introducción

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

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

  7. 7 7 Programación Reactiva

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

  9. 9

  10. 10 10

  11. 11 11 Reactive Streams

  12. • 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
  13. 13 13 ReactiveX • Empresas que utilizan ReactiveX:

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

  15. Mono<T> 15 Fuente: https://projectreactor.io/

  16. 16 16 Flux<T> Fuente: https://projectreactor.io/

  17. 17 17 Spring WebFlux

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

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

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

  21. 21 21 Ejemplo

  22. 22 Modelo Servicio Repositorio Controlador Ejemplo - Spring WebFlux Base

    de Datos
  23. 23 23 ProductoServicio @Service Modelo ProductoRepositorio extends ReactiveCrudRepository ProductoControlador @RestController

    Ejemplo - Spring WebFlux PostgreSQL
  24. None
  25. pom.xml 25

  26. 26 26 Estructura del proyecto

  27. Modelo 27

  28. Repositorio 28

  29. Servicio 29

  30. Controlador 30

  31. 31 WebFlux MVC Controlador 31

  32. 32 32 Spring WebFlux - Endpoints Funcional

  33. 33 Spring WebFlux - Endpoints Funcional 33

  34. 34 34 Spring WebFlux - Endpoints Funcional

  35. 35 Spring WebFlux - Endpoints Funcional 35

  36. 36 36 Spring WebFlux - Server Side Events

  37. 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
  38. 38 Spring WebFlux - Server Side Events 38 Controller Handler

  39. 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
  40. 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
  41. 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
  42. 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
  43. 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
  44. 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
  45. 45 45 Libros

  46. 46 46 Concurso! https://kahoot.it

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