Cloud computing has become a broad term to describe a wide variety of services and products. From infrastructure services to data storage services, and even the photo storage on your phone are all referred to as ‘clouds’. So, what really is a cloud, and how do we categorize different types of clouds?
Defining a ‘cloud’
Cloud computing is a service that provides rapid and configurable computing resources to be assigned and released with minimal effort. This follows the NIST (National Institute of Standards and Technology) definition of cloud. While the full description of the cloud is fairly long, here is an excerpt from the NIST description:
`Cloud computing` is 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.
This breaks down to mean that any user can provision resources rapidly and with ease. These resources are part of a larger shared pool and can be released back to the pool just as quickly and easily.
There are a couple of other items in the NIST definition that are considered required to define a cloud:
- Quick provisioning: Resources can be scaled to meet demand rapidly and without long lead times typically categorized by IT scale-outs
- Easy Access: Users should be able to access the service easily and via standard means (laptop, phone, etc)
- Self-service: The service should allow end-users to provision new resources or remove existing ones without the need to interact with another human
- Metered billing: The service should only charge for resources as they are used. Think utility-style billing such as for your electric or water bill.
Almost all cloud solutions will fit the items we have defined above. There are cases where one or more of these items is missing but the service is generally still considered a cloud. However, the variety of products and services that fit the above definition is vast so we can further define these services into a few categories, Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS). Let’s explore the definition and differences between these different cloud categories.
Software as a Service
Software as a Service or SaaS describes a subset of cloud environments in which an application is presented over the internet as an on-demand, pay-as-you-go service. This type of service has become commonplace these days even if you had not previously realized. Email, for instance, has become one of the most common examples of a SaaS system.
SaaS does not necessarily require these, but the following is a list of common features of a SaaS system:
- Web access to a commercial software or software suite
- Software served from a centralized infrastructure
- Software is delivered in a ‘one-to-many’ model from this infrastructure
- Upgrades, patches, and maintenance of the software and infrastructure is not required to be performed by the user.
SaaS is extremely useful for standard solutions such as email, and solutions which require high availability such as a mobile sales application. SaaS can be used for more short term solutions, such as the deployment of project management software for a development project.
SaaS is not ideal for all applications or software however. Generally SaaS is run from a centralized infrastructure which processes all requests for the application being presented. As such, high compute intensity and real-time data processing applications may bog down or not work properly when utilized as a SaaS.
Platform as a Service
Platform as a service (PaaS) is a subset of the cloud where instead of presenting an application as SaaS does, instead PaaS presents an environment to develop, test, and host a custom application from. Generally, this also means the cost of any development or hosting software is taken care of by the provider, meaning you simply pay for the PaaS and start developing.
While not required, the following is a list of common features of a PaaS:
- A full development suite. This includes ways to test, deploy, host, and maintain your custom application.
- Multitenant architecture. This allows multiple developers to be working on the same code base at the same time.
- Built-in scalable architecture for any deployed applications. This often also includes redundant features like load-balancing and failover systems.
- UI creation tools. These assist the creation and testing of different UI possibilities for the application.
- Project management software. While not always included, some PaaS services come packaged with version management or collaboration management software.
PaaS strikes a bit of a middle ground between SaaS and IaaS. Where SaaS allows the consumption of an application over the internet, PaaS may contain one or more SaaS’s under its umbrella in order to achieve its goal of presenting a development environment over the internet. Similarly, PaaS may contain items that are more accurately described as IaaS on their own, but contribute to creating the desired development environment a PaaS is achieving.
Infrastructure as a Service
Infrastructure as a service presents computing resources directly as opposed to packaging them with existing software (SaaS) or with a development environment (PaaS). This can encompass more than just servers, and may also include network, storage, or other resources. As an example, this allows an end-user to provision and have a server in minutes instead of finding and purchasing a server, finding and procuring data center space, and then waiting for the shipping and installation of the device in the data center.
IaaS almost always can be categorized by the following:
- Rapid resource allocation provided as a service
- Generally multitenant environment
- Rapid and dynamic scaling options
IaaS is the ‘lowest’ form of cloud in that it gets as close to the base hardware as possible. This also makes it the most flexible form of cloud in that you can basically do anything you could do on a regular hardware deploy. However, this also means less convenience than SaaS and PaaS provide.
In practice, most cloud providers provide a mix of products and services that encompass multiple concepts we have covered here. Additionally, new products in this sector are continually blurring the lines between these three main concepts.
Cloud computing as we have seen now, is a very broad term in what it can encompass. Users should be aware of at least the basic concepts that cloud computing can break down into. This lets users make informed choices on what products and services they should pursue for their application.