SaaS, PaaS, Cloud Computing, On-Demand - what do they all mean?
Posted by Paul Giurata
Over the past few months,there has been a lot of news stories and articles about hosted services over the internet. The various terms that describes these offerings - SaaS, PaaS, Cloud Computing, On-Demand - are often used interchangeably and the meanings can be confusing.So I thought it might be useful to briefly describe each term from my own perspective of enterprise software application strategy and design.
Cloud Computing
Cloud computing refers to the virtualization of the data center (i.e. compute, storage and network). It is relatively generic big-picture concept, and in some ways, more a marketing term than a defined set of attributes (who wouldn't want their application "in the clouds").
The real appeal to cloud computing is that it is massively scalable using this virtual infrastructure, available pay-as-you-go. Need more server resources because of an exceptionally high demand? Cloud computing delivers this transparently without you having to invest in any more hardware or even know about a specific physical machine.
SaaS (Software-as-a-Service)
SaaS refers to internet-based applications that are available on an as-needed basis. It falls under the cloud computing umbrella of massively scalable, and available anytime and anywhere over the internet. Its special defining characteristics are:
- SaaS are applications delivered over the internet on a subscription or pay-for-use basis.
- SaaS is delivered as a multi-tenant * solution - meaning many customers access one copy of the application installed on multiple servers.
*Multi-tenancy reduces operational complexity and cost in managing the software to deliver the service. For example, updates can be easily rolled out to all customers by updating a single instance instead of many. Multi-tenancy is transparent to the SaaS customer; they just see no upfront investment in servers or software licensing. On the provider side, there is just one application to maintain so operations costs will be lower due to economies of scale in hardware. Support costs can also be reduced through the use of automation and self-service in the application design.
PaaS (Platform-as-a-Service)
PaaS is an integrated platform available over the internet, to build, test, and deploy custom applications. It is delivered on-demand typically on a subscription basis. Depending on the vendor, it can range from a programming environment with a RIA front end (think MS Visual Studio) to a solution intended to mash-up SaaS's. A PaaS may include online development tools, databases, ready-made components (e.g. single log-in widgets), project management tools, mashup-able services and storage.
PaaS can be used to deliver custom applications (client-server style but where the enterprise does not actually invest in the IT staff or infrastructure to run the servers) or as multi-tenant SaaS.
PaaS can also be used as a way to integrate SaaS applications with other SaaS applications and with applications and data behind the corporate firewall.
But does any of this really matter?
Yes - this all represents a fundamental paradigm shift with the enterprise moving away from developing complex, expensive and risky on-premise applications, and instead moving to more virtualized and accessible anywhere/anytime solutions. The real question at the end of the day is well the solution can provide the needed features and functionality, and how this can be delivered with an optimized total cost of ownership.