ConfAIt

¿Qué es?

ConfAIt es un framework destinado al desarrollo de componentes auto configurados. La idea es proporcionar un marco de trabajo común para estos componentes y definir las reglas que deben seguir para que ConfAIt pueda modificar su comportamiento en tiempo de ejecución.

ConfAIt es, entre otras cosas, un agente inteligente. Empleando un algoritmo genético intentará adaptarse en cada caso a la carga de trabajo que tenga el componente, proponiendo modificaciones en sus parámetros de configuración.

¿Cómo funciona?

El agente de configuración propondrá regularmente cambios de configuración al componente. Para poder hacerlo, es necesario que los componentes proporcionen información sobre su comportamiento, en particular:

  • Una relación de los cambios posibles en la configuración del componente, para que el agente pueda elegir los mejores en cada momento.
  • Una función de aptitud, que permita conocer cómo de bueno sería el estado del componente si aplicásemos un conjunto particular de cambios en su configuración.

¿Cómo se usa?

Si tenemos un componente desarrollado, y deseamos incorporar la capacidad de auto configuración mediante ConfAIt, los pasos a seguir son:

  1. Preparar el componente para la toma de datos sobre rendimiento en tiempo real. El componente debe ser capaz de "evaluar" en un momento concreto la carga de trabajo que está soportada (peticiones por segundo, tiempo medio de respuesta,cualquier dato que consideremos relevante).
  2. Definir las operaciones de configuración que pueden realizarse sobre el componente. Deberemos materializar dichas operaciones en clases que implementen com.fnbrito.ai.config.ConfigurationChange
  3. Definir para el componente una función de aptitud para cada juego de cambios, implementando la interfaz com.fnbrito.ai.config.FitnessFunction. El objetivo de la función será puntuar numéricamente un conjunto de cambios propuestos por el agente, de manera que mayor puntuación implique cambios más adecuados. Ésta es, sin duda la parte más difícil, y requerirá algo de práctica y ensayo.
  4. Incorporar al componente (o mejor aún, extenderlo) la interfaz com.fnbrito.ai.config.Configurable. En el constructor habrá que instanciar un com.fnbrito.ai.config.ConfiguratorAgent.

La mejor manera de entender el funcionamiento es viendo un componente desarrollado. Por eso se ha incluído en el cvs un componente de ThreadPool, en el paquete com.fnbrito.pita, y una versión auto configurable del mismo, en el paquete com.fnbrito.pita.configurable, que gracias a maven y XRef se pueden consultar en html navegable ;-)

¿Cómo se descarga?

De momento ConfAIt es un proyecto en pleno desarrollo. El código está escrito, aunque aún no puede considerarse estable. Puede que se produzcan cambios en la API a medida que las ideas maduren. Igualmente, la única manera de acceder ConfAIt a día de hoy es mediante el CVS. Echad un vistazo a la página del proyecto y colaborad en él si os parece interesante. Hay mucho por hacer, por ejemplo:

  • Una suite de pruebas de rendimiento que permita evaluar las funciones de aptitud.
  • Documentación, en especial sobre algoritmos genéticos.
  • Más ejemplos de uso
  • ...