Cloud computing has changed the way people think of using resources. Especially, the IaaS (Infrastructure as a Service) allows users to make use of unlimited resources in pay per use fashion. Virtualization is the technology based on which the cloud service providers are able to provide or share computational resources and data centers to users. Though this approach is practical, it throws certain challenges in terms of designing and development of IaaS middleware. One such challenge is the need for deploying thousands of VM instances to meet the requirements of growing number of users.