One challenge almost every ISV faces today is how to quickly get “cloudy” with least investment. From business side, SaaS is a new model for most ISVs, meaning it’s still hard to project revenue. Even worse, the SaaS service may cut into the license revenue of existing product. Technically, it may require a full re-design and re-implementation of product for maximum multi-tenancy. Putting together, it’s a big challenge for decision makers.
But it doesn’t have to be difficult with a right strategy. This post explains how to support SaaS without re-designing existing applications, which means a big saving for the ISVs.Functionality wise, existing applications should have all the features already. The only element missing is the multi-tenancy including functions like user management, billing, etc. As I explained before about the software stack, the multi-tenancy can be achieved at three different levels:
Lost VMs or Containers? Too Many Consoles? Too Slow GUI? Time to learn how to "Google" and manage your VMware and clouds in a fast and secure HTML5 App.
1. Application level. This is what Salesforce does today. It maximizes the investment on the underlying infrastructure and OS/middleware investment by sharing all of them among all tenants.
2. Middleware level. You can have multiple application instances on the same middleware platform.
3. OS/Machine level. Each virtual machine has full software stack and totally isolated from each other. Different virtual machines could have different versions of applications that can evolve independently, which is impossible with the first approach.
In general, the lower you go for multi-tenancy the better isolation will be, the less application change you will need; at the same time, the more redundancy on software license cost and management cost. As the lowest multi-tenancy, the virtual machine level requires no design/code change. It’s the quickest way to enable SaaS service for ISVs.
Having said that, you do need to invest on the hardware infrastructure and management environment for provisioning, monitoring, billing, etc. For the system provisioning, you can sign on an IaaS provider which offers new virtual machines. For other parts, you may find something from the IaaS provider as well, or develop your own.