I. Introduction
Cloud Computing [1], [2] is a service model where user devices are able to connect to cloud servers. The servers have a significantly wide pool of resources (such as communication bandwidth, energy reserves/sources, processors, computing capability, computer memory), a lot more than the user devices. Thus, the client devices can use those resources to execute more demanding jobs and tasks whose requirements go beyond what can be done locally by sending these tasks to the servers. The cloud denomination comes from the offloading to remote machines and the transparency of the service. Forbes [3] predicts that the cloud computing market will reach US$411 billions by 2020, and many big companies already have established cloud services, such as Google [4], Amazon [5], and Microsoft [6].