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 noticias

¿Cómo se ejecuta un proyecto de automatización de procesos con RPA?

La automatización de procesos con RPA es una de las tendencias en la transformación digital. La posibilidad de automatizar tareas, para que las personas puedan dedicar su tiempo y esfuerzo a tareas...

Leer másArrow 41

Explainability AI: cómo hacer nuestro modelo legible

A la hora de tomar decisiones, la inteligencia artificial se ha convertido en una herramienta muy útil en el día a día. Lo curioso es que esto es así tanto en el ámbito personal como en el laboral....

Leer másArrow 41

Inversión en tecnología: clave para hacer frente a la crisis económica

La crisis económica es una realidad palpable en la actualidad. La inflación de los precios, la poca disponibilidad de los combustibles, así como la lenta recuperación de la Covid-19, han hecho que...

Leer másArrow 41

Supply chain: tendencias y retos tecnológicos

En el mundo empresarial contemporáneo, la gestión efectiva de la cadena de suministro es fundamental para el éxito y la competitividad de las organizaciones. La cadena de suministro, o supply chain...

Leer másArrow 41

Cómo diseñar una estrategia de IA para incrementar el éxito de los proyectos de Machine Learning

En el Webinar “AI Strategy: Cómo diseñar una estrategia de IA para incrementar el éxito de los proyectos”, hemos compartido una visión acerca de aquellos problemas generales que hacen que proyectos...

Leer másArrow 41