Autonomic computing
Autonomic computing aims at providing systems and applications with self-management capabilities, including self-configuration (automatic configuration according to a specified policy), self-optimization (continuous performance monitoring), self-healing (detecting defects and failures, and taking corrective actions), and self-protection (taking preventive measures and defending against malicious attacks). These functions are performed by feedback control loops.
 
autonomic loop
The overall, generic model of a feedback control loop for autonomic computing (see e.g., [Kephart 03])  is represented on the adjacent figure. It is composed of three steps.
  • Monitoring: measuring  (through sensors S) the parameters of the controlled system that are relevant for the function under control (e.g., current load for performance optimization, server availability for fault tolerance, etc.).
  • Decision (D) : deciding the corrective action to be taken. This in turn may be done in two steps: analyzing and planning.
  • Execution: actually performing (through actuators A) the actions on the controlled system.
In order to achieve these tasks, the system relies on a knowledge base (K), which represents information on the controlled system. 
 
We propose an architecture-based approach for a specific form of the above scheme. The knowledge base K, used by all the above steps of a control loop, is based on a semi-formal description of the structure of the controlled system (components, bindings, placement), using a component model. The description is causally connected to the managed system, i.e., any modification of the system is reflected on the description, and vice-versa. These changes may be caused by the system administrators, by the effect of the control loops, or by external events, such as failures or attacks.
The semi-formal language used for this description is an Architecture Description Language (ADL), targeted to our component model, Fractal. This model allows the hierarchical composition of complex systems, and provides an extensible interface for managing the components. Using this model has the following benefits.
  • Any legacy application may be managed, by wrapping its parts into Fractal components, thus providing a uniform interface for elementary management functions, and a global description of the architecture.
  • A uniform minimal  interface is provided for the actuators. This interface may also be extended for specific needs.
  • The control system itself may also be built using the same principles, making it self-manageable at no additional cost.
We have designed and implemented Jade, an experimental framework for autonomic computing based on the above principles (see the description for more details). Using this framework, we are investigating three aspects of self-management (self-optimization, self repair, and self-protection), using a cluster-based J2EE server as the target system.
 A common base for these capabilities is a framework for dynamic configuration and deployment . Other experiments are under way, including the application of the principles of Jade to large scale P2P networks.
 
 [Kephart 03] Kephart, J.O. and Chess, D. M. (2003). The vision of autonomic computing. IEEE Computer Magazine, 36(1):41-50.