In this article, we will try to give some definitions to some frequently used but not so frequently explained basic concepts of cloud. In this article we will describe the basic service models of cloud computing, and their deployment methods.
The Cloud computing model leverages virtualization to deliver computing resources to users on-demand, and usually on a pay-per-use basis (depending on deployment method). It provides the properties of self-service, that means that each user is forced to control the resources that he needs, and elasticity enabling users to dynamically and flexibly adjust their resource consumption according to the current workload. These properties of the Cloud computing model allow one to avoid high upfront investments minimising the expenses in a computing infrastructure, thus reducing the time to market and facilitating a higher pace of innovation.
Basic Service Models
Cloud computing resources are delivered to users through three basic service models:
- Infrastructure as a Service (IaaS): computing resources are delivered in the form of Virtual Machines (VMs). A VM provides to the user a view of a dedicated server. The user is capable of managing the system within a VM and deploying the required software. Examples of IaaS are Amazon EC2 and Google Compute Engine.
- Platform as a Service (PaaS): the access to the resources is provided in the form of an Application Programming Interface (API) that is used for application development and deployment. In this model, the user does not have a direct access to the system resources, rather the resource allocation to applications is automatically managed by the platform. Examples of PaaS are Google App Engine and Microsoft Azure.
- Software as a Service (SaaS): application-level software services are provided to the users on a subscription basis over the Internet. Examples of SaaS are Salesforce.com and applications from the Amazon Web Services Marketplace.
Apart from the service models, Cloud computing services are distinguished according to their deployment models. There are three basic deployment models:
- Public Cloud: computing resources are provided publicly over the Internet based on a pay-per-use model.
- Private Cloud: the Cloud infrastructure is owned by an organization, and hosted and operated internally.
- Hybrid Cloud: computing resources are provided by a composition of a private and public Clouds.
Public Clouds, such as Amazon EC2, have initiated and driven the industrial adoption of the Cloud computing model. However, the software platforms utilized by public Cloud providers are usually proprietary disallowing their deployment on-premise. In other words, due to closed-source software, it is not possible to deploy the same software platform used, for example, by Amazon EC2 on a private computing infrastructure. Fortunately, there exist several open source Cloud platforms striving to address the issue, such as OpenStack, Eucalyptus, OpenNebula, and CloudStack. The mentioned projects basically allow anyone to not only deploy a private Cloud environment free of charge, but also contribute back to the development of the platform.