Ticker

6/recent/ticker-posts

¿Qué es la programación Reactiva?


La programación reactiva es un concepto que en los últimos años se ha popularizado, gracias a la aparición de Frameworks enfocados en el trabajo con flujos de datos finitos o infinitos de manera asíncrona, los Frameworks orientados a la programación reactiva están desarrolladas según los conceptos y evolución orientada a la publicación del Reactive Manifesto, entonces nos preguntamos lo siguiente:

¿Qué es la programación Reactiva?

La programación reactiva, o Reactive Programming (terminología en inglés), es un paradigma enfocado en el trabajo con flujos de datos finitos o infinitos de manera asíncrona, esto permite que los datos se propaguen generando cambios en la aplicación, es decir, “reaccionan” a los datos ejecutando una serie de eventos.

La motivación detrás de la programación reactiva es responder a la necesidad de las limitaciones de escalado que se presenta en los modelos de desarrollo actuales, que se caracterizan por su desaprovechamiento del uso de la CPU debido al I/O (Input/Output), el sobreuso de memoria (enormes thread pools) y la ineficiencia de las interacciones bloqueantes.

Aplicando la programación reactiva (asíncrona), se disminuye el uso ineficiente de recursos, es decir, los recurso estarían activos sólo cuando el componente la necesita según las notificaciones o procesamiento asíncronas; lo que realmente se logra con está forma o paradigma (programación reactiva) es libera al cliente con la finaliad de hacer otras cosas mientras espera nuevas notificaciones o procesamientos a ejecutarse.

La programación reactiva está relacionada con el patrón de diseño Observer; es decir, cuando hay un cambio de estado en un objeto, los otros objetos son notificados y procesados según la acción a ejecutarse, por lo tanto, los eventos se realizan de forma asíncrona para que los observadores puedan ser procesados.


Sistemas Oriendatos a la Programación Reactiva

Siguiendo los principios del Reactive Manifesto, los sistemas orientados a la programación reactiva deben cumplir con las siguintes caracteristicas:

Tipos de sistemas reactivos


  • Responsivos: aseguran la calidad del servicio cumpliendo unos tiempos de respuesta establecidos. Además define límites en dichos tiempos de respuesta, de forma que los problemas pueden ser detectados rápidamente y tratados de forma efectiva.
  • Resilientes: se mantienen responsivos incluso cuando se enfrentan a situaciones de error.
  • Elásticos: se mantienen responsivos incluso ante aumentos en la carga de trabajo.
  • Orientados a mensajes: minimizan el acoplamiento entre componentes al establecer interacciones basadas en el intercambio de mensajes de manera asíncrona; afectando (de manera positiva) todo el sistema. 

Principales librerías en la programación Reactiva

Las principales dos librerías (APIs) más utilizadas en la actualidad para la programación reactiva es RxJava y Project Reactor. 

  1. RxJava (versión 1 y 2) es la pionera en el desarrollo reactivo orientado a Java, posteriormente es integrada en los Frameworks como Spring MVC, Spring Cloud y Netflix OSS.
  2. Project Reactor, o tambie conocido como Reactor fue creada con el apoyo e implicancia del equipo responsable de RxJava v2 por lo que comparten gran parte de la base arquitectónica en su implementación, finalmente, Project Reactor ha sido elegida como parte de la implicancia para el futuro Framework de la Programación Reactiva con Spring 5 WebFlux

Recordemos que Spring WebFlux es la librería habitual para desarrollo reactivos en web y trae, y por defecto el servidor de uso es Netty en lugar de Tomcat.


Referencias:

Publicar un comentario

0 Comentarios