Introducción a la Arquitectura reactiva: qué es, principios y lenguajes, plataformas…

bootcamp Full stack developper con patrones reactivos

Como decíamos en la entrada anterior sobre arquitecturas reactivas, las demandas de hoy en las empresas requieren tiempos de respuesta cortos, con la necesidad de tener que procesar ingentes cantidades de datos, desplegarse en cualquier cosa y que los sistemas estén operativos el 100% del tiempo. Para ellos, distintos tipos de organizaciones están dando de manera independiente con patrones similares con los que construir software que haga frente a estas demandas.

Este conjunto de patrones y técnicas es el que se conoce como Arquitecturas Reactivas y se utilizan para construir sistemas que:

  • Son más amigables, robustos y flexibles
  • Son capaces de responder a las limitaciones de escalado
  • Pueden resistir mejor a los fallos y responder con elegancia a ellos
  • Dan un feedback efectivo e interactivo al usuario
  • Están más abiertos a los cambios.
  • Son escalables y con bajo acoplamiento.
  • Reaccionan a los eventos

Principios de la programación reactiva

Dirigida por datos

En el modelo de actores, uno de los patrones más utilizados en programación reactiva, se definen cadenas de transformación funcional. Estas son atravesadas por flujos de datos para su procesamiento. Se podría decir que este tipo de soluciones están dirigidas por los datos porque en ellos descansa, además de gran parte de la lógica de la aplicación, el propio comportamiento reactivo del sistema.

Centrada en la composición

Las operaciones que forman parte del procesamiento de datos en programación reactiva, que normalmente se implementan en actores distintos, se encadenan de forma compositiva. De este modo, el resultado de cada transformación es la entrada para la siguiente. Para poder articular esta composición adecuadamente, debemos tener en cuenta tres reglas fundamentales en la programación funcional:

Idempotencia de las funciones

Las funciones siempre deben devolver los mismos resultados para los mismos valores de entrada.

Transparencia referencial

El valor de retorno de las funciones depende de los parámetros de entrada, nunca de condiciones ambientales (parámetros externos o contexto).

Inmutabilidad de los datos

Los datos de entrada que manejan las funciones son inmutables, es decir, las funciones nunca deben alterar los parámetros de entrada.

Principales lenguajes y plataformas de la programación reactiva:

Como ya se ha dicho antes, la programación reactiva implica el conocimiento y la integración de varios lenguajes de programación y plataformas, como podrían ser:

  • Scala es un lenguaje multi-paradigma. Expresa patrones comunes de programación en forma concisa, elegante y con tipos seguros. Integra características de lenguajes funcionales y de los orientados a objetos.
  • Akka es una plataforma que busca desarrollar de forma simple aplicaciones escalables y multihilo. Su método de concurrencia se basa en actores (objetos con los que puedes interactuar enviándoles mensajes) y se puede desarrollar con diferentes APIs, generalmente Scala.
  • Kubernetes es un sistema para automatizar el despliegue, autoajustar el escalado y manejo de aplicaciones en contenedores.
  • Kafka es un proyecto que permite publicar mensajes de datos procedentes de las aplicaciones en un flujo, suscribirse a los mensajes generados,  almacenarlos en un sistema tolerante a fallos y consumir los streams de mensajes por aplicaciones en cuanto se produzcan.
  • Docker es un proyecto que automatiza el despliegue de aplicaciones dentro de contenedores de software. Proporciona una capa adicional de abstracción y automatización de virtualización de aplicaciones en múltiples sistemas operativos. Además, permite que los “contenedores” independientes se ejecuten en una sola instancia de Linux, evitando sobrecargar las máquinas virtuales.
  • Elasticsearch es un servidor de búsqueda de texto completo, distribuido y con capacidad de multi-tenant.
  • Cassandra es un almacén de datos NoSQL de gran rendimiento. Como es distribuida y basada en un modelo de almacenamiento de «clave-valor», permite grandes volúmenes de datos en forma distribuida, con escalabilidad lineal y disponibilidad.

Aprende todos estos programas, lenguajes y sistemas, y cómo integrarlos dentro de la programación reactiva, en nuestro Bootcamp “Full stack developer con patrones reactivos”.

Más información e inscripciones al bootcamp


Mario Renau, Hands-on Digital Architect – Smart Cities / IoT en Alstom y Big Data Lecturer en Datahack
Déborah Fernández

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *