The cloud computing paradigm offers users rapid on demand access to computing resources such as CPU, RAM and storage, with minimal management overhead. Recent commercial cloud platforms, organize a shared resource pool for serving their users. Virtualization technologies help cloud providers pack their resources into different types of virtual machines (VMs), for allocation to cloud users. Under static provisioning, the cloud assembles its available resources into different types of VMs based on simple heuristics or historical VM demand patterns, before the auction starts. Under dynamic provisioning, the cloud conducts VM assembling in an online fashion upon receiving VM bundle bids, targeting maximum possible social welfare given the current bid profile .
System model for cloud environment is comprised of cloud producer, virtual machine repository, cloud brokers and cloud consumers as shown in Figure
Services are offered to users on rental basis to run their applications and pay- by-the-time basis for creating instances. Since these services are publicly available we often refer to them as public clouds. Parallel to this are the private clouds which are managed for solitary purpose. These clouds are dedicated to either inter organization or single consumer services. A quantity of hybrid clouds i.e. combination of private and public clouds are also available for consumers. Large numbers of cloud services are also available to share infrastructure between several organizations from specific community with common concerns for example security, compliance and jurisdiction. This can be managed internally or by a third party and hosted internally or externally . All these models are shown in Figure
Resource provisioning will vary from consumer to consumer as the requirements can vary. In general, consumer makes a request to the producer for a specific resource. On receiving consumer‘s request the producer will perform a search in his list of available resources. If the resource is available then the producer allocates resource based on the priority of the request for that particular resource. In case if the resource is not available, consumer has to send a request to another resource provider. For such cases the producer will encounter matchmaking problem i.e. for every request made by different consumers, the producer has to initiate the search mechanism. Consumer on the other end will send the request to multiple producers and will opt for the fastest available resource .