Cloud computing is becoming one of the the key enabling technologies for a range of applications used every day by hundreds of millions of people. Cloud computing emerged from the industry as an economic way that allows better management, higher utilization and reduced operating costs for datacenters while providing on demand resource provisioning for a set of services that share the datacenter resources. Data centers are enormous in size and complexity. In order to fully realize the cloud computing model, efficient Cloud management softwares need to be deigned and built. These management softwares need to deal with the datacenter size and complexity.
This thesis studies automated cloud elasticity, one of the main and crucial datacenter management issues managed by the Cloud management softwares. Elasticity can be defined as the ability of the cloud infrastructure to change the amount of resources allocated to an application running on the cloud according to the application's demand rapidly. This work introduces scalable algorithms, techniques and tools that a Cloud provider can use to automate dynamic elastic provisioning allowing the provider to better manage the datacenter resources.