Este documento introduce la programación reactiva, un paradigma de programación asíncrona que utiliza flujos de datos. Explica que las aplicaciones modernas deben ser más rápidas, escalables y tolerantes a fallos, lo que requiere este nuevo enfoque. También presenta algunas de las tecnologías clave como ReactiveX, RxJava y Spring WebFlux. Finalmente, recomienda seguir aprendiendo a través de la experiencia para aplicar estos conceptos cuando tengan sentido.
3. ¿Qué he hecho?
- Jorge Useche @juusechec
- Ing. Elect. UDistrital
- Líder de Desarrollo Digital en BdB
- Miembro co-iniciador QGIS Colombia
- Miembro Honorario GLUD
- Ex-Director(X2) GLUD
- Programador en todas las capas (2011-Pres.)
https://pixelcoblog.com/la-digital-dbd-una-cuenta-de-ahorro-cien-por-ciento-digital-en-5minutos/
4. Apasionado por la ciencia,
cultura y tecnologías
(Hardware y Software)
libres.
5. Contexto
Aplicación grande Antes:
- 10’s de servidores
- Segundos respuesta
- Horas de mantenimiento offline
- GB de datos
Aplicación grande Ahora:
- Móviles
- Clusters de nube
- Procesadores multi-core
- Expectativa de respuesta milisegundos
- 100% online
- https://www.reactivemanifesto.org/es
6. Contexto
Aplicación grande Antes:
- 10’s de servidores
- Segundos respuesta
- Horas de mantenimiento offline
- GB de datos
Aplicación grande Ahora:
- Móviles
- Clusters de nube
- Procesadores multi-core
- Expectativa de respuesta milisegundos
- 100% online
7. El Manifiesto de Sistemas Reactivos
Queremos sistemas Responsivos, Resilientes, Elásticos y Orientados a Mensajes.
Les llamamos “Sistemas Reactivos”.
Flexibles
Bajo
Acoplamiento
Escalables
Tolerantes a
Fallos
8. El Manifiesto de Sistemas Reactivos
“Es tiempo de aplicar estos principios de diseño conscientemente
desde el inicio, en vez de re-descubrirlos cada vez”.
https://www.reactivemanifesto.org/es
10. Reactive Programming
Es un paradigma de programación asíncrona que gira alrededor de los flujos de
datos y la propagación del cambio.
“Esos programas que propagan todos los cambios que afectan los datos y los
flujos de datos a todas las partes interesadas (usuarios finales, componentes y
subpartes, otros programas relacionados de alguna manera).”
https://learning.oreilly.com/library/view/reactive-progra
mming-in/9781788473026/c840012e-86d9-4a31-9b65
-d6e37f0f0fc2.xhtml
11. ReactiveX (RX, ReactiveExtensions)
API que facilita el manejo de flujos de datos y eventos.
API para programación asíncrona con observables streams (flujos observables).
14. Project Reactor
Reactive Core es un biblioteca reactiva de cuarta generación, basada en la
especificación de Reactive Streams, para construir aplicaciones non-blocking
applications en la JVM.
Spring Reactor es el framework de programación reactiva de Spring. Los
conceptos fundamentales que el Framework soporta son las clases Flux y Mono.
15. Spring WebFlux
- Usa Reactor
- Reemplazo de Spring Web MVC
- Puede co-existir con Spring Web MVC
- Controladores de Spring MVC con WebClient reactivo
- Stack Web Non-blocking para manejar concurrencia con un un número
pequeño de hilos y escalar con pocos recursos de hardware
- Diseñado para ser usado en netty (y otros…)