CAS software: cómo desarrollar aplicaciones resilientes

¿Cuántas empresas están hoy en día condicionadas por su “legacy”? El ritmo al que está cambiando nuestro entorno es cada vez mayor y con ello la necesidad de evolucionar los aplicativos y sistemas. Soluciones del pasado, como cambiar todo un sistema para adaptar la empresa a la realidad se vuelven poco eficaces, por los costes y la reducción de su vida útil. Cada vez se hace más necesario que el diseño del software en el que se apoyan las cambiantes relaciones de nuestros negocios sea más flexible y adaptativo.

En este entorno surge la metodología para desarrollar sistemas de software CAS (Complex Adaptative Systems) muy en línea con la metodología Agile y Dev-Ops. Un sistema CAS es un sistema que se caracteriza por su flexibilidad a la hora de afrontar cambios en el entorno que le rodea. Estos cambios pueden estar en el proceso de negocio o en la necesidad de operar con nuevas tecnologías emergentes que obligan a adaptar el código fuente. CAS se constituye de una serie de principios que ayudan a construir un software que permita hacer dichos cambios con la ventaja de que optimiza el tiempo necesario para llevarlos a cabo.

6 principios para desarrollar un sistema de software CAS.

La metodología para implantar un sistema CAS se basa en los siguientes principios:

  1. Sistema abierto: un CAS interactúa con su entorno que es cambiante, por lo tanto, está diseñado para detectar e introducir cambios de forma continua. Está pensado para el mundo real en el que vivimos lejos de un equilibrio permanente y estable.

  2. Foco en las interacciones y las relaciones: el producto desarrollado incentiva la descentralización de los distintos módulos que componen un software. De esta manera, se contrapone al paradigma de un solo módulo que realiza diversas tareas y se sustituye por diversos módulos que se dedican exclusivamente a realizar una función y que se comunican entre ellos. A su misma vez, estos módulos se pueden componer de otros módulos que siguen el principio anteriormente expuesto. Un ejemplo común de esto se ve en las aplicaciones web, donde el módulo de frontend (interfaz con la que interactúa el usuario) interactúa con un backend (módulo encargado de procesar la información, lo que incluye entre otras cosas, recuperar información de la base de datos, que sería otro módulo en sí mismo). Las ventajas de seguir esta metodología en el contexto expuesto son muchas, como por ejemplo, la facilidad de integrar heterogeneidad de tecnologías, adición de restricciones de seguridad en función de los contextos de cada módulo y control sobre la información que se expone en el exterior.

  3. Crecimiento y evolución: El desarrollo del software se hace de manera iterativa, permitiendo que en cada iteración se incluyan nuevas funcionalidades y que el producto crezca progresivamente. Esto permite a su misma vez un control de versiones donde se tienen localizados todos los cambios que se hacen sobre un proyecto.

  4. Bucles de feedback para transformación: El software debe estar puesto bajo constantes controles y pruebas para asegurar su robustez y funcionamiento. Por ejemplo, en Enzyme hemos implantado en Hipra software con la metodología Dev-Ops donde por cada release de código que se sube al entorno de desarrollo se ejecutan automáticamente una serie de tests para comprobar que la integración del nuevo código es correcta.

  5. Orden emergente: El software es adaptable a los cambios de requerimientos que puedan surgir e impactar en el proyecto. Esto permite que un producto no se estanque y que pueda seguir creciendo.

  6. Control distribuido: Los módulos son independientes entre sí y la caída de uno de ellos no afecta al resto.
    Esto es importante para asegurar la disponibilidad y el servicio del producto al cliente. Así conseguimos un mejor aprovechamiento de los recursos en servicios desplegados en la nube y su replicación en varios servidores, de modo que la caída de un servidor no implique la pérdida del servicio.

Beneficios y ventajas de un sistema de software CAS

Estos principios generan arquitecturas flexibles y adaptables basadas en componentes independientes, cada uno con una funcionalidad y que se relacionan con el resto del sistema a través de un conjunto de conexiones. Las ventajas de esta arquitectura redundan en menores costes y menores riesgos de operación y transformación:

 Mayor facilidad para detectar nuevas necesidades operativas.

  •         Menor tiempo de adaptación al cambio del medio (sólo actúo en los módulos implicados).
  •         Facilidad para hacer rollback, siempre hay un plan B disponible.
  •         Sistemas más resilientes en su desempeño por su configuración distribuida.
  •         Mayor facilidad de replicación.

Enzyme tiene operativo el producto Pepermint, un software que ayuda a las empresas a evaluar el desempeño y a gestionar los incentivos y motivación de sus equipos. Para ello, genera cuadros de mando que recogen información de toda la organización. Este es un desarrollo abierto, capaz de integrarse en cualquier organización, por su arquitectura modular, basada en buscar conexiones (dónde está la información que necesita y qué controlador deben utilizarla).

La gran ventaja de esta arquitectura es su capacidad evolutiva, que nos ha ayudado a adaptarnos al mercado y ofrecer nuevas funcionalidades a los clientes de la herramienta. Así ante nuevos requerimientos de los clientes, al ser los controladores independientes, sólo hay que modificar los componentes directamente impactados, añadiendo una nueva funcionalidad a un controlador existente o añadiendo un nuevo controlador. Esto sin perder el control de cambios ya que se ha desarrollado con metodología Dev-Ops se apoyan en la que todos los releases se apoyan en aplicaciones GIT. Adicionalmente, cuenta con el control distribuido, lo cual hace que el sistema sea mucho más robusto que si estuviera implantado on premise.

Como podemos apreciar, los sistemas CAS son la respuesta a las demandas de transformación de los sistemas o aplicaciones de software de las empresas que se derivan del trepidante entorno en el que vivimos. Es una metodología orientada a la supervivencia, inspirada en cómo las especies animales han sido capaces de evolucionar y sobrevivir cuando su entorno ha cambiado. La aplicación de sistemas CAS reduce la factura de los cambios de sistemas y sobre todo acelera la adaptación de las empresas a las nuevas necesidades ayudando con ello a mejorar su competitividad y su supervivencia.

 

Más artículos

¿Qué es un RPA y qué puede hacer por las empresas?

La automatización robótica de procesos o RPA permite liberar gran parte de los recursos de una empresa al mismo tiempo que garantiza un servicio y una experiencia de usuario de calidad. Algo que...

Leer másArrow 41

Top 5: tendencias tecnológicas que impactaron en 2022 y su evolución en 2023

El avance tecnológico al que estamos expuestos ha ido cogiendo fuerza con el paso del tiempo, siendo este avance cada vez más rápido y disruptivo. En este artículo te presentamos 5 tendencias...

Leer másArrow 41

Asistentes conversacionales: cuánto pueden contribuir en tu negocio

En sus primeros 5 días abierto al público, ChatGTPregistró más de un millón de usuarios. Tan buena acogida ha encendido todas las alarmas en sus competidores. Por ejemplo, Google ya trabaja a destajo...

Leer másArrow 41

¿Qué papel juega la inteligencia artificial en los negocios actuales?

Desde sus inicios, la inteligencia artificial fue diseñada para realizar determinadas operaciones que se consideraban propias de la inteligencia humana. Hoy en día, la IA tiene diversas aplicaciones...

Leer másArrow 41

Commercial excellence: cómo podemos mejorarla gracias a la IA

¿Sabías que se puede utilizar la inteligencia artificial (IA) para mejorar las prácticas de ventas, mejorar los resultados y acercarte a la commercial excellence? Haciendo uso de una infraestructura...

Leer másArrow 41