A definition of cloud computing and related terms
Cloud computing is a way to serve applications over the Internet that provides automatic scaling of resources as demand for the application changes. A true cloud computing architecture will provide elastic provisioning. Once the cloud is designed and deployed, software developers and network managers do not need to call for changes in the configuration as the number of users increases. The cloud platform will add resources as needed.
Cloud computing is almost always metered. The owner of the cloud will pay the host provider for only the services used by the cloud. This saves the owner of the cloud from the cost of buying hardware and committing to fixed data center costs.
While it is a simple concept, the underlying cloud software is complex because it is provisions resources instantaneously. To take full advantage of cloud computing, applications need all of the following.
Infrastructure as a Service or IaaS
Network access, CPUs and storage all need to be managed by an IaaS that can increase resources when demand rises, and reduce their use when demand drops. Without an IaaS in the cloud computing architecture, a system engineer would need to re-configure the resources available to a particular application. A cloud computing installation will rely on an IaaS to configure these resources dynamically.
Example: If an online retailer has a sudden surge in customers, the IaaS would be able to meet the demand without slowing down, by providing the application with as many additional CPUs, storage devices and network access devices as are needed. When the customer demand subsides, the IaaS will make these same resources available to another application that may need computing power and network bandwidth.
Platform as a Service or PaaS
The operating system for a cloud computing environment is Platform as a Service. The PaaS manages the requests from software applications for computing resource, including the calculations, data queries, storage needs, additional network sessions and son on. In a conventional operating system environment, the computing resources are fixed and the OS is given exclusive control over their use.
The PaaS is a form of middleware. It sits between the application and the IaaS, calling up the additional resources as needed and freeing them for other applications when demand drops.
Software as a Service or SaaS
To fully exploit the cloud architecture, developers need an application development environment that is aware of the PaaS and takes full advantage. The SaaS development environment will provide a variety of predefined routines that can be used as building blocks for custom applications. For example, an SaaS will have query tools that speed up the development of a database intensive application; the developer can focus on the type of queries needed for the application and ignore the underlying plumbing of the cloud.
Not all SaaS development environments are designed for cloud computing platforms. The term SaaS has been used more loosely and is often associated with application services that are licensed for software services alone, completely apart from the computing resources being used.
An organization planning to deploy a cloud architecture for managing their applications would need to consider their choice of an SaaS. However, it is possible to use software as a service as a standalone choice.