Blog

El paradigma perdido

Llevamos mucho tiempo creando software. Hemos pasado por todo: sistemas estructurados, orientados a objetos, a aspectos, REST y unas cuantas tecnologías más.

Siempre hemos tenido un ánimo integrador, de sumar y crear sinergias más que de abandonar radicalmente algo que nos ha ayudado a sacar adelante muchos proyectos. Por ejemplo, el paradigma de la orientación a objetos es, en realidad, un superconjunto del estructurado.

Siempre hemos trabajado inmersos en algún paradigma, pero tal vez tengamos que reencontrarnos con uno que puede sernos muy útil.

Desde hace algún tiempo, nos enfrentamos a una situación completamente nueva: la explosión imparable de la conectividad, su ubicuidad. Internet, sus prestaciones y la cultura que se deriva de todo ello impregna nuestra sociedad a un ritmo imparable.

La gente está cambiando de hábitos en los procesos que tienen que ver con compartir información: personal, comercial, institucional, todos y cada uno de ellos. Los gobiernos también se han apuntado al carro.

Yo mismo escribo cada vez menos textos, ¡se los dicto a mi móvil!.

Adaptar nuestro negocio está en la mente de todos. Es muy sencillo: nuevos hábitos, nuevo software.

En Icono creemos que ese nuevo software podría ser reactivo o, si se quiere, proactivo. El motivo es también simple: abordar desde el principio, por diseño, las nuevas características que las aplicaciones de hoy demandan.

Se supone que las aplicaciones del siglo XXI deben ser capaces de desplegarse en cualquier dispositivo, desde teléfonos móviles y tabletas hasta estructuras de computación multinúcleo formadas por miles de servidores residentes en la nube. Deben ofrecer tiempos de respuestas de milisegundos, una disponibilidad de 24x7 y ser capaces de manejar millones de usuarios y petabytes de información.

Todo esto puede hacerse con los paradigmas actuales, pero aplicándoles parches (en el buen sentido). No se crearon para navegar por esas aguas.

Los sistemas reactivos y el paradigma de la programación funcional, sí.

Conceptualmente, un sistema reactivo exhibe las siguientes características:

  1. Dirigido por eventos (Event Driven)

  2. Escalable (Scalable)

  3. Tolerante a fallos (Resilient)

  4. De respuesta rápida (Responsive)


1.- Dirigido por eventos significa que los módulos de un sistema no se ven directamente entre sí (acoplamiento débil), con lo que la mantenibilidad crece y su coste disminuye. Cuando programamos un sistema interactivo, sabemos lo que el usuario va a hacer, pero no cuándo va a hacerlo. Los sistemas dirigidos por eventos cubren precisamente ese escenario, simplificando la programación e incidiendo en unos cuantos costes (para bien, claro).

2.- Escalable implica no sólo que un sistema sea capaz de crecer vertical y horizontalmente, sino que lo haga cuando se vea obligado a ello, y que esa decisión la tome el software de infraestructura y no nosotros, aunque naturalmente tengamos la última palabra. Se trata de optimizar el uso de recursos por razones obvias.

3.- Tolerante a fallos en este contexto quiere decir que ante un error, al sistema se le permite fallar, pero la arquitectura establecida pasa el problema a otro componente que sabe solucionarlo. Esto es, cada componente, si se desea, está supervisado. Con las herramientas adecuadas, esta organización compleja se articula a sí misma una vez configurada, más que programada.

4.- De respuesta rápida implica tiempo real. Cosas que ya estamos habituados a ver y usar, como por ejemplo editar simultáneamente entre varias personas un documento en, bien, tiempo real. Google Docs lo hace gratis (o así lo vende). No hay que olvidar que a los usuarios les gusta este tipo de cosas, las usan y fácilmente pueden echarlas en falta.

Estos cuatro puntos, tomados aisladamente, no son nuevos. Pero si los unificamos en un paradigma y creamos herramientas que lo implementen tendremos sistemas reactivos sin ningún esfuerzo especial, sin añadidos de última hora, por diseño desde el principio, de la misma forma que un sistema basado en Java (por ejemplo) es orientado a objetos de forma natural.

Estas herramientas ya existen y el paradigma que las hizo nacer también.

En Icono creemos que es el momento de reencontrarnos con la programación funcional, el paradigma perdido, para crear el software que nuestros clientes quieren tener, porque sus usuarios se lo demandan.




Visita nuestro perfil:


Icono Training Consulting