Se puede resumir el rumbo que están siguiendo las empresas en la segunda década del siglo XXI en dos palabras: transformación digital. La nueva economía digital plantea nuevos desafíos a las empresas y sus líderes. La integración de herramientas digitales ha penetrado al negocio. Además, esto está provocando cambios importantes en la forma en que trabajan, se comunican y venden. La digitalización de los procesos y actividades del negocio amplía el alcance de las organizaciones, tanto para mejorar las decisiones que toma la dirección y acelerar el desarrollo de nuevos productos y servicios como para transformar radicalmente los modelos de negocio tradicionales. De este modo, todas las empresas se han convertido en tecnológicas y sus plataformas digitales son un elemento vital para el negocio.

EVOLUCIÓN DE ARQUITECTURAS Y APLICACIONES EMPRESARIALES

Los requerimientos de las aplicaciones han cambiado drásticamente en los últimos años. Solo unos pocos años atrás, una aplicación grande tenía decenas de servidores, segundos de tiempo de respuesta, horas de mantenimiento fuera de línea y gigabytes en datos, lo que hacía necesario su procesamiento. Luego se incorporaron los ERP y CRM a las webs con arquitecturas cliente/servidor y finalmente a las aplicaciones modernas actuales, basadas en los microservicios, los contenedores virtuales y el Big Data. Estos últimos basados en componentes de código abierto y/o software libre.

Aplicaciones Empresariales Modernas: arquitecturas reactivas y microservicios

Hoy, las aplicaciones se despliegan en casi “cualquier cosa”, desde dispositivos móviles, dispositivos industriales, hasta clústeres en la nube corriendo en miles de procesadores multi-core. Esto se debe a que los usuarios “digitales” esperamos que los tiempos de respuesta sean de milisegundos y que nuestros sistemas estén operativos el 100% del tiempo. Las demandas de hoy simplemente no están siendo satisfechas por las arquitecturas software de ayer. Las arquitecturas reactivas surgen como un nuevo patrón para construir unos sistemas más robustos, más flexibles y que están mejor posicionados para cumplir demandas modernas. Las aplicaciones monolíticas se descomponen en micro-aplicaciones o microservicios, que se despliegan en diferentes contenedores. En muchas ocasiones, estos microservicios utilizan motores de cálculo basados en tecnologías Big DataMachine Learning y de Inteligencia Artificial. Estos motores proporcionan capacidades de analítica avanzada en tiempo real, procesando grandes cantidades de información. Los microservicios se integran entre ellos utilizando APIs asíncronos, muy robustos, con un bajo acoplamiento y con grandes capacidades para escalar según las demandas. De esta forma, logran responder a las limitaciones de escalado de los modelos de desarrollo anteriores, que se caracterizan por su desaprovechamiento del uso de la CPU, el sobreuso de memoria y la ineficiencia de las interacciones bloqueantes.

MÁSTER EXPERTO EN BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

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 datosdesplegarse 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:

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:

MÁSTER EXPERTO EN BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

En el artículo anterior hablamos de qué es la arquitectura reactiva, sus principios y las principales plataformas, lenguajes… con las que se construye. Hoy hablaremos sobre las cuatro características principales de las aplicaciones reactivas, recogidas en el conocido como Manifiesto Reactivo. Estas cualidades forman un todo, pues están interconectadas entre sí.

LA PROGRAMACIÓN REACTIVA ES RESPONSIVA

Es decir, responde a tiempo y reacciona apropiadamente en la medida de lo posible. La responsividad es clave para la usabilidad y la utilidad, permite detectar los problemas rápidamente y tratarlos de forma efectiva. Los sistemas responsivos buscan tiempos de respuesta rápidos y consistentes, estableciendo límites superiores confiables para proporcionar una calidad consistente en el servicio. Esta consistencia simplifica el tratamiento de errores, da seguridad al usuario y fomenta una mayor interacción. En resumen, los sistemas responsivos:

LA PROGRAMACIÓN REACTIVA ES RESILIENTE

Se integran los posibles fallos en el modelo de programación, de forma que, al estar dentro del diseño desde el inicio, es posible reaccionar a ellos y solucionarlos. Así, las aplicaciones reactivas son altamente tolerantes a los fallos (son responsivas frente a ellos) y pueden repararse a ellas mismas en el tiempo de ejecución.Se alcanza la resiliencia mediante:

LA PROGRAMACIÓN REACTIVA ES ELÁSTICA Y ESCALABLE

Puede expandirse de acuerdo con su utilización, gracias a la elasticidad (opción de añadir, o remover nodos según petición) que se le añade. Gracias a la escalabilidad, se pueden minimizar los costes de tener aplicaciones en la nube y gestionar los riesgos (tener pocos recursos lleva a perder clientes, tener demasiados puede resultar costoso). Además, así los Sistemas Reactivos pueden reaccionar a variaciones en la carga de trabajo y a cambios en la frecuencia de peticiones incrementando o reduciendo los recursos asignados para servir dichas peticiones. Para ello, hay que diseñar una arquitectura sin puntos de contención o cuellos de botella centralizados, resultando en la capacidad de dividir o replicar componentes y distribuir las peticiones entre ellos. Los Sistemas Reactivos soportan algoritmos de escalado predictivos y Reactivos, al proporcionar relevantes medidas de rendimiento en tiempo real. Y lo mejor es que la elasticidad se consigue de forma rentable haciendo uso de plataformas con hardware y software genéricos como Kubernetes, Akka….

LA PROGRAMACIÓN REACTIVA ESTÁ ORIENTADA A MENSAJES

La Arquitectura orientada a eventos (algo que sucedió, no puede cambiarse y tiene un contexto) implica que un componente de software se ejecuta en respuesta a una o más notificaciones de eventos. Los Sistemas Reactivos confían en este intercambio de mensajes asíncrono para establecer fronteras entre componentes. Esto asegura bajo acoplamiento, aislamiento y transparencia de ubicación. Además, estas fronteras permiten delegar fallos como mensajes.El intercambio de mensajes (realizado mediante el modelado y monitorización de las colas de mensajes y la aplicación de back-pressure) permite gestionar la carga, la elasticidad y el control de flujo. Además, al utilizar la mensajería basada en ubicaciones transparentes, podemos gestionar fallos y trabajar con los mismos bloques y semánticas a través de un clúster o dentro de un solo nodo. Y con la comunicación no-bloqueante podemos consumir recursos solo mientras estén activos, evitando sobrecargar el sistema.

CONCLUSIONES

Para crear un sistema reactivo, debemos tener en cuenta que integrará estas cuatro características interrelacionadas, es decir, que será responsiva, resiliente escalable y orientada a mensajes.

MÁSTER EXPERTO EN BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

Hablar de microservicios es hablar de una gran y/o compleja aplicación y su modelo de datos que se subdividen en partes más pequeñas y (casi) independientes. Estos componentes se comunican mediante una API pública o de forma asíncrona mediante intercambio de mensajes y nunca, nunca, a bajo nivel a través del modelo de datos.

ARQUITECTURA TRADICIONAL VS ARQUITECTURA DE MICROSERVICIOS

En la arquitectura tradicional, la escala es monolítica y los equipos forman distintos silos, habiendo muchas funciones en cada proceso individual. En definitiva, hay un pequeño número de procesos grandes con fuertes interdependencias.

La arquitectura de microservicios, en contraste, tenemos equipos multifuncionales organizados por capacidades, que crean diferentes elementos de funcionalidad (microservicios) escalables de forma individual y sin interdependencias, con API de comunicación entre ellos. Podríamos ver un microservicio como una micro-aplicación que desarrolla y mantiene un equipo de manera autónoma.

En las aplicaciones modernas, los microservicios y el big data se suelen desplegar en contenedores, lo que permite crear una arquitectura reactiva con una infraestructura de gestión de recursos vía, por ejemplo,  Kubernetes o DC/OS. La base de datos ya no es única, tanto para los que escriben como para los que acceden en modo lectura para consultas, con un único sistema que se vuelve complejo con el tiempo.

RETOS A LA HORA DE CONSTRUIR MICROSERVICIOS

MÁSTER EXPERTO EN BIG DATA ANALYTICS

Gracias al Master en Big Data Analytics 100% Online tendrás amplios conocimientos sobre las herramientas y técnicas analíticas necesarias para la modelización de los principales retos de negocio, con el fin de mejorar la toma de decisiones a través de los datos y el conocimiento.

chevron-down