  Cloud computing is a model for enabling on-demand network access to a shared
pool of computing resources, that can be dynamically allocated and released
with minimal effort. However, this task can be complex in highly dynamic
environments with various resources to allocate for an increasing number of
different users requirements. In this work, we propose a Cloud architecture
based on a multi-agent system exhibiting a self-adaptive behavior to address
the dynamic resource allocation. This self-adaptive system follows a MAPE-K
approach to reason and act, according to QoS, Cloud service information, and
propagated run-time information, to detect QoS degradation and make better
resource allocation decisions. We validate our proposed Cloud architecture by
simulation. Results show that it can properly allocate resources to reduce
energy consumption, while satisfying the users demanded QoS.
