Defining the Cloud
There’s no consent among experts on what “the Cloud” actually is. Nonetheless, all the definitions include at least a subset of the following aspects:
- The cloud is a collection of virtualized resources.
- Consumers are billed on a pay-as-you-go basis (also known as metered billing). No upfront investment is required.
- Automated management of resources – no human intervention is required for resource provisioning.
- Immediate scalability (also known as elasticity).
- Especially with regards to web applications, load balancing is required by some definitions.
- The cloud is publicly accessible.
Depending on the usage scenario, these characteristics may result in benefits for the consumer.
Even though, there is no universally accepted definition, the one given by Luis M. Vaquero and his co-authors captures the most relevant aspects:
Clouds are a large pool of easily usable and accessible virtualized resources (such as hardware, development platforms and/or services). These resources can be dynamically reconfigured to adjust to a variable load (scale), allowing also for an optimum resource utilization. This pool of resources is typically exploited by a pay-per-user model in which guarantees are offered by the Infrastructure Provider by means of customized SLAs.
Infrastructure as a Service
Infrastructure as a Service (IaaS) is the simplest form of cloud offerings. The cloud vendor provides the consumer with low-level resources (such as computation, storage and connectivity).
IaaS providers don’t impose any limits in terms of possible usage scenarios. Therefore, they are the most flexible type of cloud-based service and have widest range of potential consumers. Applications as diverse as SaaS offerings, PaaS offerings, and scientific simulations have been successfully implemented in IaaS environments.
As pointed out before, IaaS is all about low-level resources. This approach is very flexible, but is not optimal if the consumer has predictable requirements.
Examples for IaaS providers include AWS and Rackspace.
Platform as a Service
Platform as a Service (PaaS) is an attempt to improve IaaS, by specializing in a small number of development environments. This approach results in more developer productivity, because the developer is delivered with an integrated hardware/software solution. The installation and configuration of the operating system and the application servers are already taken care of by the cloud vendor.
On the flip side, this approach is imposing more limits on the developers. If a given problem cannot be solved with one of the supported development environments, the consumer has no choice, but to look for an alternative PaaS vendor (or switch to IaaS altogether).
Some PaaS providers built their products on top of existing IaaS products (for instance Heroku, which is based on AWS). Others operate their own infrastructure – Google App Engine is an excellent example for that.
PaaS offerings are designed to ease development by eliminating a whole class of administrative problems. While the loss in flexibility may be an obstacle for some applications, the potential savings can be significant.
Further specialization is needed to cater to end-users.
Software as a Service
Software as a Service (SaaS) is the only type of cloud offerings directly aimed at end-users. These vendors offer highly specialized software solutions to solve narrow problems.
SaaS is basically a term that means “software in the cloud”. Although not all SaaS systems are based on IaaS or PaaS offerings, most of them are.
The business side of SaaS is usually organized in terms of subscriptions. Subscription means, that the consumer doesn’t have to buy an expensive license. Instead he pays a small monthly (or yearly) fee for the ability to use the service. Therefore, SaaS consumers are often referred to as subscribers.
Only standardized products are suited for delivery through the SaaS model. Products that require a high degree of individualization for each consumer are incompatible with the SaaS model.
Examples for SaaS providers include Dropbox and Basecamp.