“…There have been many definitions of Cloud Computing by different researchers since it can and does mean different things to different people. The National Institute of Standards and Technology (NIST) defined cloud computing informally as [21]: "a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction" while [22] defined cloud computing as "a paradigm which enables unlearned users as well as well-educated developers to create, develop, customize, migrate, deploy, and/or manage legacy, custom, and/or new applications over the Clouds' infrastructure by providing ease of use tools, programing languages, services and/or hardware resources on the basis of a predefined Service Level Agreement (SLA) with the possibility to reconfigure/change application features explicitly by users or implicitly/dynamically by Cloud providers such as scaling, deployment and/or resource allocation".…”