I am thinking about offering my product as a service-- delivered via online. Currently it's a shrink-wrapped software that users download to their servers and run on their servers-- like fogbugz.
In my new business model, I will offer two business mode, one is the traditional shrink-wrapped software that users install on their servers -- and do all the maintenance, upgrade stuff. Another is the Software as a Service(SaaS) type, where the hosting is done on my servers, and users are given a single URL to logon. Of course, each customer account will have a unique URL, such as companya.mysoft.com, companyb.mysoft.com.
The question now is since I already have an existing codebase, I want to do minimum modification to my code so that it supports two modes of business. For the SaaS mode, I want create multiple instances for the application-- one for each customer. So each customer will have their own databases, their own applications. All of the customer databases and apps are located on my server. The good thing is that I don't have to change my code at all. The bad thing is that there are a lot of redundancy, and may not be scalable.
What do you think about this multiple-instance-one-for-each-customer? Or I must modify my code so that both modes are supported ( easy to maintained and for upgrades)?
Edit: The download version is needed, there is no way to avoid this.
Edit 2: My App is a PHP app.