Aplicaciones compuestas

Jugando con piezas
Jugando con piezas

En 2021 inicié un apasionante proyecto de transformación digital, proceso bastante complicadete, que puedo decir que este año culmina.

Este proceso tiene como punto de partida un sistema monolítico, junto con otros satélite que lo acompañan (también monolitos), sistema que no permite alcanzar los objetivos empresariales por sus limitaciones frente las exigencias actuales del negocio.

Fueron 2 los vectores de cambio que establecimos: la modernización de aplicaciones y las aplicaciones compuestas. Este artículo aborda el segundo de los vectores: la aplicaciones compuestas.

¿Qué son las aplicaciones compuestas?

Dejadme que use una muletilla que me ha funcionado bastante bien para explicar qué son las aplicaciones compuestas: son lo que obtenemos juntando los distintos bloques de construcción de un Lego.

Dicho esto, seguro que es más fácil entender la definición que vamos a dar: aplicación construida combinando y orquestando múltiples “funciones” existentes para ofrecer una nueva solución, donde estas funciones son recursos puestos a disposición de otros participantes en la «red» como servicios independientes que son accedidos de una forma estandarizada.

Si nos lo llevamos al plano de los Lego, cada una de esas «funciones» es una pieza, un bloque de construcción del Lego; tomando algunas de esas piezas puedo hacer un camión, tomando otras distintas y repitiendo algunas, puedo hacerme un castillo, un vehículo lunar… ¿no es una pasada? ¡Es mejor que el condensador de fluzo del doctor Emmett Brown!

Características

Esta manera de construir aplicaciones presenta algunas características, en mi opinión, geniales:

  • Cada pieza es independiente, autónoma, ergo debe cumplir con el principio de responsabilidad única.
  • Amplía los principios de modularidad para aumentar el uso de componentes de servicio preexistentes y de origen independiente.
  • Cada pieza presenta una alta cohesión y un bajo (o ningún) acoplamiento.
  • Reusabilidad.
  • La combinación de los servicios permiten realizar procesos de negocio completos en múltiples escenarios.
  • Gran flexibilidad ante cambios.
  • Incremento de la fiabilidad general de las aplicaciones.

Como hemos dicho, estas piezas proporcionan una funcionalidad, y lo hacen a través de una interfaz que debe ser estandarizada para su uso dentro de tu empresa y fuera de ella, si fuese necesario.

Los bloques de Lego tienen esas protuberancias en la parte superior que encajan perfectamente con los huecos que presenta, en la parte inferior, la pieza con la que te quieres «enganchar».

La protuberancia es la interfaz, la forma en que la pieza expone al mundo su utilidad, mientras que el bloque mazacote es la implementación de la interfaz, la funcionalidad que da.

Cualquier interacción desde el exterior de la pieza se debe efectuar a través de los puertos, de la interfaz; es la única puerta de entrada y salida.

El sazonador de pechugas de pollo

Imagina que tienes un restaurante que sirve pechugas de pollo (con patatas fritas, «of course»!). A cada cliente le sazonas esa suculenta y crujiente pieza de carne con sal y pimienta. ¿Vas a sazonar todas las pechugas de la misma forma a cada cliente? No.

Construyamos algo que nos permita dar una solución apropiada a los gustos de cada cliente para sazonar las pechugitas de pollo.

Con 3 componentes (salero, pimentero y una tapa), puedo crear 6 soluciones distintas:

  1. No sale nada (sí, hay clientes muy sosos): usamos la pieza que hace de tapa bloqueando la salida de la pieza de sal y de la pieza de pimienta.
  2. Sólo sale pimienta (la «spicy chiquen breast», para los más valientes): usamos la pieza que hace de tapa bloqueando la salida de la pieza de sal.
  3. Sólo sale sal (no apto para aquellos con problemas cardíacos): usamos la pieza que hace de tapa bloqueando la salida de la pieza de pimienta.
  4. Sale el doble de sal que de pimienta (pechuguita con el toque justo de picante, tirando a salada): usamos la pieza que hace de tapa bloqueando uno de los agujeros de salida de la pieza de pimienta.
  5. Sale el doble de pimienta que de sal (hará que te caigan los mocos): usamos la pieza que hace de tapa bloqueando uno de los agujeros de salida de la pieza de sal.
  6. Sale la misma cantidad de sal que de pimienta (por el mismo precio, me echo de todo): no usamos la pieza que hace de tapa.
Sazonador

Conclusión

Tanto si vienes de un monolito al que debes estrangular como si vas a diseñar una aplicación «moderna», la aproximación de diseño más «cool» es la de aplicaciones compuestas.

Esta aproximación va a limitar las opciones de elección del tipo de arquitectura a aplicar; una por capas no vale aquí, pero sí es ideal una basada en servicios, microservicios, eventos o un mix de ellas.

En mi caso, este vector de cambio, ha supuesto determinar toda una nueva arquitectura de referencia, que es a lo que quiero apuntar con este y el capítulo relativo a modernización de aplicaciones, arquitectura que abordaremos más adelante.

Espero que éste y venideros artículos te puedan resultar, como profesional, tan apasionantes como me ha resultado a mí planificar y ejecutar este viaje. ¡Nos leemos!

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.