design - Multiple Instances for Applications-- One for each customer? -


I'm thinking of submitting my product as a service - delivered through online currently it There is a shrink-wrapped software that users download on their servers and run on their servers - like

In my new business model, I will offer two business modes, a traditional shrink-wrapped software that users install on their servers - and do all the maintenance, upgrade the content, another The software is in the form of a service (saas) type, where hosting is done on its server, and users are given a single URL for logon. Of course, each client account has a II will URL, such companya.mysoft.com, companyb.mysoft.com.

The question now is that I already have a current codebase, I want to make the minimum revision in my code so that it supports two ways of business. For SaaS mode, I want to make several examples for the application - one for each customer. So each customer will have their own database, their own applications. All the customer databases and apps are located on my server The good news is that I do not have to change my code at all. The worst thing is that there is a lot of redundancy, and maybe not scalable

What do you think about this multi-example-one-of-a-customer? Or will I have to change my code so that both methods can be supported (easy to maintain and upgrade)?

EDIT: The download version is IS , there is no way to avoid it.

Editing 2: My app is a PHP app.

A complete example will create a nightmare for your maintenance per customer because your customer base grows. But it can work to start you in the SaaS business. Keep in mind that success means that there will be some rearrangement of the application to better apply better application.

There are important details to consider:

Data isolation, thousands of individual databases contain too many overheads. One common concern is that customers will worry that their data Mixed with someone else and it is somehow less secure. I have worked for three different companies offering a mother-in-law model and data mix was never a customer concern. At the end of the day you will have all the figures and it will not be safe or secure, it is not really about how many DBS you use. Unless you can have more than a dozen subscribers, I recommend consolidating multiple clients in one DB and supporting many DBS, making the database very easy. I have worked with a number of pataiat data with a design, which is for 80k customers spread over a few dozen databases, and it was quite manageable. I have worked with a few terabyte data systems with DB for many DJ customers and it worked very well. Then one day we got a big deal in which 300 customers were added at one time and managing the database became very strange.

Branding, every customer is a different brand, or many customers will share a brand, or everyone is happy to use the brand of your companies Ideally you can use the brand resources (CSS) / Images / etc), or maybe both. If you only need a few brands, then it may be appropriate for the setup servers for each brand.

Versioning is "appropriate" to upgrade all customers at the same time. I highly recommend that you do everything in your power to keep all customers on the same release, many releases Supporting your support costs will increase significantly, generally it is easy that you have always "latest and greatest" aspect, but some customers are actually unfavorable to change. Customers who need to leave behind will need to be in different instances.

Optimization, this is not a problem like yours, but if you are currently shipping customized customers, then you will do this for different purposes for each construct, unless you Can not create a universal construction that works for everyone.


Comments