We have a number of clients, whose systems share some functionality, but also have quite a degree of diversity. The number of clients is growing - always a healthy thing! - and the diversity between their businesses is also increasing.
At present there is a single ASP.Net (Web Forms) Web Site (as opposed to web project), which has sub-folders for each tenant, with that tenant's non-standard pages. There is a separate model project, which deals with database access and business logic.
Which is preferable - and most importantly, why - between having (a) 1 database per client, with only the features associated with that client; or (b) a single database shared by all clients, where only a subset of tables are used by any one client.
The main concerns within the business are over:
- maintenance of multiple assets - backups, version control and the like
- promoting re-use as much as possible
How would you ensure these concerns are addressed, which solution is preferable, and why? (I have been also compiling responses to similar questions)
Edit: here's the highlights from my research from other sources:
Should I use one database per application or share a single database amongst multiple applications
Splitting up a single project into libraries
Multi-tenancy - single database vs multiple database
http://msdn.microsoft.com/en-us/library/aa479086.aspx
http://cloudcomputing.sys-con.com/node/1610582
http://ask.sqlservercentral.com/questions/3615/one-database-or-multiple.html
http://ayende.com/blog/3497/multi-tenancy-the-physical-data-model
http://www.codeproject.com/Articles/51334/Multi-Tenants-Database-Architecture
http://discuss.joelonsoftware.com/default.asp?design.4.319460.16
http://stackoverflow.com/questions/3479297/multiple-application-using-one-database
http://stackoverflow.com/questions/1676552/single-or-multiple-databases
http://mikehadlow.blogspot.co.uk/2008/11/multi-tenancy-part-1-strategy.html
http://mikehadlow.blogspot.co.uk/2008/11/multi-tenancy-part-2-components-and.html
http://www.sqlservercentral.com/Forums/Topic893107-373-1.aspx#bm1047297