An autonomic software architecture for distributed applications
Fuad, Mohammad Muztaba
MetadataShow full item record
Autonomic computing is a grand challenge in computing that aims to produce software that has the properties of self-configuration, self-healing, self-optimization and self-protection. Adding such autonomic properties into existing applications is immensely useful for redeploying them in an environment other than they were developed for. Such transformed applications can be redeployed in different dynamic environments without the user making changes to the application. However, creating such autonomic software entities is a significant challenge not only because of the amount of code transformation required but also for the additional programming needed for such conversion. This thesis presents techniques for injecting autonomic primitives into existing user code by statically analyzing the code and partitioning it to manageable autonomic components. Experiments show that such code transformations are challenging, however they are worthwhile in order to provide transparent autonomic behavior. Software architecture to provide such autonomic computing support is presented and evaluated to determine its suitability for a fully fledged autonomic computing system. The presented architecture is a novel peer-to-peer distributed object-based management automation architecture.In this model, independent or communicating objects are treated as managed elements in the geographically distributed autonomic elements. The presented organization offers significant advantages over a traditional clientserver organization by permitting the incorporation of self-management properties into each of the distributed nodes and making each of the Autonomic Elements in the distributed environment identical in terms of managerial capacity. The unification of traditional client-server roles allows management functions to be distributed across different elements in the system, allowing autonomous behavior of the whole system. This thesis also presents a self regulating design of an autonomic element in a distributed object environment. Architectural choices have a profound effect on the capabilities of any autonomic system and affect many of the design decisions during its implementation. The goal of this architectural design is to provide an easy to program autonomic element which can be implemented in most domains with minor modifications. Profiling and experimentation with this design shows that it is lightweight and perform smoothly without causing extensive overhead.