The complexity of Information Technology (IT) systems has been steadily incre- ing in the past decades. In October 2001, IBM released the “Autonomic Computing Manifesto” observing that current applications have reached the size of millions of lines of code, while physical infrastructures include thousands of heterogeneous servers requiring skilled IT professionals to install, con?gure, tune, and maintain. System complexity has been recognized as the main obstacle to the further advan- ment of IT technology. The basic idea of Autonomic Computing is to develop IT systems that are able to manage themselves, as the human autonomic nervous system governs basic body functions such as heart rate or body temperature, thus freeing the conscious brain— IT administrators—from the burden of dealing with low-level vital functions. Autonomic Computing systems can be implemented by introducing autonomic controllers which continuously monitor, analyze, plan, and execute (the famous MAPE cycle) recon?guration actions on the system components. Monitoring acti- ties are deployed to measure the workload and performance metrics of each running component so as to identify system faults. The goal of the analysis activities is to determine the status of components from the monitoring data, and to forecast - ture conditions based on historical observations. Finally, plan and execute activities aim at deciding and actuating the next system con?guration, for example, deciding whether to accept or reject new requests, determining the best application to servers assignment, in order to the achieve the self-optimization goals.