Programación funcional y reactiva

Cuando hablamos de programación funcional nos estamos remitiendo a un paradigma descriptivo en el cual nos apoyamos en el Qué y no en el Cómo. La programación funcional eleva la abstracción del código para así darle foco a la implementación, de las funcionalidades más comunes son; crear, mapear, filtrar y verificar basados en un stream de datos.

La programación reactiva tienes un enfoque no bloqueante, dónde el stream de datos pasa por una serie de transformaciones funcionales y totalmente asincronas.

Los datos emitidos se capturan de forma asíncrona y se manejan mediante una función definida. También puede definir otra función cuando se emite un error y otra función cuando se completa el flujo. A veces, estos dos últimos pueden omitirse, y puede concentrarse en definir la función para los valores.

La «escucha» de la transmisión se denomina suscripción. Las funciones que estamos definiendo son observadores. El stream de datos es lo observable. Este es precisamente el patrón de diseño del observador.

Reactive manifesto

Según el manifiesto, los sistemas reactivos son

Responsivo: el sistema responde a tiempo si es posible. La capacidad de respuesta también significa que los problemas pueden detectarse rápidamente y tratarse de manera efectiva.
Resistente: el sistema sigue respondiendo en caso de falla, las fallas están contenidas con cada componente aislando los componentes entre sí.
Elástico: el sistema se mantiene receptivo ante la carga de trabajo cambiante, los sistemas reactivos pueden reaccionar a los cambios en la tasa de entrada al aumentar o disminuir los recursos asignados a los servicios.
Impulsado por mensajes: se basa en el paso de mensajes asíncronos para establecer un límite entre los componentes que garantiza el acoplamiento suelto, el aislamiento y la transparencia de la ubicación.

Los sistemas reactivos son, por lo tanto, más flexibles, ligeramente acoplados y escalables. Esto hace que sean más fáciles de desarrollar y permitir cambios. Son significativamente más tolerantes al fracaso y cuando ocurre un fracaso lo encuentran con elegancia en lugar de un desastre.

Share

Share on facebook
Share on twitter
Share on linkedin

Related Posts

¿Quieres recibir más información sobre tendencias en desarrollo de software, DevOps, innovación o productividad?

Últimas entradas

Aplicaciones Reales con Blockchain

Blockchain es una de las tecnologías que más fama ha adquirido en años recientes; en parte por la explosión de las criptomonedas, pero también por la

¿Qué es refactoring?

El objetivo del refactoring es evitar la deuda técnica que se acumula en el código fuente y  generar un código mas limpio y mas fácil