4. ¿Sistemas reactivos?
● Debe reaccionar adecuadamente a sus usuarios (Responsivos)
● Debe reaccionar a las condiciones de carga variables (Elástico)
● Debe reaccionar adecuadamente a los fallos para mantenerse
disponible (Resiliente).
● Usan comunicación asíncrona dirigida por mensajes.
¿No deben cumplir todos los sistemas con estas
características?
5. ¿Programación Reactiva?
● Enfoque de programación que modela el sistema como un conjunto
de flujos de datos asíncronos.
● Abstracciones basadas ampliamente en la programación funcional.
○ Funciones de orden superior
■ Functores (..map)
■ Monads (..flatMap)
○ Composición funcional
○ Evaluación perezosa (Lazy)
● Optimización en la utilización de recursos
● Hace simple lo que de otra forma sería bastante complejo
● Escalabilidad
10. One Thread per Request
One Event Loop, Non-Blocking IO
Impacto del modelo de concurrencia en la
escalabilidad
https://www.vividcortex.com/blog/2013/12/09/analysis-of-paypals-node-vs-java-benchmarks/
15. Comunicación Asíncrona + Modelado de eventos de
Dominio y Comandos + Programación Reactiva
https://github.com/reactive-
commons/reactive-commons-java
16. Reactive Commons
El propósito de Reactive Commons es proporcionar un conjunto
de abstracciones e implementaciones de diversos patrones y
prácticas que apoyen la base para una arquitectura de
microservicios reactivos.
31. Pattern Attributes
● Transparencia en la localización
● Resiliente
● Escalable (Balanceo de carga y escalabilidad horizontal)
● No bloqueante
● Trazable