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

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 vamos a explorarlo, entendiendo cómo funciona, cómo desarrollar con él y los casos de uso donde presenta sus mejores cualidades.

Geovanny Mendoza Gonzalez

November 29, 2021
Tweet

More Decks by Geovanny Mendoza Gonzalez

Other Decks in Programming

Transcript

  1. 2 2 Agenda • Introducción Programación Reactiva • Project Reactor

    • Introducción Spring WebFlux • Server Sent Events (SSE) • Conclusiones
  2. Acerca de mí 3 Certificado en Vaadin 14 Developer &

    Professional 3 Jug Leander 12+ de experiencia Ing. Sistemas Especialista en Ing. Software Blog: http://geovanny0401.blogspot.com/
  3. Procesamiento de Datos vs Procesamiento de Datos en Flujo 5

    Fuente: https://www.manning.com/books/spring-boot-in-practice?query=spring Figura 1.1
  4. • No Bloqueante: Elimina los problemas de escalabilidad y rendimiento.

    • Mejor modelo de Programación asíncrona en JVM: ◦ Enfoques de programación Asíncrono Callback y Future. ◦ Callback: Invoca cuando el resultado está disponible. ◦ Future: Devuelven inmediatamente un Future<T>. • Características adicionales: ◦ Todo comienza cuando se invoca el subscribe en el flujo. ◦ Conjunto de operadores que puedes aplicar al flujo de datos. 10 10 Beneficios - Programación Reactiva
  5. 13 Manifiesto del Sistema Reactivo • Capacidad de reaccionar rápido

    para cualquier usuario. • Capacidad para seguir operando a pesar de los errores. • Procesar cargas de trabajo mas altas, con menos hilos. • Intercambio asíncrono de mensajes • Control de “backpressure” Responsivos Orientación a mensajes Resiliencia Elasticidad
  6. Introducción Spring WebFlux 20 • Se trata de una librería

    totalmente no bloqueante y basada en el proyecto Reactor. • Proporciona dos modelos de programación ◦ Annotated Controllers. ◦ Endpoints Functional.
  7. • Problema: La API REST Libro es bloqueante y utiliza

    Spring MVC. • Solución: Desarrollar una API RESTful reactiva y no bloqueante, utilizaremos el modelo de controlador con anotación de Spring WebFlux. • Base de Datos MongoDB API Reactiva Restful @Controllers 22 Fuente: https://projectreactor.io/
  8. • Problema: Adoptar Endpoint funcionales. • Solución: Desarrollar una API

    RESTful reactiva y no bloqueante, utilizaremos el modelo de programación basado en lambda, ligero y funcional. • El modelo funcional te proporciona un conjunto de utilidades (métodos Java) para que puedas definir las rutas para manejar las peticiones. API Reactiva Restful EndPoint Funcional 24 Fuente: https://projectreactor.io/
  9. 27 Spring WebFlux - Server Side Events 27 • 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.
  10. 28 28 Referencias • Ejemplos: https://github.com/Geovanny0401/peru-jug-2021 Repositorio • Reactive Streams:

    https://github.com/reactive-streams/reactive-streams-jvm/blob/master/README.md • Project Reactor: https://projectreactor.io/docs/core/release/reference/ • Spring WebFlux: https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html • Libros: ◦ Reactive Spring (Josh Long) ◦ Friendly Webflux (Yuri Mednikov) ◦ Spring Boot in Practice (Somnath Musib). • Canal de Joedayz: https://www.youtube.com/channel/UCEOmqvughG1gbKfv5J1U1Dw