Cloud Computing Models
Cloud computing refers to offering computing services from servers in a network. Typically cloud services are available on demand, can be accessed over a network, share resources between multiple applications and tenants, scale elastically based on dynamic computing needs, and provide measured service.
Cloud computing and services are typically based on the ownership of the infrastructure (and to whom services are offered) and based on the general architecture visible to users (e.g., are generic computing instances provided, are they providing a platform for applications, or are they providing complete application software solutions as a service).
Based on Infrastructure Ownership
Cloud most often means a public cloud. Most well-known and popular cloud services are public clouds. A public cloud basically offers services to any number of customers (the general public) and is accessible from the public information (subject to security restrictions - see cloud security.
Public clouds are offered by a plethora of cloud service provides.
A private cloud uses the infrastructure to provide services only to a single customer. A private cloud is close related to virtualization, but provides many of the benefits of public clouds, such as elastic scaling and resource sharing.
Many large enterprises run sizable private clouds using various technologies.
Virtual Private Cloud
A virtual private cloud (VPC) is an isolated set of servers within a public cloud. Typically, the VPC would have a VPN connection to the enterprise network, and might logically seem to be part of the internal enterprise network.
A community cloud extends the private cloud to incorporate multiple customers within a defined community (e.g., within an industry, such as health care or a cloud service serving diverse agencies and departments of the same government). This model is often preferred when the data is regulated and sensitive, and a degree of trust is required between the customers to accept the risks of cloud computing.
A hybrid cloud has characteristics of both a public cloud and a private cloud. For example, some resources could be offered to the public, while some are reserved for internal use.
Based on Service Model, Architecture, and Flexibility
Another way to classify cloud services is by their service model and architecture.
In PaaS, the cloud service provides a computing platform, typically tied to a particular set of programming languages, tools, and applications. Generic operating system access (command line) is typically not permitted and the same virtual machines may be shared by multiple users. Typical examples include Google App Engine and many web hosting services.
In SaaS, an application running in the cloud is offered as a service. The cloud service provider handles all infrastructure, upgrades, and provides the application software. The customer basically just gets to use the software. The software may run in a customer-specific virtual machine, or multiple software instances may run in the same virtual machine, or the same application server instance could even serve multiple customers.
Software offered as a service is generally offered on a subscription basis - for example, the customer pays a monthly fee per user to use the software. However, not all software offered on a subscription basis is SaaS - these days it is increasingly common to offer even software run on customer permises as a typically annual subscription, as it provides lower initial costs for customers and higher and smoother run-rate income for vendors and their investors.
Cloud vs. Virtualization
Virtualization is a technology allows many logical computers (virtual machines) to run on the same physical hardware. It is the underlying technology in cloud services. However, cloud computing has certain characteristics, such as elastic scalability, that are not always offered by virtualization alone.