I. Introduction
Cloud computing is one of the popular and most talked about topics at the moment. It portrays the future of the information age. Cloud computing is an Internet-based computing model in which applications and data are not stored locally in a person's computer, but rather in remote servers and can be accessed through the Internet. Although the term “Cloud Computing” seems relatively new, the concept behind it is not new at all. It began in the 1950s when large corporations, government organizations and schools installed large-scale mainframe computers, allowing multiple users to physically access the computer from multiple terminals, in addition to shared central processing unit time [1]. Ever since then, cloud computing has evolved through a number of phases. Today, cloud computing provides a new way to design and manage computing resources. One has to simply create an account with a cloud service provider (CSP) such as Microsoft's Windows Azure or Amazon Web Services, in order to start developing and deploying application systems into the cloud [2]. Cloud service providers offer network services, infrastructure and applications in the cloud to both companies and individuals [3]. The main objective of cloud computing is to improve the utilization of distributed resources and join them to accomplish higher throughput, and be able to solve large-scale computation problems. Cloud computing deals with scalability, interoperability, virtualization, delivery models and quality of service [4]. Moreover, it provides a set of great advantages like mobility, cost efficiency, storage, backup and disaster recovery. These advantages are the reason as to why an immense number of people are migrating to IT solutions that include cloud computing. Recent statistics show that by 2016, the global revenue generated from public cloud computing services, is expected to grow from 10.27 billion U.S. dollars in 2012 to more than 200 billion [5].