Autonomic Computing José Antonio Lozano López y Juan Manuel González Muñoz Tecnologías ¿Qué es el 'Autonomic Computing'? ¿Qué posible solución hay para la autogestión de los futuros sistemas e infraestucturas? Obtenga la respuesta en este interesante artículo. Introducción Nadie duda de que cada vez más los procesos de negocio de las empresas dependen de sus infraestructuras TIC (Tecnologías de la Información y las Comunicaciones). En paralelo a la evolución de las empresas a un entorno económico más global, estas infraestructuras han crecido en potencia de computación, en capacidad de almacenamiento y en facilidad y posibilidad de acceso desde cualquier rincón del planeta utilizando múltiples dispositivos. Sin embargo, esta evolución no ha venido acompañada de avances similares en la operación de estas infraestructuras, más bien al contrario, las infraestructuras se han vuelto cada vez más complejas de gestionar. La complejidad que están alcanzado la infraestructura de sistemas y comunicaciones de cualquier empresa hace que su gestión sea muy complicada y consuma muchos recursos, lo que acaba impactando en la cuenta de resultados de la empresa y por lo tanto en su capacidad para desarrollar su negocio. De hecho, Paul Horn, Vicepresidente y Director de Innovación de IBM en un discurso en 2001 en la Universidad de Harvard ante la Academia de Ingeniería manifestaba que el verdadero reto al que se enfrenta la industria de los Sistemas de Información, por encima de la Ley de Moore, es la complejidad. En su charla, P. Horn indicaba como solución que los futuros sistemas e infraestructuras tenían que incluir capacidades para autogestionarse y proponía como modelo el sistema nervioso humano. El cuerpo humano realiza una serie de tareas como el control de la temperatura o la sudoración, el ritmo del latido del corazón, la respiración, etc. que involucraban multitud de entidades diferentes (glándulas, órganos, etc.) independientes pero relacionadas entre sí y controladas por el sistemas nervioso autónomo, de ahí el nombre de 'Autonomic Computing'. Principios y conceptos de Autonomic Computing Un elemento o sistema autónomo es uno que opera y sirve a su propósito gestionándose a sí mismo sin necesidad de intervención externa. Se trata de dotar a las infraestructuras TI de la inteligencia y las capacidades necesarias para autogestionarse. El núcleo de un sistema autónomo es un sistema de control, que es una combinación de componentes que actúan de manera coordinada con el objetivo de mantener los valores de los parámetros que caracterizan el funcionamiento del elemento gestionado dentro de un margen especificado. Concretamente, un sistema autónomo está formado por uno o varios bucles cerrados de control siguiendo el modelo de los numerosos bucles del Sistema Nervioso Autónomo: azúcar en sangre, temperatura del cuerpo, dilatación de las pupilas, etc. La materialización de los bucles de control de un sistema autónomo es lo que se define como Elemento Autónomo, cuya arquitectura básica se puede ver en la Figura 1. Los bloques principales son: Monitorización: Es el bloque encargado de recibir la información sobre el entorno que proporcionan los sensores. Análisis: Analiza la información proporcionada por el bloque de monitorización para conseguir una visión del entorno y su evolución con relación a los parámetros que hay que controlar Planificación: Una vez se tiene el resultado del análisis, el módulo de planificación prepara y coordina las acciones que hay que realizar sobre el entorno Ejecución: El módulo de ejecución es el encargado de ejecutar las acciones sobre el elemento gestionado. Debe conocer los efectores y cómo utilizarlos Conocimiento: El elemento autónomo emplea conocimiento para interpretar la información del entorno y conocer cómo modificarlo. Forma un espacio de entendimiento entre todos los bloques. Se define utilizando tecnologías semánticas. Figura 1.- Arquitectura de un Elemento Autónomo El Elemento Autónomo incluye tanto los recursos que se van a gestionar, como la propia aplicación de gestión responsable del estado de los recursos internos y de las interacciones con el exterior. Un Sistema Autónomo es capaz de realizar de forma automática y sin necesidad de intervención externa una o varias tareas de gestión. En la Figura 2 se puede ver las principales características de un Sistema Autónomo: Self-configuration. Capacidad para adaptarse a cambios dinámicos del entorno. Estos cambios se realizan en tiempo de ejecución y permiten responder a condiciones no previstas. Self-healing. Capacidad para supervisar, diagnosticar y reparar los fallos que puedan aparecer en el sistema. Self-optimization. Capacidad para buscar formas de funcionamiento más eficientes ajustando adecuadamente ciertos parámetros del sistema. Self-protection. Capacidad para anticipar, detectar y proteger el sistema y sus recursos frente a ataques y problemas. El Sistema Autónomo debe ser capaz de detectar el ataque y aplicar contramedidas. Figura 2.- Características de un Sistema Autónomo Los Elementos Autónomos pueden trabajar a diferentes niveles de abstracción. En general, un elemento autónomo se encarga de controlar una tarea o aspecto concreto del funcionamiento del elemento gestionado. Cuando es necesario coordinar el funcionamiento de varios elementos autónomos se hace necesario un mayor nivel de abstracción que se constituye como un nuevo elemento autónomo cuyos elementos gestionados son otros elementos autónomos de más bajo nivel. Para que el comportamiento de todos ellos responda a un objetivo común de negocio, generalmente, se utilizan políticas que definen los objetivos de alto nivel del sistema que a su vez será capaz de aplicar las acciones correspondientes a bajo nivel. Impacto de AC en las tecnologías TIC El objetivo principal de la iniciativa de Autonomic Computing es la de tratar la complejidad de la gestión de las infraestructuras de computación actuales, proporcionando métodos, algoritmos, arquitecturas y herramientas para estandarizar, automatizar y simplificar muchas de las tareas de administración de los Sistemas de Información. De igual forma que hace algunos años, la instalación de una aplicación software requería un elevado conocimiento tecnológico para ajustar un número elevado de parámetros y hoy esta labor está al alcance de todos los usuarios con unos pocos 'clicks' de ratón. Autonomic Computing pretende una simplificación similar para muchas de las tareas de administración de sistemas. Un aspecto destacado de Autonomic Computing es la promesa de solucionar problemas de evolución del software ya que además de la automatización, al incorporar sensores y efectores a los sistemas, se podrá monitorizar y verificar requisitos sobre periodos largos de tiempo. Por ejemplo, los sistemas auto-gestionados serán capaces de actualizar automáticamente el software, adaptar sistemas críticos sin necesidad de pararlos, asilar módulos que no estén funcionando adecuadamente, etc. Desde un punto de vista práctico, Autonomic Computing supone más una evolución que una revolución. En vez de desarrollar todos los sistemas de nuevo, se pueden ir añadiendo capacidades de autogestión en los sistemas de forma gradual. De hecho, IBM define cinco niveles de madurez en Autonomic que se representan en la Figura 3. Figura 3.- Niveles de madurez de Autonomic Una de las ventajas de Autonomic Computing es que su aplicación se puede hacer de forma progresiva, abordando aspectos específicos de la gestión y administración de las infraestructuras IT. Así, aplicaciones como distribución de procesos, actualización de software, ajuste de parámetros de funcionamiento de una base de datos, etc. pueden realizarse de forma automática y con un impacto directo en el TCO (Total Cost Ownership) de las infraestructuras. Un aspecto curioso e interesante es que los principios de diseño de autonomic están siendo aplicados con éxito a otros sectores. Los fabricantes de coches, por ejemplo, utilizan los mismos conceptos para desarrollo de sistemas como el ABS (Anti Blocking System). Conclusiones La complejidad de las infraestructuras TIC empieza a ser un freno para el desarrollo de las empresas debido a la dependencia cada vez mayor del negocio de estas infraestructuras. El objetivo de iniciativas como Autonomic Computing es la de desarrollar tecnologías que ayuden a eliminar esta barrera. Aunque sus objetivos y principios parecen claros, su implementación aún presenta incertidumbres. Las dos principales son que algunas de las tecnologías que se usan no tienen aún el grado de madurez necesario como para su uso industrial y la falta de estándares que garanticen la interoperabilidad de las infraestructuras. En este sentido, el ACF está impulsando la creación de estándares que ayuden al desarrollo y despliegue de infraestructuras de telecomunicaciones autogestionadas. Sin embargo, aunque tiene un fuerte apoyo del mundo académico, sus resultados aún no son visibles y necesita más repercusión en el sector industrial. También aparece la necesidad de renunciar a controlar infraestructuras a nivel de componente, y esto supone un cambio cultural de importancia en la industria de sistemas de información. En cualquier caso, lo que sí parece claro es que el desarrollo de infraestructuras TIC con capacidad de autogestión abre un amplio abanico de posibilidades tanto para las empresas que las operan, que se beneficiarían de unas infraestructuras cada vez mas inteligentes y autónomas más orientadas al negocio, como para los usuarios de los servicios que simplifican su relación con la tecnología. Autores: José Antonio Lozano López y Juan Manuel González Muñoz. Teléfonica I+D