cilities, servers, switches, routers, hardware middleboxes, and power and cooling support. The Hardware- as-a-Service (HaaS) model means buying IT hardware or portions of data centers as a pay-as-you-go subscription service. Similar to other cloud computing layers, it shares the benefit of dynamically scaling up and down as the demand changes. The hardware is typically in the form of data centers, which consist of thousands of servers in racks. The HaaS provider needs to handle various hard- ware management issues such as configurations, fault tolerance, backup powers, and regular maintenance. The infrastructure layer is also known as the virtualization layer. The Infrastructure-as-a-Service (IaaS) provides computing resources as a service. Virtualization is an elegant and transparent way to enable time sharing and resource sharing on the common hardware. It allows customers to pay as they grow. By decoupling the hardware from the upper layer, it also helps make innovation faster and reduce the go-to-market time. The platform layer includes the operating system and application frameworks (e.g., Java framework) and other system components (e.g., data base and file system). Many popular cloud services operate at this level. For example, Microsoft Azure [14], Google AppEngine [15], and Amazon S3 [16] offer APIs for implementing typical web services. The Software-as-a-Service (SaaS) model means that the provider offers software on the common platform as well as the under- lying database. Many traditional software companies (e.g., IBM, Microsoft, and Oracle) and the new players (e.g., Salesforce) are moving into this category. Cloud applications can automatically scale as the demand changes. 2.1 Cloud Computing The layering architecture of cloud computing provides more modular design compared to traditional compute model. Resources are drawn whenever is needed on demand to fulfill a specific task. Unneeded resources can be relinquished, and the allocated resource is revoked after the job is done. Depending on the busi