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

SAP Work Zone, qué es y cómo lo puedes aplicar

Hoy en día, las empresas tienen la necesidad de crear una experiencia de usuario armonizada con la que sus clientes y empleados vivan una experiencia similar a la del consumidor en los sistemas...

Leer másArrow 41

Forum AUSAPE 2022. Caso de éxito: el portal del vendedor de Germans Boada

En el marco del Fórum AUSAPE 2022, Enzyme presentó un caso de éxito: el portal del vendedor de la empresa Germans Boada (Rubi), desarrollado con Neptune DXP - SAP Edition. En este artículo, te...

Leer másArrow 41

Automatización de procesos en el mundo farmacéutico

La automatización de procesos tiene el potencial de liberar a los trabajadores de las tareas más repetitivas para poder dedicar su tiempo a tareas más significativas en el desarrollo del negocio....

Leer másArrow 41

Gamificación y chatbots: ¿cómo se relacionan y potencian?

Los chatbots y asistentes conversacionales se encuentran a diario con cientos de consultas abandonadas, a veces por impaciencia de la persona y, en muchas ocasiones, por desconocimiento de la...

Leer másArrow 41

Automatiza el servicio posventa de tu e-commerce con un mailbot

Es posible mejorar la atención al cliente de forma sencilla y eficaz. ¿Cómo? Automatizando las respuestas a las peticiones de soporte (posventa) que recibes en tu tienda online. 

Leer másArrow 41