According to the Infrastructure-as-a-Service conceptualization of cloud computing, Infrastructure Providers offer utility-like pay-as-you-go access to computing resources (e.g., data processing, networks, and storage) to Service Providers, who use those resources to host applications for the benefit of end users. The quantity of resources available to Infrastructure Providers at any given moment is limited, as is the quantity of resources allocated to the applications of each Service Provider.
This thesis examines the management of cloud resource scarcity from the perspectives of both Infrastructure and Service Providers, with the aim of finding ways to ensure that the end user experience is minimally affected.
We consider three main strategies for managing cloud resource scarcity. First, we explore ways to efficiently construct collaborative federations of autonomous and independent Infrastructure Providers that allow local resource scarcity to be masked by extension using capacity from remote sites. Second, we consider how scheduling both within a cloud site and across a federation can be made aware of restrictions imposed by Service Providers for, e.g., performance or legal reasons. Third, we suggest ways of making applications conscious of resource availability so that they can apply quality elasticity under resource constraints.
The thesis is the culmination of 11 years of work within academia and industry. Based on the unique perspective granted by this long experience, the introductory chapters present a historical view of each subtopic mentioned above. Specifically, they discuss how cloud computing has evolved in conjunction with ways of developing applications to the symbiotic benefit of both, leading to the emergence of cloud-native software that allows Infrastructure Providers to use their infrastructure more efficiently and offer it more affordably while simultaneously granting Service Providers improved availability and performance in cloud-based environments.