Unity: experiences with a prototype autonomic computing system

The behavior of a system results from the behaviors of its components, and from the interactions and relationships among them. In order to create computing systems that manage themselves, we will need to design both the behaviors of the individual elements, and the relationships that are formed among them. This paper describes a research project called Unity, carried out at IBM's Thomas J. Watson Research Center, in which we explore some of the behaviors and relationships that will allow complex computing systems to manage themselves; to be self-configuring, self-optimizing, self-protecting, and self-healing. The four principle aspects of Unity that we examine are the overall architecture of the system, the role of utility functions in decision-making within the system, the way the system uses goal-driven self-assembly to configure itself, and the design patterns that enable self-healing within the system.