Software as a Service (aka Software + Services, or SaaS for short) is pretty much the hype du jour as of late. Not without reason. From an architecture perspective, SaaS provides some interesting considerations one of which is multi-tenancy. The most common analogy for multi-tenancy is an apartment complex: multiple autonomous apartments, each isolated with structural barriers, containing distinct décor and possessions of the tenant, and of course each being serviced by common infrastructure services that are metered and possibly configured separately. A rather simple, yet palatable analogy - akin to the analogy of technical architecture to building architecture; however, with SaaS, the 'building to software' comparison really shakes out because unlike a physical and static apartment building, a SaaS structure must scale to a theoretically infinite number of tenants while maintaining high availability of services and tenant access. So how do you do this? There are many different aspects of software that would need to be designed properly for multi-tenancy: data, security and identity, state, transactions, et cetera. The key to multi-tenancy is isolation and what better model for isolation can be found besides virtualization?
I am really excited about Microsoft's acquisition of Softricity. It is one of the most brilliant acquisitions Microsoft could have made because the amazing technology can be applied in countless ways, one being SaaS. For those not familiar with Application Virtualization, it is essentially the ability for an instance of an application to be executed within its own, isolated runtime container having its own configuration, data, security, etc. without an underlying dependency on the host's configuration, data, or security. Essentially it's a sandbox for an application that can leverage host services as needed (dynamically). This is somewhat different from the concept today around process boundaries; consider the notion of process boundaries but move it higher up the logical stack. Processes are much more coupled to the underlying system and its configuration than an isolated, virtualized application. In terms of multi-tenancy and the ability to scale and be available, the virtualization proposition is a fascinating one.
A rather powerful concept. Essentially, this is the notion of utility computing - where shared infrastructure resources can be dynamically allocated and leveraged by need and policy-mandated priority. I am not saying that application virtualization is the end-all, be-all for SaaS or that it represents a turn-key solution for SaaS… What I am suggesting is that given the trend and technology for virtualization, I would not be surprised if it played a huge part in the rapid development strategies for creating and supporting SaaS. It would be interesting to see if and how Microsoft incorporates the Softricity technology into its platform for SaaS and the toolsets for rapid development and management.