This is the working definition of cloud computing we are using for the purposes of this study. It is not intended as yet another definitive definition. Cloud computing is an on-demand service model for IT provision, often based on virtualization and distributed computing technologies. Cloud computing architectures have:
- highly abstracted resources
- near instant scalability and flexibility
- near instantaneous provisioning
- shared resources (hardware, database, memory, etc)
- ‘service on demand’, usually with a ‘pay as you go’ billing system
- programmatic management (e.g., through WS API).
There are three categories of cloud computing:
1. Software as a service (SaaS): is software offered by a third party provider, available on demand, usually via the Internet configurable remotely. Examples include online word processing and spreadsheet tools, CRM services and web content delivery services (Salesforce CRM, Google Docs, etc).
2. Platform as a service (PaaS): allows customers to develop new applications using APIs deployed and configurable remotely. The platforms offered include development tools, configuration management, and deployment platforms. Examples are Microsoft Azure, Force and Google App engine.
3. Infrastructure as service (IaaS): provides virtual machines and other abstracted hardware and operating systems which may be controlled through a service API. Examples include Amazon EC2 and S3, Terremark Enterprise Cloud, Windows Live Skydrive and Rackspace Cloud.
Clouds may also be divided into:
- public: available publicly – any organisation may subscribe
- private: services built according to cloud computing principles, but accessible only within a private network
- partner: cloud services offered by a provider to a limited and well-defined number of parties.
In general, the commodity, cost, liability and assurance of clouds vary according to the following figure:
FIGURE 1: FEATURES OF PUBLIC, PARTNER AND PRIVATE CLOUDS