The ever increasing popularity of cloud computing is exponentially growing with the promise of flexible and cost effective on demand scalability. Many of the leading companies are upgrading their infrastructure to harness these advantages.
Among the different cloud approaches the Infrastructure as a Service (IaaS) service model seems to provide the largest freedom for elastic scalability compared to any other type of clouds, as IaaS consumers have the capability to provision fundamental computing resources, where they can also deploy and run operating systems or any other arbitrary applications. However, such freedom raises many complex questions for managing an IaaS platform that requires novel solutions.
One of the tasks emerging in such clouds is, to ensure the optimal number of allocated virtual machines considering the - ever changing – consumer demands. Additionally, it is also important to manage the risks arising from the failures of the used infrastructure by eliminating these faulty states and masking the effects of faults. Such problems are typically solved by reconfiguring the infrastructure, and while the execution of reconfigurations is a common practice, the efficient automated planning of reconfigurations, which (i) complies with the conflicting requirements, and (ii) takes into account the quality characteristics of the reconfiguration, is not yet resolved.
Therefore the goal of this thesis is to apply design space exploration - an instrument of model driven software development - to such reconfiguration planning problems, and to develop a complete control module for IaaS clouds with monitoring, planning and execution.
First, I made a metamodel to describe the configuration and the requirements against a private cloud infrastructure. Then I implemented the codes in declarative and Java languages needed for the automatic reconfiguration planning. Thereafter I prepared the still missing monitoring, analyzing and executor Java implementations, and performed the integration of the so formed system components. Finally I tested the system function with making some example runs.