The concept of cloud services development encompasses several different types of development. Let’s look at the different ways a company can use cloud computing to develop its own business applications.

Software as a Service

Software as a service, or SaaS, is probably the most common type of cloud service development. With SaaS, a single application is delivered to thousands of users from the vendor’s servers. Customers don’t pay for owning the software; rather, they pay for using it. Users access an application via an API accessible over the web.

Each organization served by the vendor is called a tenant, and this type of arrangement is called a multitenant architecture. The vendor’s servers are virtually partitioned so that each organization works with a customized virtual application instance.

For customers, SaaS requires no upfront investment in servers or software licensing. For the application developer, there is only one application to maintain for multiple clients. Many different types of companies are developing applications using the SaaS model. Perhaps the best-known SaaS applications are those offered by Google to its consumer base.

Platform as a Service

In this variation of SaaS, the development environment is offered as a service. The developer uses the “building blocks” of the vendor’s development environment to create his own custom application. It’s kind of like creating an application using Legos; building the app is made easier by use of these predefined blocks of code, even if the  resulting app is somewhat constrained by the types  of code blocks available.

Web Services

A web service is an application that operates over a network—typically, over the Internet. Most typically, a web service is an API that can be accessed over the Internet.  The service is then executed on a remote system that hosts the requested services.

This type of web API lets developers exploit shared functionality over the Internet,  rather than deliver their own full-blown applications. The result is a customized web-based application where a large hunk of that application is delivered by a third party,  thus easing development and bandwidth demands for the custom program.

A good example of web services are the “mashups” created by users of the Google Maps API. With these custom apps, the data that feeds the map is provided by the developer, where the engine that creates the map itself is provided by Google. The developer doesn’t have to code or serve a map application; all he has to do is hook into Google’s web API.

As you might suspect, the advantages of web services include faster (and lower-cost) application development, leaner applications, and reduced storage and bandwidth   demands. In essence, web services keep developers from having to reinvent the wheel every time they develop a new application. By reusing code from the web services  provider, they get a jump-start on the development of their own applications.

On-Demand Computing

As the name implies, on-demand computing packages computer resources (processing, storage, and so forth) as a metered service similar to that of a public utility. In this model, customers pay for as much or as little processing and storage as they need. Companies that have large demand peaks followed by much lower normal usage periods particularly benefit from utility computing.

The company pays more for their peak usage, of course, but their bills rapidly decline when the peak ends and normal usage patterns resume. Clients of on-demand  computing services essentially use these services as offsite virtual servers. Instead of investing in their own physical infrastructure, a company operates on a pay-as- you-go plan with a cloud services provider. On-demand computing itself is not a new concept, but has acquired new life thanks to cloud computing. In previous years,  on-demand computing was provided from a single server via some sort of time-sharing arrangement. Today, the service is based on large grids of computers operating as a single cloud.