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